Grasshopper

algorithmic modeling for Rhino

Can grasshopper allow me to do things like draw an architectural beam, and then have a rule saying you can't put a light fixture within a certain distance of it, like 2 feet?

For my profession, there is a lot of technical rule books that don't allow you to place certain things like lights, plumbing pipes, ceiling objects like fans and heating ducts too close to eachother and stuff. It would be really helpful if I could 'program' rules into a 3d building model so that I couldn't violate the technical rule books. Can grasshopper do anything like this?

Views: 3055

Replies to This Discussion

try smaller than or larger than components, under the math_operator tab

I would say "yes" Grasshopper can do this with the right know how. Provided you steer clear of Iterative processes and Recursion Grasshopper can do just about anything.

Thinking off the top of my head:

1) define collision boundaries for all your beams as Breps

2) using the Inside component test for "collision"

3) Cull Pattern from Inside to remove any locations that fall within boundaries. 

To take Dannys reply a little further:

Implementing a technical rule book in a generalized way would require GH to know that geometry A is a "Light" and geometry B is a "beam". GH doesn't have such distinctions and you'd have do make those manually while creating your definition.

In GH you don't, like, manually place a light somewhere and according to some rules it refuses to be placed. You want to create a logic of how lights are placed and beams created. There is no built in way to instruct GH to, say, generate an array of lights and a grid of beams and make sure that no light is placed on a beam. This involves detection of collision and a logic to avoid the collision. Obviously there several ways to avoid a collision an there might be other strategies for ducts and such.

You can do it, but it's all in the logic of your definition. Each rule hardcoded to the specific case. No general rule, no general book of rules. If you change the way you place lights, you will probably have to redo large parts of the definition, including the rules. It all boils down to create a system that obeys the rules to begin with. And you wouldn't want to waste time implementing rules, that actually don't apply to your case.

there is no way to make a 3d rectangular box for example, as a whole unit, labeled a 'light'? or group several identicals of these 'light' objects all as lights within GH?

I just don't understand what you mean by "GH doesn't have such distinctions and you'd have do make those manually while creating your definition." Does this mean that it's possible, just not a one click button type thing, or that I would have to do a lengthy process to define each geometry as a light or beam each time even if they were identical?


I'm really in love with grasshopper since I can see it's very powerful, but has anyone here worked with catia or other software, and would other software do this more intuitively? I've tried inventor ilogic, but it required a lot of text-coding and I'm not that smart. Just looking for the shortest possible route.

yes you can have lights distinguised in this way you would just have to make use of the data tree structure

Hi Luke,

Native Grasshopper is pretty much purely a Geometry driven tool, and like Rhino, an industry independent tool.  It doesn't really have means to define purpose and other attributes (such as beam, light, wall, stair etc) or relations.  

I've been developing a BIM addon that uses the neutral BIM standard, Industry Foundation Class (IFC) that does permit this additional intelligence to be assigned to parts within a grasshopper model, and then exchange this information with an extensive range of BIM software including Revit, Archicad, Digital Project, Tekla etc etc.  Here's an image (files attached) demonstrating creation of a slab, beam and light fixture. http://geometrygym.blogspot.com/search/label/IFC for more details.

With regards to Rule based design, I think one of the advantages/assets of using a tool like Grasshopper is it's speed and flexibility.  There would be a significant trade-off to implement and enforce lots of code based rules.  Also, the effort to develop and maintain this rule checking would be significant to implement for every related design software out there.

I haven't really researched if it is available yet, but certainly a more practical work flow would be to "design" your model using human intelligence within Grasshopper, then when satisfied export to IFC and apply a post process validation of the model (akin to a clash detection which certainly is available to IFC models using software such as Tekla Bimsight). Then any reported non-compliance could be corrected within the GH model, and checked again until compliance is achieved.

Hope this helps a little, and look forward to discussing further and hearing other opinions.

Cheers,

Jon

Attachments:

This is all very interesting and at the moment way above my head. I literally didn't even know what NURBS meant, or what GH was, or for that matter what rhino was 48 hours ago.. I'm computer literate, I live on my computer and I even sleep with it, so learning all this is probably within my reach but I'm a complete beginner as of now.

I'm downloading the 32 bit version of rhino 5 since the 64 bit doesn't seem to work with your downloads Jon.

I haven't grasped everything you have made yet Jon I can't even begin to understand what your IFC stuff is actually capable of, but just to be clear I'm not interested in solely being able to tell that something is colliding as there are already software that can do that beautifully. What I want to do is bypass that step altogether by never having collision-checking back and forth go on, even collisions which aren't physical collisions, but rather just violations by code. The simplest way to do this would be to simply make the geometry of the beams 2 feet wider than they are in real life, so that way you could put a light right next to the 'over-sized' beam and it would still be within the rules. But that would be extremely primitive and I'm sure there's a way to do it mathematically. 

Just to clarify, I'm the fire sprinkler designer in the architectural circus. The sprinkler designer (me) doesn't really get the luxury of telling the other trades that they're colliding with my stuff and they should move. Rather, I get their drawings, find out I'm colliding with them, and move around them. So it would be of great use to me to have this be automatic - that is, to automatically space my sprinklers the neccesary distance away from all obstructions. There are different spacing rules for different obstructions - walls, beams, open web steel, unit heaters, hvac ducts depending on how wide the ducts are, lights, fans, high rack storage, basically anything that would obstruct the water spray from a sprinkler needs to be taken into account and spaced away from.

It's therefore a very attractive idea to be able to just draw a rectangle (representing the walls of a simple room) for instance, have the sprinklers automatically spaced as far apart as possible within the rectangle according to the rulebooks (to minimize the amount of sprinklers needed which minimizes the material cost of the job).

Then add obstructions inside the rectangle, such as a beam, and have the sprinklers relocate themselves or add new sprinklers to accommodate for the new obstruction.. Keep adding obstructions until you have the realistic 3d model of the room, with the sprinklers spaced accordingly, and you have an up-to-code sprinkler system.

There is one example where sprinklers actually need to be spaced really close to, rather than away from, an object.. and that is the ceiling (sprinklers must be within 12 in of ceiling typically).

If the HVAC guy decides to reroute his ducts right through my sprinklers, then I could draw 3D HVAC ducts (I usually get 2D drawings coming in) going right through the room and the sprinklers would relocate and auto-space away from the ducts, without actually having to tell the HVAC guy he is colliding with me because all that will do is require me to do a redesign anyway.

And presto, the HVAC guy loves me because I didn't complain to him at all and seemingly did all this work by moving around him when all I really did was use the computer to do it, the job gets done much faster and I don't have to worry that I'm going to lose my job in court because I made a silly human error when I was patching my system manually because some HVAC guy made me redesign 12 times in different places.

From what I have been reading from you guys, doing this is possible although (I realize) ambitious. The end result would be vastly increased productivity, less error making, cheaper design cost, etc. Using programs like Rhino, architects are getting more and more funny-shaped buildings and making it difficult for guys like me to make sprinkler systems within the rules, and I see it as an inevitability that computers will be making almost all of the typical design decisions in the future when it comes to life safety systems, I'm just trying to see if it's possible to start implementing this extra aid today.

Yes, I think your description is ambitious, but that's great in my opinion.  Software tools of our trade need ambition and vision.

I am involved (although the clever aspect I'm about to describe was done by CSTB) in another software development for a construction company for automatically detailing mullions and studs (including framing around window and door openings) and applying product for performance specification such as fire rating, insulation, acoustic etc, and in reality this is not so different that what you describe. This is certainly the smart and efficient way forward, so I do believe what you describe will be a reality.  The question is how soon.  The above project does work on the basis of IFC for import/export enabling it to be applied to models originating from Archicad, Revit etc etc.

By the way, my plugins do work with 64 bit (that's what I run) but the installer doesn't register the plugin for the 64 bit Rhino.  Refer http://www.geometrygym.com/installing or email me and I'll advise.

that project was all done in Rhino/GH?

I just came up on a road block I think to my spacing idea,

in order for GH to automatically space sprinklers there will have to be a parameter that each sprinkler covers X amount of floor area, and the total floor area must be covered (while the other rule checking is going on), but I don't see how GH will know to use as few sprinklers as possible, rather than just filling the area up with sprinklers so that it doesn't have to try different solutions 

No, this project was done outside of Rhino/GH, although my involvement has been to enable means to produce traditional "2d" drawings from the 3d IFC model in Rhino (and probably soon Revit and Archicad).

I'm not sure Grasshopper is the exact platform for your software tool you describe, although it could easily be prototyped or developed initially there.  

There is a lot of human intelligence about design such as how to efficiently arrange sprinklers (rather than just derive a code compliant arrangement), and certainly it takes effort to embed this into an automated system.

I don't see how there's need for any human involvement in the spacing aspect - I'm using the most advanced software for sprinkler placement already, called AutoSPRINK, which can, so far, space sprinklers optimally in a rectangle or square area, even adjust for sloped ceilings, stay a fixed distance from any obstruction you define (even entire layers can be obstructions), and can show you the resulting coverage area for each sprinkler or all of them as a whole. It also has completely taken care of automatic pipe routing, hanging, and making reports, etc.

The main flaw is that it only allows you to specify one fixed distance from all obstructions - in reality each obstruction needs to be spaced away from different distances. Also, it's limited by only being able to auto-calc rectangles so you have to divide complex rooms into multiple rectangles. It still works out in the end, but not as good as it could be, and definitely not in relation to complex obstructions like placing sprinklers inside webbed steel members.

In my opinion the only need for a human in the entire process (theoretically) is when you have to go to the physical realm to collect information not given to the computer yet - such as when you don't know the dimensions of something, or there is something left out or implied, etc. But if you have a completely detailed realistic 3d model, with every little thing defined and every possible mathematical rule or algorithm there could possibly be, then theoretically sprinkler systems would be designed completely by computer formulas. The problem with this idea is that programmers have always been limited to starting from scratch, no one releases their source code for this type of thing, and programming is still stuck in the incoherent world of computer language. GH and other 'visual programming' or logic systems seem to make more things like this possible and that's what I've been searching for.

Inventor iLogic, Catia Knowledge Advisor / Optimizer, Rhino/GH, Intergraph/Alias ISOGEN related stuff is all I have found so far, but I'm sure there is something out there that can do this. Sprinkler design is a relatively small field which, even though it's more complex in my opinion than HVAC and plumbing, the vast amount of rules means there is less open to 'human judgement', and almost nothing, except sprinklers being center of tile and the pipe not hanging down too low, is open to the owners idea of aesthetics or what looks good. That equates to a computer being the best designer, again, imho.

Hello Luke,

Everything you have described has a way to be described in an abstract manner.  What you mention with the sprinklers is a space packing solution on a 2D field.  It can be done in many many ways given the specific parameters you need to comply with. 

Grasshopper is a tool for making tools.  None of the specific functionality you are after is hard coded into GH, but it can all be done and automated in GH if you build up the logic.  But then again, GH has none of the specific functionality for any of the projects people use it for.  They build that specificity with a combination of the components in GH.

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