Grasshopper

algorithmic modeling for Rhino

hello everybody

i'm trying to model a tensile structure like the one in the jpeg

i'm using kangaroo but i'm not happy with the "soap bubble" result.

i red this http://www.grasshopper3d.com/forum/topics/tensile-membrane-facade

so i changed rest length but it doesn't work on my model.

in other worlds i'd like a more rigid membrane.

i hope someone can help me

thanks 

Views: 5203

Attachments:

Replies to This Discussion

Hi Davide,

I understand a minimal surface with uniform stresses in all directions is not always the desired shape.

For this reason tensile structures are sometimes designed with quite different stresses in the warp and weft directions of the fabric.

A relatively simple first way to model this in Kangaroo is by using a quad mesh with different division densities in the 2 principal directions.

I've actually been dealing with a similar issue in a project very recently, and looking at ways of giving more control over this, such as a gh component to sort edges of a quad mesh according to its principal directions, to allow uneven subdivision or stiffness assignment.

Hopefully I'll be able to release something for this soon.

A more sophisticated approach which I'm working on is to actually calculate tensions taking into account the orientation of each mesh face relative to the principal curvature directions. This also relates very closely to geodesics and the best seams along which to split the surface for cutting patterns.

I'd be very interested to hear more about these issues from people with experience engineering tensile structures, and about ways existing software works well for this or ways it could be improved upon.

The problem you have is probably due to the difference you've got in the number of springs in the horizontal direction vs the vertical direction. In the attached definition you can see the shape looks better because the edges are more similar in both directions. You could get the opposite effect by making the edges less even in the other direction.

 

Attachments:

Or what Daniel said (which I think it's the same thing but in proper English).

thank you all

the definition works great!

now i'm trying a different approach starting from a mash plan trimmed with circles.

i'm very interested in daniel's more sophisticated approach, i'm going to stay tuned :)

Here's the effect of varying division density (and therefore membrane stiffness) according to U/V directions:
and attached is a definition for achieving this. This one works with a polysurface as input, to take advantage of the predefined U and V directions, but as I said, I am working on something to do the same for quad meshes.

I've also clustered up the definition, so if you want to you can just use it as-is and get a relaxed result out in one step with no messing with timer/iterations/settings (but the cluster is not locked, so if you like you can explode it and see how it works or customize it).

forgot the definition. Here it is

(also, added a version which can output NURBS instead of mesh if preferred)

Attachments:

you are the best!!!

thank you very much

and the nurbs output is very welcom :)

hello Daniel

i'm tying to use your definition and i have some problems :)

first of all i don't understand how kangaroo comp works without the timer comp and the boolean true or false.

moreover when i try to bake nakedPts so i can use them as "moveable" anchorpoints the definition stops working

many thanks

..and

if i use as brep something like in the jpeg the cluster doesn't work properly

thank you again

Attachments:

Hi Davide,

In that definition, Kangaroo avoids the need for the timer because it calculates several hundred iterations in one go. It does this by setting the 'subiterations' value high enough to allow the relaxation to complete, and giving the 'simulationReset' a list of 2 inputs: "true,false"

So it initializes, and runs the simulation to equilibrium in one go, without needing the timer to update it. This allows it to work more like a standard Grasshopper component - just taking an input and providing a completed output.

It makes sense that changing the anchorpoints with this setup would cause it to fail, because when you move them from their original location, they are no longer connected to the surface boundary for the initialization step.

Probably the easiest solution here would be to use a PullToCurve force to move the boundary points to a curve you define.

and the reason it doesn't work with that Brep is that it has trimmed surfaces.

You can of course turn it into a triangulated mesh and relax that as normal,

but for this definition I posted to have separate control of warp and weft stiffness, you have to provide it with an input that has those directions defined consistently.

So if using a polysurface, its isocurves should make a well formed grid.

You can extract or bake the input surface I used in the example I posted to see how I made this.

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service