Split brep problem

Hello everyone

I have encountered a problem of cutting brep, why does the output cut brep not correspond to the shape? Please help me, thanks in advance.


split brep.gh (148.2 KB)


Your two breps do not intersect. I guess that’s what “MoveGeoToWorldOrigin” is for? Far better to do that yourself instead of relying on a plugin for that.

Is there any easy way to make them intersect?

Hi @tianci ,

I see a null in your Cutter list, and something odd is going on with your cutter bounds:

See bounding box:

Furthermore your objects are slightly misaligned (this is the most likely cause):

I would need to see further back in your script to help you troubleshoot why the cutter geometry is misaligned/not matching the object to cut.

That being said, we can still work with what you have provided, extracting the “cutter curve” and building a new cutter from it that we ensure intersects your object to be cut.

I’ve also included native components to replace your “Move To World Origin” plugin component. You can, of course, in Rhino type move command hit enter to accept the object bounds by default and then just type 0 and that will interpret it as 0,0,0 which will move it the the world origin.

The logic I added queries the bounding box at the specified UVW location (XYZ) and then moves from that point to the world origin.

Graph Space:

Model Space Result:

Hope this helps you!

20230829_split brep_Response_01a.gh (154.3 KB)


“easy way”? Do you want to understand GH? Whatever it takes…

When I moved one piece to the origin, split still failed. So I extracted half of the wavy curve, projected it to the XZ plane, extruded it to make a wavy cutting surface and split it with that.

split brep_2023Aug29a.gh (159.4 KB)

1 Like

I’ve tried creating a surface via waves to cut but I failed. . . Is there any way to use the same operation as isocurve on open brep?thank you

This is exactly what I want ! Is there any way to use the same operation as isocurve on open brep?thank you in advance

Hi @tianci ,

A brep is composed of surfaces. In your case multiple surfaces touching one another.

I rebuilt your original surface in Rhino with Sweep2 method to get a consistent “curtain” of the side panels, making the script cutting operations and division operations both more accurate and efficient.

While you can get isocurves across these surfaces it can get a little convoluted.

Take a look at this, I took a slightly different approach, dividing the surface by equal divisions.
(I assumed this since the form was symmetrical (almost at least :upside_down_face:)

The Panel Count Slider Determines the divisions:

Model Space (4 Divisions):

10 divisions:

50 divisions (tolerance slider set to 10):

Graph Space:

Probably an easier way to do this but I don’t deal with these kinds of forms often, or iso curves for that matter :man_shrugging:t4:

20230829_split brep_Response_01b.gh (318.2 KB)


Realized that the cutter planes were not sorted and caused some issues sometimes splitting the surface. I’m attaching an updated version of the script that fixes this.

Graph Space:

Model Space:

20230830_split brep_Response_01c.gh (324.8 KB)


Everything depends on how (and where) you construct geometry. Cutting surfaces or curves will fail unless they pass completely through what you are trying to cut - in all directions.

I have no idea how you created the cutting surface you gave us? Or why it was not aligned with the brep you wanted to split? Here is a different way that ignores your cutting brep and creates a wavy surface cutter using curves from the brep you want to split:

split brep_2023Aug30a.gh (150.2 KB)


Thank you for your help Michael

1 Like

You’re welcome!