Shell polysurface leaving holes or making invalid brep?

I’m having trouble where a shell polysurface is producing either 1) holes in the resulting brep, or 2) an invalid brep. It seems to be related to the thickness of the shell, and I imagine it’s about intersections among the facets.

Any suggestions for how to better approach this problem?


shellproblem.gh (10.1 KB)

If it is for 3d printing you will end with a Mesh so here a solution with Dendro.
You can offset with Dendro but not shell. So you offset and then cut the model to have a hole.
As I wanted to keep your shape I scaled the shape in order to make the interior, then boolean.
Et voilà ! But your seam is awful, I think you will find tricks on this forum to deal with that.




shellproblem_LD_dendro_shell.gh (9.9 KB)

2 Likes

Shell is a Pufferfish component. It uses this method - https://developer.rhino3d.com/5/api/RhinoCommon/html/M_Rhino_Geometry_Brep_CreateShell.htm

Same as Rhino, it fails in the same cases.


As @laurent_delrieu mentioned, shelling polysurfaces is not meant for this type of geometry. Better practice is to use meshes or to boolean. It is meant for much simpler types of geometry.


Capture

But your seam is awful, I think you will find tricks on this forum to deal with that.

@brooks needs a quad mesh, Nurbs diagrids dont work good around seams. :smiley:

Thank you all for the fantastic feedback. I’ll explore doing this a less-wrong way :):grinning:

In your defense, there is no good description about what kind of geometry it works on, mainly because it is hard to describe. But once you get it working you understand when and when not to use it (mostly). http://docs.mcneel.com/rhino/5/help/en-us/commands/shell.htm

McNeels description is:

The Shell command creates a hollowed out shell from a solid.
Shell only operates on simple, solid, manifold polysurfaces. These surfaces are removed and the remainder is offset inward, using the outer parts of the removed surfaces to join the inner and outer parts.

But it is hard to describe what exactly simple means right.

I’ve 3D printed many parts like this; here’s a simpler method I learned about here that avoids meshing completely.

shellproblem_bb1.gh (10.2 KB)

2 Likes

Well done, simplicity is a good thing. But for complex shape Dendro and offset will be very useful.

1 Like

Well sure scale+bool works really well with some shapes. But if you need a consistent thickness or have a very difficult shape you will need offset. Usually I go to Zbrush or Mesh lab which have mesh thickening options that don’t cause self intersection in the thickness.

Hi there! You might notice that the Shell node isn’t completely failing. It’s creating two outputs, and one of them is valid. It’s actually just a part of the larger group. I believe this is a mistake when it comes to how the Shell node is coded, where the items are not joined after they are formed. I ran into this problem with a very faceted shape, trying to do exactly what you’re doing here and found that simply running those outputs through the “Join” node gives me exactly the output I’m looking for.

TLDR: Run the outputs of the Shell node through a Join node.

I believe this is a mistake when it comes to how the Shell node is coded, where the items are not joined after they are formed.

There is no mistake there, it is directly from Rhinocommon seen here: https://developer.rhino3d.com/5/api/RhinoCommon/html/M_Rhino_Geometry_Brep_CreateShell.htm
Shell has joining built into it and will output lists of breps when joining is not possible.

trying to do exactly what you’re doing here and found that simply running those outputs through the “Join” node gives me exactly the output I’m looking for.

Good that it worked in your case but in this case it clears invalid but doesn’t resolve the actual problem of making a water tight shell. Shell is very case by case sensitive. See image, faces that were “invalid” just go missing and the facets have gaps.

Mesh is the way to go.