# Creating Planar Curve from Non-planar curve

Hi, I am interested in mapping a 2D Voronoi pattern onto a curved surface and extruding it afterward. However, unlike a Weaverbird Mesh Thickening, I would like to extrude planar surfaces since, in the end, I would like a faceted Voronoi on the curved surface.

My script is uploaded here. At the moment, I have the Voronoi pattern mapped onto a surface already, but since the surface isn’t flat, it is creating non-planar Voronoi cells. How do I transform them into planar cells? Or is there a different way I can create a Voronoi on a doubly curved surface?

sheet fabric paneling.gh (42.9 KB)

Since the mapped vertices (per cell) are obviously not co-planar AND if you want a “continuous” faceted result (kinda like the stuff that the facet dome on a sphere does) you must triangulate the vertices … otherwise there’s no solution possible.

If on the other hand the “curved” surface is portion of a sphere … well … use the facet dome on the first place as it is.

Plan B: You can create solids by offsetting BrepFaces (Brep.CreateFromOffsetFace(…)) both sides at once and then trim these (planarize so to speak) with a suitable plane (Plane.FiPlaneToPoints (pts) where pts are the cell’s vertices). This yields solids with the “outer” (facing outwards) BrepFaces planar.

Mind that this could make a result like the Thing’s skin (visible gaps between the solids):

2 Likes

Spend a couple of minutes on that one. Offsetting BrepFaces and doing trim stuff on solids is 100% out of question (Rhino takes days/weeks/months/years to do it, forget it).

Thus > Plan C: Here’s the fastest way by far to do a similar thing (but still since solids are finally involved AND since Rhino is just a surface modeler is VERY slow)
Morph_VoronoiPolylinesAndThicken_V1.gh (29.1 KB)

Thank you! That is exactly what I was looking for!

NOTE: Depending on topology (convex/concave) you may encounter non manifold solid issues (But Rhino being a surface modeller is not very sensitive to similar issues). Of course I could address that properly with a lot of checks (in the final right most part that does the solids - that’s basically the main reason for using code instead of native stuff ) … but is it worthy the effort? No if you are sure that your surface is “suitable” for the job.

NOTE: Since Morph to surface accepts domains … well … “technically” the surface in use (target) for the normals/new points et all is the trimmed part. I’ll fix that smallish glitz soon. For the moment set domains to 0-1 (meaning: use the whole surface in U/V/W).