Grasshopper

algorithmic modeling for Rhino

Hey Guys,

I am having some trouble offsetting, thicken multiple surfaces in a brep.

It consists out of triangulated and quadrangualted surfaces no meshes so far.

I converted it also in a Mesh and tried the thicken command from weaverbird but I got bad results. The Surfaces are getting offsetted in different directions, although the faces got the same direction, see here:

i would prefer having only nurb surfaces no meshes but if there is no other way and I can transform mesh to nurb in the end it is ok.

I hope you have some ideas about that!! :)

Thanks in advance!!

Things I have already tried so far:

http://www.grasshopper3d.com/forum/topics/solid-brep-offest

http://www.grasshopper3d.com/forum/topics/how-to-offset-surface-into-a

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

http://www.grasshopper3d.com/forum/topics/access-to-new-offset-surf...

...

Views: 10812

Attachments:

Replies to This Discussion

Most extrude routines depend on finding a single vector direction in 3D space for the whole operation, but that won't work for, say, a cube shape polysurface, or for your steep-walled side surfaces.

If Boolean unions were more robust in Rhino/Grasshopper you could make local extrusions of each surface after rounding the corners somehow, possibly using T-Splines, fillets, or a mesh you smooth, then just union them and smooth the result to remove artifacts. But Booleans will not work here since any coincident surfaces already screws that up, let alone a huge collection of widely varying geometry that guarantees poor intersection curves here and there enough to ruin the whole Boolen union of either NURBS or a mesh.

So, you need an inventive strategy to locally thicken each surface in a way that does not depend on the overall geometry, and then some way to wrap that in a single surface or mesh. As stated, your problem, with pure exact NURBS is not well defined mathematically, as our fuzzy logic human brains may imagine it is. If you merely translate a copy of the polysurface straight up, you get zero width for the near vertical side surfaces, yet if you extrude each surface in the direction of its normal, you get little overlap at the joints between orthogonal surfaces.

If we could loft solids (closed NURBS surfaces), it would be easier, perhaps, to just work on extracted wires turned into hot dogs.

What works here, for now, is Weaverbird Thicken, acting on a mesh, which I also have access to manually in Rhino as wbThicken, though there is no thickness control outside of Grasshopper, so  I have to run it repeatedly to get substantial thickness. But Grasshopper affords two out of three algorithm options that work and a thickness setting that preserves your original kinky surface by only thickening on one side:

One of your small surfaces isn't flat which doesn't matter for meshes but may complicate a NURBS strategy.

Attachments:

Hi Nik,

I have encountered this problem myself. My geometry is particularly organic therefore making is not easy to offset the mesh in any other way than to join all the geometry together in the script and to offset it or as you suggested, weaverbird thicken.

The geometry is created using twisted boxes (box morphing) and each 'pod' is built up of 4 twisted boxes connected together. Each twisted box morphs a quarter of the geometry  (I found this was the best way to achieve what I needed and the associated points give me greater control). 

So when I come to offset them some quarters go in one direction and some go in the other. Do you know perhaps why this is and how I can solve it?

Just for added information: I have created all the quarters in exactly the same manner, including the sequence of which points I select to morph into a twisted box. It was after this point I gave up and started looking for help!

Thanks for you help!

Best regards

Leo

I had the same issue a few months ago. One way to solve that is to use Weaverbird thicken twice, in both direction (distance positive and negative), which means that your input distance has to be half of the one you want to have in the end. Finally, you just have to join everything. It might not be the proper way to do it but it works.

Augustin

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service