Grasshopper

algorithmic modeling for Rhino

Hi all,

Often in architectural design we need to build site context model to get a rough sense of the surrounding buildings. There are multiple ways of sculpting the prisms, but the main principle is to prepare walls that extrudes from the base curve and wrap it around to top and bottom slab. To make them nicely, the "walls" have to take into considerations the thickness of the material one is using.

For example, at an exterior 90degrees corner, while some master model makers will try to knife the wall edges into a type of Miter Joint with extreme care and the expense of time. Many will choose make one wall longer while another one shorter and glued with one wall covering another wall. This method proofs to give fairly acceptable result with much less time spent. In my experience of building such models, the challenge is to make calculations and decide which wall have to be shortened and which one have to be lengthened, this applies to both laser cut walls and manually-cut walls. Apart from the fact that this usually a long and boring process, the next step of taking the measurements and redrawing the rectangles (for laser cutting) with the right height and width are prone to human error. The chance of making an mistake is particular high is when facing blocks that have non-90degrees corners.

Here I have created a small tool that reads polyline curves and automatically determine the required shortening and lengthening on all walls, taking care of the material thickness. It reads the height value from the Name of the polyline curve (which I found easiest to use). It can then redraw the laser cutting files for the walls with correct tags that allow assembly much easier. I also wrote a 3D extruded preview of all the models, so that one can check visually before going to the cutting, which also helps during the assembly to figure out which wall overlaps with which wall and how to properly glue them.

  • To run the script, you need to have "planar" "closedpolylines (it wont accept curve segments) with the height value entered in the "Name Property". (look at my example file)
  • If you have changed the height of the building but the script did not update, press F5 in grasshopper to Recompute.
  • Each block is named in numerical order, the walls are tagged with alphabetical suffix to specify the sequence.
  • Top slab has no tag to avoid showing on the model, match them with the bottom slab if you get confused.
  • Note that the walls are individual piece but not a folding sheet. The whole idea is not for models that the walls warps (continuous piece of paper) around top and bottom plates.
  • I have added an etched line for positioning the roof with a slight sink. Which will make the blocking look nicer with a shadow gap.


The script with an example file is uploaded on my website here: http://www.dreamationworks.com/?p=684

Cheers

Victor

Views: 6174

Replies to This Discussion

nice victor....always sharing very usefull and cool stuff.

best

mario

同上

Hi Victor, could you help me with my model? I don´t know how to nest surfaces as the same orientation they're in 3D, as if I unfold the geometry (think in a open cube). How can I do this in the attached file?? Thanks in advance!!

Attachments:

Hi Mariana, 

There is the post by Andrew Heumann about unfolding geometry by "compound transformation", the concept there might help you. The script that he have shared might not work now because of GH version, but if you could rewrite that, then it should be okay.

The logic is not simple though. The core idea is to transform it multiple times, either orient or rotate. Imagine if the first piece does not move, the remaining strand pieces rotate till second piece is flat with the first piece. Then you keep the first two segment not moving, rotate the remaining strand. Blah blah blah. Easy to say, clumsy to script.

Notice that most transformation function now have the X output, which is the transformation matrix. The "Compound" command can add them up in an order. Those are what you need.

I'm busy with some other project now, so that's what I can offer, sorry.

Please also note that in your script, the panels are not planar.

... Updating...

Victor, I planarized my surfaces, but not in the right way, actually I used the Project component. Do you know the right way to planarize this???

Attachments:

 I am not able to download the script ...from the given link ...

It is working for me though. I'll just re-post it here.

Attachments:

Thank you very much... !

As i can see in the script cant we also name the part on the 3d model itself as to be the same name on the sheet ? so as to facilitate assembly ?

Attachments:

Yea, but you need to do some coding change. 

If you find out where the part that named the stuff with 1,2,3 numbers.

Modify that to accept an extra input for the named blocks.

Modify the codes that parse the height information, have it read a value that is in perhaps a CSV format: height,name ; eg:  20,BlockA

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service