Dividing curved surface into two flat surfaces

Hi guys, I was designing a little bird and have been drawing wireframes first and made surfaces out of them.

After this I could ‘judge’ the volume of the shape by eye/feeling and I have moved around the points (F10) to get the correct voluminous shape I wanted. However, of course, after moving the points, the surfaces weren’t flat anymore, but they had a curve:

Now what I am looking for is a command that can split the curved surfaces into two surfaces that then look like this:

I hope it’s clear, already tried every combination there is in the menus so there must be something I’m missing. I am pretty sure this is probably some very simple thing to do. Like ‘flatten and split surfaces’ or something.

Let’s hope there is a way!
Thanks for your energy,

Here’s a somewhat convoluted macro that may help:

! -Mesh _Pause _DetailedOptions _AdvancedOptions  _Angle=0
 _AspectRatio=0  _Distance=0  _Density=0  _Grid=0  _MaxEdgeLength=0  _MinEdgeLength=0.0001
_SelNone _SelLast _TriangulateMesh _SelNone _MeshToNurb
_TrimTriangularFaces=_No _SelLast _Enter _SelPrev _Delete


Hi Pascal, so as I was already thinking, Mesh should be made from the NURBS first?

I’m sorry if this was unclear, the file I made is a NURBS file without meshes.

Yeah, the macro will create a temporary mesh from the surface, convert to a polysurface and then delete it - try it on one of them and see.


Thanks, it created four surfaces though, I was hoping for a way to produce the least amount of surfaces possible. Could I play with parameters in the macro?

My quick tests get two surfaces - can you post one of your surfaces?


Sure, heres the result:

What I’m aiming for is this:

Hi Marinus - Please post a file with the surface, I cannot test an image.


I’m sorry I didn’t understand. Here it is.
The surface from the picture, isolated.

birdsurface_forum.3dm (81.5 KB)

Yeah… The initial mesh is not simple enough - hold on, a different, simpler, macro:

! -DupBorder _Pause MeshPolyline _SelNone _MeshToNurb
_TrimTriangularFaces=_No _SelLast _Enter _SelPrev _Delete

Though it seems to choose the ‘wrong’ direction to split the mesh into two.


Indeed, this seems to work better. Is there a way I can implement a function where it deletes the temporary mesh and originally selected surface that was split?

You can do this by naming the surface, then selecting it by name and deleting, but at that point it is better to make a proper script in Python. I was trying to get out the easy way…


Thanks a lot, I can try and learn to make a python script. I will look for resources on how to learn that!

Hi Marinus - see



Thanks, I had found those same pages too :wink:
Very helpful, I like to learn!

I’ve just set up my ‘Textwrangler’ coding program for a new python doc.

Here’s my first try for a script, it doesn’t work as intended, and I copied parts of it from the ‘CopyObjectsToLayer.py’ example script, but I feel like I am getting somewhere!

rhino_splitsurfaceintwo_v1.py (533 Bytes)

And heres the error:

I’m now trying to make this with Atom, I have the autocomplete installed etc, but I notice not all commands that I see in your script can be found in the Atom editor. Are they named differently?

The commands are named different in Python, you cannot just use the macro commands.

For example DupBorder is actually DuplicateSurfaceBorder

I am no expert in python, but start here [RhinoPython][1]

I am not sure how many surfaces you have to repair, but in your first image, I would just delete the surface and draw a line from your top point to your bottom point and make a flat surface with Surface from 3 or 4 corner points or 2,3or 4 edge curves.

You can also look here on the new [Developer Docs site][2] Clixck on the Python tab at the top.

IHTH «Randy
[1]: http://4.rhino3d.com/5/ironpython/index.html
[2]: http://developer.rhino3d.com/samples/rhinocommon/edgesrf/