Grasshopper

algorithmic modeling for Rhino

Hi,

I have created a parametric model of folding plate. I have applied thickness to the surfaces using 'extrude' component and unit vector, however, the unit vector defined is for global axis. Is there a way of defining the vector for local axis of the plate? Furthermore, the using the extrude tool and the unit vector gives an offset thickness from one direction only, is there a way of offsetting in both direction from the centre line. Please see attached sketch to illustrate what I am trying to achieve.

Also, as I want to use the model to investigate fully folded state of the form post applying thickness, is there a way of offsetting material from fold lines e.g. by 20mm to represent the thickness of hinge. I want to achieve this to avoid the intersection of adjacent panels when the thickness is applied. 

Thanks in advance!

Views: 2157

Replies to This Discussion

Did you happen to notice this thread, where I posted a "thicken" cluster this morning?

http://www.grasshopper3d.com/forum/topics/surface-offset-solid-option

That cluster lofts the edges of the original and offset surfaces.  It can be modified to offset from the centerline by using offset surface in both directions (+ and - thickness/2).  However, doing that in this case will cause the two pieces to intersect, which is not what you want, so you're better off using it as is:

Attachments:

Hi Joseph,

Thanks for your response. The cluster works fine. However, I was bound to apply the thickness in +/- of centre line as the adjacent panels were mirrored of the original panel. Hence the projection of vector is in opposite directions. I have attached the folded plate script. 

Also, could you advise on how can I offset the panels from the fold lines? As I explained in my initial post. 

Thanks 

Farjad

Thanks!

Attachments:

Your implementation of +/- offset surfaces isn't what I had in mind, so I added a boolean toggle 'center' input to my "thicken" cluster and used it instead.  Most of the effort went into the spacing...  Just as I was about to post it, I noticed that the cluster fails when 'center' is false.  I'm not quite sure why since it works with my test surfaces (also attached) but I'm guessing it's the way you created and/or mirrored the original four surfaces.

For one thing, they weren't in sequence so I had to sort them.  Secondly, if you had thickened just one surface and then mirrored, copied and moved it, everything would be much easier.

Attachments:

Just out of curiosity, I tried the C# implementation of 'OffSrf' ('thicken') that Michael Pryor posted yesterday and it does indeed work better than mine with your surfaces.  Very strange that Grasshopper doesn't include that as a standard component...

Please notice something though; when the spacing (yellow group) is added, the only difference between 'center'=true vs. 'center'=false is a slight (1/2 thickness) difference in vertical position.

P.S.  With 'OffSrf' when 'center'=true, the thickness must be divided by two.

Attachments:

Joseph,

Really appreciate your comprehensive responses.

I have gone through the revised cluster and to simplify things I have merged the offset surfaces and removed the ‘brep edges’ definition.

I think we are nearly there with the solution I was after. Basically, the way it folds now is ideal as it does not have clashes, however, what I am inspecting is an instance where hinge of a diameter exist at fold lines, hence, I want to offset back the panel from the fold line (e.g. 20mm) but still pivot the fold from initial fold line. Please see attached pdf.

Figure 1 shows the axis shift method which is what has been defined in your revised cluster. Figure 2, is what I am investigating i.e. for a given thickness and hinge diameter, to determine what is the maximum angle before clash occurs (I will visually inspect the clash so not a scripting problem).

Thanks!

Farjad 

Attachments:

I have gone through the revised cluster and to simplify things I have merged the offset surfaces and removed the ‘brep edges’ definition.

Was there any reason for removing that part of the code?  Because there are several reasons I used it instead of just lofting surfaces:

  • holes - can your modified version handle holes in surfaces, like the one in thicken_2017Nov4a.gh?
  • curved/twisted surfaces - Sometimes compound surfaces don't succeed at 'Loft', whereas lofting edges always works.

As to leaving a gap for a hinge, it's very simple; add this to code I posted yesterday:

But look, this is all more complex than it needs to be.  It is redundant to position the plates with your code and then re-position them later with my code in the yellow group.  When you get into the weeds, back up and re-evaluate the whole approach.  Find a simpler way, like this:

Note that this is oriented around the origin (0,0,0) for simplicity, but you can move the plates anywhere you want.

Attachments:

Note that this is oriented around the origin (0,0,0) for simplicity, but you can move the plates anywhere you want.

Like this:

Attachments:

Joseph,

Thank you for your help!

Regards

Farjad

Is there a way of defining the vector for local axis of the plate?

That would be a surface normal vector, which is available from the 'EvalSrf (Evaluate Surface)' component.

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