Old Town Roofs

Hi Guys!

I have to do a rendering of an old town, so I made a script thats draws my roofs (arround 400-500). It partially works as it should. But there are a few problems which I dont understand.

Basically I repoduce the process which is shown here: https://geometrie.uibk.ac.at/elearning/dachausmittlung/2_1_Dachausmittlung-3D/2_1_Dachausmittlung-3D.html

My approach on that is, that im offseting only once and connect the corner points by an SDL line. If they are intersecting i make a 3-Point surface, else i’m doing a Sweep2. In the end I merge everything together (3-Point Surface, Sweep2 and a Boundry Surface of the base curve) and make a boundry volume which fails in some cases.

My other proplem are the second set of corner point for the SDL. In some cases there is one too much or they are not sorted correctly( I already tried “Sort along Curve”).

I attached the script and a few examples of the base curves. I hope somebody can help me.

Thanks in advance

FORUM.gh (25.3 KB)
Forum.3dm (163.2 KB)

I reminds me of the work “Sand dune/Medial Axis” done by Laurent Delrieu which is similar to what you are doing.

It is not an easy task. One more robust but less beautiful will be to mesh the surface and move the point proportional to the contour.

Another way is to use clipper that is good at offsetting. And then … Still a lot of work :confused:

With mesh it gives that

sand dune using mesh.gh (18.6 KB)

A version using offset from clipper so 3 types of roofs

sand dune using clipper v2.gh (26.7 KB)


I updated “Sand Dunes” “Roof Generator”

A version now works for RH5 and RH6
It works quite well, still some problem but round and butt are quite good.


great work Laurent. Do you have a link to the file?

The link is here.

But here is the file
sand_dune_csharp_RH5_LEGACY.gh (18.0 KB)

sand_dune_csharp_RH5_different_angles.gh (28.1 KB)

I also did a multiple angles roof generator



Hi, lately I been using Laurent’s component for creating a Medial Axis “Roof”, I been having problems when changing the base curve, sometimes the component fails and shutsdown Rhino, I was wondering if some one knows why that happens, I can only imagine that it have to do with Rhino’s memory, or that the script keeps on running in a loop.
I been using it for creating a straight skeleton from a polygon, I have found other components that do the straight skeleton algorithm but they all seem to fail in a similar way, the Laurent one for me know is the best way to do that calculation, it would be nice to have a version of the Laurent’s component that only do the the skeleton part without creating the surface. Thanks

1 Like


Some new work on this script, still lot of work to do to make a better script that allows inner parts. It works but it is not optimised nor clean.