Modify geometry based on several reference curves

unhandled

#1

Hello all. I am looking for a gentle push in the right direction. I want to create a grasshopper expression to modify a Rhino model of a Turnbuckle I made. Basically I have a situation where I need to uniquely place 660 turnbuckles, varying their length as well as the orientation of their two clevises, although the two ends are always 90 degrees to each other. I have already used another grasshopper expression to generate three curves for each instances, one for the length, and one for the orientation of each end. What I could use is a bit of guidance in creating an expression which will take a model with three poly-surfaces and modify them individually to match three lines. Thank you.


(Pfotiad0) #2

The main problem here is the realistic items in use: the worst imaginable way is to clone geometry (660 times - or 6660 or 66660) … using stuff the likes of Orient et al. The pro way is to use Instance definitions and achieve the same result almost in real-time (file size could be 660 times smaller as well). Impossible to do it without code, mind. Notify if you want an example (C#). The other critical reason for doing that is the ability to talk to some BIM app the proper way (the only way truth to be said: the so called assembly/component design approach).

In this case you’ll need 3 Instance definitions yielding a nested Instance per turnbuckle: 2 times the anchors + 2 times the securing nut + 1 time the tensioner, For lengths greater than a given max span you’ll need possibly anchor families (commercially available).

That said Rhino is NOT (by any means) the app to design stuff like that: you need a proper feature driven CAD/MCAD app (Google: feature driven CAD). The only AEC oriented app that “does it all” ( 3d solid modeling not surface modeling) is Microstation/AECOSim + Generative Components (eats Revit + Dynamo for breakfast).

With regard the planes (i.e. coordinate systems) that you sould use post a representative case and we’ll see what is the best way to compute them.

Note: since the 99% of the problem (instance definitions) sould been managed via code the remaining 1% … well … you get the gist I do hope.


(Laurent Delrieu) #3

@PeterFotiadis Peter I am not an architect nor whatever. But yes it is doable with Rhino Grasshopper. There are plenty examples of complex realisation done using Rhino and others (see Front realisation for Zaha Hadid building in Macau). I manage to make my table in Rhino/Grasshopper, from 3d to 2d to drawing … I am ready fo fabrication.

For this kind of thing the script as to output say 3 or five oriented planes, these planes are then used as input of block, for example Elefront is a good candidate here, you feed the name of the block ant then the orientation of the plane an it must do the job.
image
I think like you for C# but script is also surely doable.

@Gregoryhitchcoc if it is not clear for you, provide some geometry, script and we could go further. Look at Elefront video and files it will help you.

here a short exemple with 2 master curves, one block. You just have to understand vector, cross product and use Elefront Insert Block


block_elefront.gh (19.1 KB)
block.3dm (314.2 KB)

Peter, does I need an atomic weapon to kill a fly ! Yes I know Darth Vader does. :yum:


Blocks inside bounding box
(Pfotiad0) #4

For nuclear things we need a Skype live demo on some stuff.

This requires just a proper pistol :

  1. Designing the things that supposedly are very close to real-life (or taken AS THEY ARE available in the market) : impossible without feature driven capabilities. Why? because you can’t design a real-life tensioner parametrically (in real-life) or anything in fact. There’s things that just participate in parametric adventures (mostly for clash checks and the likes) and things that MAY been made inside … but in real-life that almost never happens. Not to mention that these things are complex solids … and designing solids with a surface modeller … well … hope dies last.
  2. Using families of things (like variations of the anchor due to length limitations) is equally important meaning that at the placement phase you need to decide what instance to use (or consider PlanB,C,D…).
  3. Using the things (as instance definitions): without an AEC BIM app? To do what exactly? That said AEC studies and abstract academic exploitations differ vastly. What Zaha did in Macau and elsewhere means simply that they use the wrong app.
  4. Actually the only thing that you need is to prepare a collection of nested instances containing just coordinate systems … the rest (STEP export) is 100% BIM territory and has nothing to do with Rhino.
  5. The fact that you can design a space shuttle using the Word graphic editor (in 1M++ years) doesn’t mean that this is the way to go.

BTW: See some real-life solids/parts (can you imagine making them parametrically in Rhino?) used in these threads:


(Laurent Delrieu) #5

Sure you are right. I am not an architect. But if question is asked here means surely that the design is not for real life. If for real I will be afraid😬
Everybody has to begin to read and write before selling best sellers.
You can educate people on real projects constrain but you can’t say their questions can only be answered by complex solutions.


(Pfotiad0) #6

Maybe yes maybe not. I mean you can use GH for preparing coordinate systems (this means a lot of other calculations as well) for real-life things and this is a job that it does well.

GH in fact is way better than Generative Components for that task since the latter is slower than any Harley Davidson (a stationary one).

BTW: If you have a zillion of “heavy” (for Rhino) solids and you need some sort of interactive workflow you must pay some price I’m afraid (or buy a CRAY).

BTW: In this case the complex solution could be a thing that exploits other alternative ways to cut the mustard (ralated with cost etc etc).


#7

Oh wow. Just wow. Thank yuo so much for taking the time to show me this. First, let me say, I will be using much simpler geometry then my example, basically like your example, I will be using a cylinder for the body and a basic C shaped poly surface for the clevis, nothing more. I will try this and get back to you. THANK YOU SO MUCH!.


#8

Hello there. Thank you very much for responding and give me a hand. I completely agree, the geometry needs to be abstracted a bit. Let’s say I made each turnbuckle only three poly-surfaces: a cylinder for the staff, and a “U” shaped poly-surface for each end or clevis. How would I proceed> ??


(Pfotiad0) #9

OK, get the attached that is on purpose wrong:

Instances_place_performanceTest_V4B.gh (156.5 KB)
Instances_place_performanceTest_V4B.3dm (2.0 MB)

  1. Wrong size of Instances for the scope (but there’s a scale option available).
  2. Wrong instances since they can’t been sampled on a pair basis and yield some meaningfull combo.
  3. Wrong definition of some instances with regard the reference plane (it should be always Plane.WorldXY)

But indicates the obvious:

  1. One needs a way to design the parts with some ability to adapt to the target topology/scope. Impossible to do it with what is available in Rhino. Note: most people not in our trade are in a constant confusion: they think that designing parts and placing parts is the same thing or at least it is doable using a parametric graphic editor like GH (and Rhino). That’s 1Z miles from the truth,
  2. Some parts should be standard (for instance a nut) and some must belong to families of parts (preferably commercially available). in most of cases 3d models (STEP) of parts are available,
  3. Even using 5K Instances the response appears to be within reasonable limits (try to Orient 5K similar objects not to mention to save a Rhino file containing 5K similar things). The delays are due to GPU as well (An expensive NVidia Kepler Quadro [4/5/6xxx] could/may help on that).

Moral: You don’t need to reduce the complexity of your stuff. You just need to listen to Yoda.

Tip: post here your parts (in fact 3: the anchor, the nut and the tensioner) and some indicative topology for placement.


(Pfotiad0) #10

And this … well … is similar. The scope is to get the gist of the speed of placement and not doing something that has any meaning. Mesures the length of the placement axis and computes the plane AND applies a suitable transformation to the Instances on the fly (but that violates the known 66 rules of engineering, he he).

Instances_place_12_V1.gh (136.2 KB)
Instances_place_12_V1.3dm (1.5 MB)

Allows you to preview the geometry (in blue) of the selected Instance in order to get some idea about the size and the definition plane used. That may sound odd (and stupid) because in real life we use some sort of RDBMS that keeps track of any available standard (or custom) component … but that is way beyond the scope of this thread.

The interesting puzzle: asuming that you actually want a series of similar things … what would be the way to design the male/female ends?