How to Offset Closed Polysurface in GH

I’m aware this can be achieved quite simply in Rhino 6 (‘shell’) and I’m surprised GH doesn’t have a friendly equivalent. If you take a look at my definition and images, the corners are obviously unable to create a closed polysurface. It is treated as individual surfaces, essentially getting extruded, but the goal is for the corners to boolean.

My questions are:

  1. What should I be doing differently after getting the resultant solid that I want offset? (refer to attached definition) I tried using Shell Polysurface, but I can’t figure out how to pick indices to remove; it also keeps forcing GH to quit.

  2. A fundamental question about lists, but I still have trouble figuring out how to pick certain indices. In this case, filtering to only the horizontal faces of the closed polysurface. Can someone explain/show how to rethink this?

  3. For the contours (floors), I would like to associate the perimeter of each contour to the interior face of the closed polysurface mentioned in Q1. This would just be the resulting brep from whatever component is used in Q1, correct? As of now, I tried connecting the FMerge to Contour (FLOORS), but that only makes a contour within the thickness of that FMerge polysurface, not the void between.

I can clarify anything that sounds off.

Thank you!

MASTER BUILD.gh (21.5 KB)
REF.3dm (1.2 MB)

I tried using Shell Polysurface

I don’t think GH has a shell polysurface component. Pufferfish plugin for GH does, is that what you are using?

Indices are the index of each item in the list, starting at 0, So if you have 10 faces, this means you have 10 indices - from 0-9 - 0 being the first item, 9 being the last. You can use things like list item to get things by index. So if you wanted to identify the 5th face of a polysurface that would be the face at index 4. This is very basic stuff so I really suggest you read this book at least. https://aae280.files.wordpress.com/2014/10/mode-lab-grasshopper-primer-third-edition.pdf

Michael Pryor : Yes, that component was through Pufferfish.

I appreciate the summary and the reference! I just started using GH and Python this summer, so I’m doing my best at not putting the cart before the horse. I was able to identify the faces to be removed for ‘ShellPolysrf’ and kept face merge to false, but I can’t seem to get the shell to offset outward as a closed brep (I tried cap holes after, that was causing an error). I attached images of each condition.

Back to Q3 on the original post, Offsetting the shell outward will allow me to reference the massing geometry so I can contour floor plates from that geometry, as it would then not intersect the shell geometry.

Shell uses this method from Rhinocommon. https://developer.rhino3d.com/5/api/RhinoCommon/html/M_Rhino_Geometry_Brep_CreateShell.htm

Sometimes it doesn’t make a solid, and I am not really sure why- same with Rhino’s Shell command. Can you post the geometry in question. One solution might be to get the edges of both polysurfaces and loft the enclosure ourselves.

I updated the images and here is the GH file.

ShellPolysurface.gh (7.9 KB)

I see, the issue seems to be that Shell relies on normals (I think) and there is no way to invert the normals of a closed brep. They always point out. Shell is designed to go inward based on these normals. Try Shell in Rhino, it wont give you an option to go outward and it won’t accept negative thickness - if you try it will just keep asking you for the thickness. Furthermore, I can’t close this brep because the outward offset it makes is Invalid. My suggestion is start with the outside dimensions of the intended geometry and thicken inward if you want to use shelling.

I should probably make the component error in the event of negative numbers and tell the user the thickness must be positive.

Inward it is lol. For the contours (floors), a boolean difference was my solution, but you can see it adds a lot of components to get things like SF; it also associated the contours beyond the top face of the geometry (see image). It seemed imperative/simpler to do outward shell, but if it involves flipping normals of a brep I will stick to this. I appreciate the help! If you happen to come up with a solution please share!

Sure, I’m afraid a fix for outward would have to come from McNeel from this one. It is their shelling method.