Ship hull 3-D design with Rhino-python


(Vishalg2235) #1

My project is to design ship hull 3-D model using offset table and then generation of hull geometry and hyrdrostatic curves for different length, depth and breadth parameters for drawing so much geometry I decided to make program(preferably in Python) of it. My professor recommended me Sesam’s HydroD and GeniE software and Rhinoceros software. Please help me as I’am beginner in Rhino-python.
Thanks !



I don’t have a big experience as developer of plugins, but I have made some ship hulls in Rhino and transfered them in different forms to other software by my scripts. Generally if I undestood well your input is frame table, which is simply set of points in space (on frames). Ideally you would like to have hull as nurbs surface, since then you can do anything with it. Basing only on points automatic generation of such complex shape will be at least difficult, or even impossible. Maybe for some typical shapes you could manage to prepare such algorithm. Most of the time creating nurbs hulls from frame tables is manual tweaking, looking for perfect topology, and each hull is different. You maybe want to take a look at rapid hull modeling method by Gerard Petersen and rhinocentre. This method might be some start:

I did not work much with Sesam much including GeniE but maybe they could work with mesh instead of nurbs surface? Hull shape in form of mesh is something that could be automically created from set of points on frames.
I often export shape to hydrostatic software in form of points list in correct order, which creates hull shape from it in form of mesh.

Theorithically you could convert mesh to nurbs, but this method created nurbs patch from each mesh face, so perfomance is very low and I would not go that way.

First of all you need to decide in which form hull should be represented.

Btw I see that often maritime universities force students to work with DNVGL Sesam software as form of free testers, because its not worth its price (or at least some parts of it) and nobody wants to buy it.


Hello @vishalg2235
Your task is a typical for many retrofit projects, when old Hull Lines are available and need to be transferred to the new system. However, there is no magic button to convert Offset table to good-quality hull. According to my experience - manual work is always required. This of course depends a lot on the complexity of the hull.

I would recommend you to create a basic hull model by fitting NURBS over points from Offset table.
Once you get a hull created from surfaces, you can do many things, including scaling in any direction and etc.

If you are not familar with Scripting - actually using of Grasshopper (now built-in in Rhino) can be a good approach.

Not sure for what purpose do you need GeniE but suppose it relates to FEA.


(Vishalg2235) #4

Thanks for the replies @mlukasz87 and @Dmitriy !
I was planning that at first I will make basic hull from points. I was thinking of breaking hull in 3 main parts (forward,mid and aft) then ‘mid’ will be having constant section, in ‘forward’ I will break it into decks, bulbous bow,etc and similarly ‘aft’ into there complex parts and make there NURBS surface separately and finally join them.
Do you think it will work?


Hi @vishalg2235,
This is a good approach and it will definitely work. Especially if you have a parallel midbody.
As I see it - Grasshopper can be a very fast and easy to adjust overall dimensions.
if you are looking for Hydro only - then you don’t need any additional plugin.
I can help you to get a quick GH setup for this, but the hard core - creating of initial surfaces - you need to do on your own :slight_smile:

What kind of ship are you talking about?

Kind regards,

(Vishalg2235) #6

@Dmitriy I have worked in Rhino but have no knowledge of GH. I will appreciate any help that you offer. Will it GH setup can be further hard cored in python?
The ship are 60-100m in length, 6-12m depth and 15-20 breadth.
Thank you.


Hi @vishalg2235

Grasshopper (GH) is a kind of environment inside Rhino where any parametrization can be easily made without any need of knowing how to write scripts.
Moreover, if really needed - any script can be written in GH script component.

As mentioned - I can help you with setup in GH but at first you need to create initial hull shape from points.
I recommend to start with aftbody and forebody and get to parallel midbody at the end (this is easy part)

Would be nice if you can share at least the screenshot of the offset table in 3D - I mean offset points transferred to 3d points in Rhino. And btw - you can open point files in Rhino if I am not mistaken.

Kind regards,

(Vishalg2235) #8

Okay! I have to make hull shape from points in Rhino with or without python?
Right now I don’t have offset table. I will show it to you in 2 days.


No, you just need to create regular Rhino Surface/Polysurface objects.
Afterwards we can reference those to create a watertight hull and perform transformations as you need.

(Vishalg2235) #10

@Dmitriy what constraints should I have to take while scaling of various regions, like: corner curve of midship, stern and bow curves. Or they will be scaled proportionally.

(Vishalg2235) #11

My area of work is Anchor handling vessels and I have to get hydrostatic curves of various different length ships from only one offset table.


Hello @vishalg2235, this depends a bit.
I recommend you to start with some part of the hull - like aftbody.
First, you need to define how to represent certain part of the vessel with minimum number of surfaces.
As for scaling - this can be considered later, at first you need a ready shape.

Do you have a offset table already? You can probably post a screen-shot of imported points here.

Kind regards,

(Vishalg2235) #13

I will get the offset table by tomorrow then I will post a screenshot of 3D plotted points.