Open polysurface to close solid polysurface

Hi all, I was hoping to get help on this phone case I am trying to 3D print. In order for the print to get approved, it needs to be one close polysurface, and ever since I trimmed out the pattern I wanted into the case, the object is no longer closed. I did the ShowEdge command and check for naked edges but when I click done the points go away, and I’m not sure how to edit them. I will attach the file so that anyone can take a look at it since I am bad at explaining. (3.9 MB)

Ok I compressed the file, here it is if anyone wants to look it over!

Hello - you can close up the object by lofting between each pair of open edges and then joining these to the larger object. I don’t know if there are other open edges besides the pattern.
You might want to back up to before the trimming of the pattern though and `MergeAllCoplanarFaces’, then trim.


Hi Pascal,
When I started, the base of the case was initially a closed polysurface so I didn’t think trimming out the holes I wanted in the case would cause it to be an open polysurface

Hello - Rhino is a surface modeler, so that is exactly what it does when you trim - a better way in this case might be to extrude all the pattern curves and BooleanDifference them from the case - it turns out one of the curves has a very short segment in it which makes that fail in this case but that the the way to go. When you get a messy thing like this that is converted from a mesh you can greatly simplify it by combining planar faces.
In the long run, for a relatively simple object like this, it will pay to completely reverse engineer the mesh to a proper surface model rather than just a pile of mesh faces converted into little planar faces.


Yeah I tried to BooleanDifference and it failed, also tried BooleanSplit. So you recommend exploding it and making each individual piece into a polysurface then rejoining later as opposed to massing the whole thing as a mesh then turning it into a polysurface from there? I initially did a MeshToNURBS command to transform it from a mesh to a polysurface.

Hello - what I really recommend is reverse engineering the part to make a clean surface model. But if you are going to work with MeshToNurbs, which is messy but possible, I would extrude your curves and BooleanDifference - the only thing is you need to clean up the curves a bit - well, maybe that is not true, I got mine from the borders of the trimmed object. If BD fails, with all of them, try it in stages - at some point you’ll locate the bad boys and you can look into fixing.
For now, I would loft between each pair of open edge curves and join the results into the part.


I’m sorry but could you explain what you mean by reverse engineering? I honestly got this base case on a download from the web and started working from it, I did not construct it myself.


Hello - reverse engineering in this context means you extract information from the mesh and construct a new model using surfaces (in this case). A section through the case shows that is is all or nearly all constructed using arcs and lines, and this is relatively straightforward to extract and reproduce -

A simple, exact and clean surface model is just a lot more tractable in Rhino than a zillion little trimmed faces.


Hi Pascal - what command did you use for that? I did ExtractMeshEdges and it looks very different than what you are showing.

Hello - I took a section through the case in your file and drew the lines and arcs that are clearly the underlying shapes -

Case reverse fragment.3dm (164.2 KB)


Thanks Pascal, I was able to finish everything this morning.

Hi, One thing I have found that can cause this issue, is if the surface normal orientation is not consistent.

Use Analyze> Direction, to show the surface orientation, of selected surfaces.
If the surfaces are grouped, they will change all at once. If the model is exploded first, individual surface orientation can be changed. Arrows should all be pointed outward.

I hope this helps.