Self intersecting surfaces on medical brace 3D scan

Dear Grasshopper Community!

I want to make a brace for medical purposes. For this brace, we 3D scan the patient. From this scan, we get a (not always watertight) mesh. I want to make an automated process for making the brace. To do that, I have to select a specific outline of where I want the brace to be (this shape is not yet final, since we’re in an explorative shape phase). I have managed to acquire this shape by cutting the mesh into multiple planes, which generates contours. From these contours, a surface is generated. However, this surface is self-intersecting, and producing an offset from this surface doesn’t give good results. Please see the included gh file. Medical (2.0 MB)

So, I have four questions, ordered by importance:

  1. How do I produce a surface that is smooth and directly fitting onto the skin/mesh of the 3D scan, even when the scan is not watertight? The scan has to be in a predetermined area/outline.

  2. How do I offset this surface/give thickness/make it a solid?

  3. I’ve previously had the seam of the surface on the back of the head. It produces a better surface when the seam is on the chin. However, this produces a division of the surface into two at the end. How can I make sure the surface is just one instead of two (also needed for the flattening of the surface)?

  4. How do I flatten this surface so I can laser cut it (unroll is not accurate, a software called ‘meshmixer’ produced an accurate result, but I would like it to be fully automated within Grasshopper)?

1 Like

Medical Brace (370.9 KB)

It has plugins.

What I did:

  1. Blender

    1. Smooth the mesh surface with Sculpting tools
    2. Use Boolean Intersection to get the area need
  2. Rhino

    1. Quad Remesh the STL
    2. Make it Subd
    3. Offset the subd with loop edges
    4. make the Solid Subd into the Brep


    1. Use Mesh | Mesh to get the intersecting lines
    2. Smooth the polylines and get one single surface with Loft


Have you tried Shrinkwrap in Rhino 8?


Thanks, Quan Li for your solution, this is a great help!

I now cut the shape completely parametrically in Grasshopper based on landmarks on the face. Similar to what you’ve done in Blender. After, I used your first method (with offsetting the subd with loop edges). However, when I cut the open Brep like this it gives very sharp corners. This would partially get solved by the conversion to SubD, but I would like to have control over the sharpness/smoothness of these corners. I couldn’t find any solutions on the forum, which led me back here. Here is my grasshopper script so far:
Question medical brace rounding the corners of the (2.4 MB)

I’m trying to reach something like this (not exactly the green lines, but just to round each corner):

Thanks again!

1 Like

I’ve seen it’s an awesome feature! Haven’t updated to Rhino 8 yet, but would love to experiment with it! Is it available within Grasshopper too?

1 Like

Yes it’s available in Grasshopper


Question medical brace rounding the corners of the brep Edited V0 Hot to (2.4 MB)
There are two ways of doing that.


Amazing work yet again Quan Li! Thank you!

I chose to use your second method since it produces the smoothest cutters, this works perfectly. I was thinking about using the planes around the curve, but couldn’t make it happen :sweat_smile:. Very cool that you were able to do it. We’re experimenting with two layers in our design, so now I made it look like this:

Going forward, I’ll be experimenting with flattening the Brep for laser cutting, maybe a whole new topic on itself :eyes:.

A little update, I’ve been trying to flatten the surface, and to make a mold. For both, I ran into the same problem. In order to flatten the surface in mesh mixer (or Rhino for that matter), I need to have a single surface of the brace (not a Brep). I tried doing that using Quan Li’s method for that, but then with a tilted cylinder. However, this gives a loft that doesn’t produce an exact replica of the brace, but produces some weird artifacts (same for a straight cylinder). If I could manage to make that happen, I would have to extend the surface outwards with the same tangency, and this could intersect with the mold, after which I could cut the mold in half. I have experimented with the Dendro plugin, where I can do a volume difference, which works. However, this requires a lot of computing time if I were to increase the voxel size, and the problem of the single surface for flattening and cutting the mold still remains.

I have highlighted the inner part that needs to be cut out. I’ve included my experimentation in yellow, and my surface to extend in pink. I wonder if this is solvable!

I’ve included the grasshopper file here:
Flattening and mold making (2.4 MB)

Just wondering, what are you going to make this mold out of?

What are you going to laser cut?

So the mold is going to be sls printed in PA12 by a third party. In there, we would pour silicone. We’re trying to speed up the production process of making the brace, so this is why we’re also experimenting with lasercutting the silicones instead, to see if it is feasible. We actually managed to lasercut some, but not yet with the Shape here. We’d like to see if it’s stretchable enough to not have to be molded in a 3D shape. But we’re only two weeks into the project, so we’re still exploring a lot (and learning Rhino too ;)).

Here is one way.

1 Like

Super helpful! Thank you so much for your solution!