Add Thickness to a Boat hull using Grasshopper?

Hello all

I am an intern on a shipyard and I have multiple demands to 3D print some boat hull in 10% scale.

In most designs the hull is a poly surface inside solidworks, some are in Rhino, the thing is, I tried multiple times adding thickness via OffsetSrf and/or ExtrudeSrf, however most of the time it fails to create a Solid,and I end up having to patch a dozen if not hundreds of naked edges, I noticed the problem seens to occur close to fillet edges, when both edges come closer and closer to end into a point.


My real question is, can I somehow input the polysurface into a grasshopper code and with that code generate a closed polysurface to export as STL ? I mean in a way I can re use the same code for multiple hulls.


I assume that for the 3d printed parts, you don’t need a high level of accuracy on the walls since you just want show a demonstrator object.

Therefore, one (very robust) approach can be to use the Dendro plugin to thicken the surfaces. The workflow is to sample a lot of points on the polysurfaces and then place voxels (e.g. spheres) on each point in order to create a thickened wall. You can export the placed voxels as a unified mesh.

Dendro plugin is here:
Download includes also example files for GH.

The idea of sampling a surface is described in the documentation e.g. see page 6:

Laurent has the described the approach also here:

Another approach could be to turn the polysurfaces into meshes (or one unified mesh) and then use the thickening component of Weaverbird or Pufferfish e.g.

1 Like

Can you scale the original hull down and then cap the too edges?

The volume solution did not work, I think maybe I deconstructed the polysurface the wrong way because the only points I got was the vertixes between faces.

The mesh solution is kinda working but now I have a bunch of naked edges (there is 1 naked edge and it is very small I can barelly get to see it on rhino graphics) and 100+ manifold edges to fix. I tried baking it and using repair mesh but it did not end well.

I am new to grasshopper so I am slowly making progress.

The hull is already on the printing size, I even tried closing it ontop and shelling it, but with no succes

Now I tiped it out loud, I wonder if remove the scaling and turn into a closed mesh/polysrf first it would work…

No there is no magical Grasshopper solution for what you are doing. If there was, it would be a Rhino command already. It’s a complicated modeling problem.

The solution is that you don’t actually have to shell objects for 3d printing. Make it a solid volume, and the slicing software can provide the number of layers of solid plastic in the shell you want.

The thing is, I need to create the shell so the hull gets its thickness represented in scale as well, because later I will have to print other components that go inside the hull, I can’t have the top of the hull closed.

My frustation is that mesh offset is not working, surface offset is not working as well, and every result gives me tons and tons of remeshing/resurfacing to do, and the thing was supose to start printing today, and my shift ended 3 hours ago and I am still fighting to get it done

But anyways, thank you all for the help, I will try to find a way.

Maybe if i managed to generate neough points from the surface the Volume solution would work. Gonna look into that

Unfortunately I am aware of the issues you’re dealing with and…yeah there is no quick fix for a complex model that hasn’t been properly cleaned up for scale printing. You almost have to re model it. Garbage In Garbage Out, and you’ve been handed a pile of crap.

1 Like

I still find odd that I have to make a watertight model at all to 3D print

I mean, why can’t I just use the surface as coordinates and add a thickness on the printer? It is a thin print, last one I 3d printed the difference between 0% infill and 100% infill was like 5 grams of material :frowning:

What I mean is scale it by about 0.95 so the scaled surface sits inside the original. (6.5 KB)

Ok. Scaling it down worked fine after a few adjustments

Now I have a closed polysurface. However. The mesh is still misbehaving and despite looking right on Rhino. It has some missing pieces on slic3r.

Thanks for your help Jim.

Scaling will result in varying thickness for shapes other than spheres.

It was far from perfect. But at least I have a closed brep to work with now. The mesh is still needing some fixing. But it is way better than it was for a start.

Yeah but presumably they are only interested in the outside surface so perhaps it doesn’t matter?

Some slicer software can add thickness i think. I suppose you could slice the original surface in GH to get contours, then offset these contours and loft to a surface if it only needs to be a crude inner surface. You’d have a hole to patch at top and bottom.

You might have to adjust your STL mesh export settings to get a mesh that Slic3r can work with. If there is a lot of small detail on the original surface this might not translate into an STL if the settings are too coarse.

Following you ideas I manage to find a way of doing it.

First I scaled down the hill by .97 and closed it manually and trimming where necessary.

The mesh was still a mess, but I managed to export as solid Bodie to SolidWorks, where I fixed some stuff using diagnostic import.

Then I saved as STL and opened o slic3r. But the mesh was still kinda exploding and missing stuff.

So i oppened the stl on rhino again. Did a 0 mm mesh offset of the external geometry. It was a good mesh but open. so I deleted the original stl mesh, and did a offset with 30mm solid on to the inside. It was a bad mesh but with few errors.

Then I did extractmeshnonmanifoldedges, fillmeshholes like 5 or 6 times until it was closed and manifold.

Meshrepair did the final trick removing duplicates and stuff and fixing the 3 non manifold that returned.

There was a region too thin for slicer. But I did a bunch of cubes, meshed and Boolean joined then.

Worked like a charm. Left the company on time today and with the printer half way done.

Just need to repeat it for other 7 parts I need to prin

PS. Thanks for the help martyn

The Prusa version of Slic3r has some nice additions that can significantly improve 3D printer results. One is it’s ability to fix STL file errors and save the fixed data as an OBJ file. Then I just import the OBJ file and save it back as an STL.

Thank you, I will give it a try

Hi Altamiro,

If surfaceoffset_solid doesn’t work, could a variableSRFoffset work? I’ve used this to trim the inside face of boat frames, which are thicker at the bottom. However, with my model, the surfaceoffset also worked for the hull thickness.

If you surfaceOFFSET half of the hull, then mirror it and trim the intersecting surfaces?

Hmm. I did not try the variable offset command.
But I guess it has better chance of working.

From my understanding the problem was that some surfaces where being “eaten” by the thickness. Because if I exploded it and tried with single surface it always worked but then the boolean union failed in various spots.

I managed to get a way around in one of the hulls but I will try with the other first thing tomorrow.

As for working with half the hull. Every time I have to fix something my first move is erase the starboard of the diametral plane (not sure if the translation to English is correct) and work with Port side. And then mirroring it back.

Thanks for the tips.