generative modeling for Rhino
Ok this is what I would like to do:
Is there a way to determine which members of a space frame are compressed, and then replace those compressed one with new ones? For example all the members of the space frame structure have tube cross sections. And I would like to determine which one of them are under the compressional load, and then increase the size of their cross sectional area.
Is this possible to do in grasshopper and Rhino tools, addons and scripts?
It seems like you might be able to do this by comparing lengths of members after applying a deformation to the original lengths. How complex is the space frame?
thank you for the answer, both of you.
I would try to do some testings both on simple space frames, and a complex ones (let's say 100x100m span, with double layer tetrahedrons)
So this is possible?
But after identifying the compressional members of this space frame, I need to write down a script in Grasshopper, which will enable changing the shape of the compressional members cross section?
any help on this please.
Ok I tried doing this in Kangaroo, and it worked.
But, I am looking for a continuous-automatic way of doing this. Once again: I would like to determine which my space frame members are under the compressional load, and then increase the size of their cross sectional area - and all of this within the Rhinoceros and it's scripts and plug-ins (Grasshopper, what ever...). So I do not want to edit each space frame member separately, by knowing which one of them is under the compression. I want Rhino (or Kangaroo or whatever) to automatically recognize which ones are under compression, and then automatically change all of them.
Is this possible?
I am also interested in your method. But I did not understood it. Can your method be applied in this automatic process?
Thank you for the replies and advices
Thank you for the reply Jon. I tried searching for "Karumba" on Google but I did not find it.
Well I guess, I would need a couple of load cases, but having one will also do the job, at least for now.
Sorry, I should have written Karamba
I'm biased, but for sure I would use an external solver if it warrants multiple load cases. If I have a moment I might try and show an example of this.
What is the deadline you are working to for this?
There's no need to edit each member separately.
See in the attached file - members are automatically sized according to stresses.
This is a simple case where all the members are equal mass, length and stiffness, but could easily be extended beyond that.
In this definition the timer is not necessary - it is calculating 1000 iterations at one go (which should be plenty for it to find equilibrium). You could also use it with the timer, but in that case I'd recommend disabling the pipes for the simulation stage and turning them on after you stop the timer, because they are heavier to draw.
One complication to consider (that would also be the case with any of the other approaches suggested) is that when you change member sizes, you change the stiffnesses and distribution of self weight of the structure, which is obviously going to change its behaviour.
To really take this into account the changing member sizing would need to be happening in the same iterative process as the analysis.
With a few changes this would be possible all within kangaroo, and might be an interesting direction to explore.
Yet another option would be to combine the structural solver with Galapagos - though at the moment that would involve making a separate slider for the properties of each member.
If you had a physical model and each member had a strain gage on it you could feed the output to an Arduino and get a list of data that you could then work with in Grasshopper. If you can figure out a way to mimic the strains directly in Grasshopper then you wouldn't need a physical model. The problem then becomes one of generating some strains and comparing strained lengths with the original un-strained lengths to determine compression, tension or neutral members. Of course the problem is compounded by the fact that you need to know an accurate value of the compression or tension in order to know by how much to change the member section. I don't know how Kangaroo works but the idea of replacing every member with a spring sounded like a good approach. If that didn't work I think you probably ultimately will need an external analysis solver as John suggests below.
Hm thank you for all the advices and help. It seems I did not told you the whole story, or I just missed some parts.
The problem I want to solve, can be done with an external analysis, like you said, and I already did this a couple of times before. I created a space frame structure in Rhino, then exported it at .dxf file. Then imported it into some structural analysis and design FEM application (I am using german RFEM or RSTAB). Then do the structural analysis in RFEM, and then the design. In most cases the tensile cross sections that I used in Rhino, suits fine in RFEM design, but the compressional ones need to be changed (due to appearance of buckling). Then when I do the design of these members, I go back to Rhino, and edit each of the space frame compressional members cross sections separately according to the RFEM design.
This takes a lot of my time, so that is why I wanted to ask, if there is a way to do this automatically within the Rhino and it/s scripts.
So lets say that for now, I will be very satisfied if I could achieve only this:I want Rhino (and it's scripts or plug-ins) to automatically recognize which ones of my space frame members (loaded by a few load cases) are under compression, and then automatically change all of those compressional members into the new ones with the same (the same for all of those compressional ones) cross sectional area (no matter what is the value of the compressional force in them).