Brep Split with large number of curves


I need to create same perforated panels for an architectural project. Every panel has about 2000 Holes in it. I know this is a lot… The layout of the holes is done in grasshopper, basically generating curves on surfaces. When I try to split a single surface with all those curves it takes up to 10 mins until calculations are done. Doing this for like 100 Panels is not really an option and probably file size would go though the roof.

Is there any other way to speed up this process and at the same time have a geometry with actual holes in it ?

The only other way I see otherwise is exporting curves on surfaces for coordination with consultants and generating custom alpha maps per panel in grasshopper which could then be used for rendering.

Many thanks,

Hi Philipp- does this pattern need to be cut into the surface or just convincingly look like it is cut into the surface?

@PhilO, is the splitting being done in Grasshopper or Rhino?



Worked before with holes in surfaces. Flat and curved surfaces, but it never takes very long. Are the curves/surfaces complex i.e. lot’s of controls points and spans?

Splitting 2000 projected circles on a double curved single span surface takes about 10 seconds.

Splitting can take longer on polysurfaces.

Hi Pascal,

I did the splitting in Rhino. I tried again using about 3000 Closed Curves with a moderate complexity on a flat single surface. I am running a quite fast dell notebook with an i7 quadcore + 32gb ram - just to give you an idea of the hardware. It took now 7 mins without having any other major task running.

I guess splitting in rhino is not multithreaded, is it ?

Definitely better to have it cut into the surface.
Below screenshot of the curves :

Let me know if you have any ideas how to speed this up.


OK, so if I Simplify the Curves the time for the splitting goes down to 3 mins from 7 mins… for 200 panels… that would take far too long still…

Try: DupBorder on the surface (assuming it is planar) then select the curves and the border curve and run PlanarSrf. Any better?

@PhilO can you send us a file with the surface and curves? Thanks.


hey, just tried… back to 7 mins…


It takes me 30 seconds to split the surface in the file with the 2500 curves. Is it much different for you?2500Curves.3dm (1.3 MB)

Hi chuck,

yes, it is for me about 30 secs with your file.
From your file to mine I see 3 differences :

  • my surface and curves are on some plane a bit away from the origin of the file, yours lie within XY Plane around the origin.
  • my file is meters with a tolerance of 0.001, the smallest perforation being 0.005 meter - your document is in millimeters with a tolerance of 0.001, the perforation being also around 5 mm.
  • your perforation curves are all the same consisting of a single closed nurbscurve, some of mine are combined arcs and lines (see screenshot above).

I copied then my example into your file. I experience a speedup to approx. 2 mins for the splitting with 3000 Curves.

Could the speed difference from one file to the other be related to tolerances in relation to geometry scale ?


Yes, tolerance relative to scale would be a big factor. Also, if your objects are far from the origin the number of significant digits in the calculation is decreased, making it more difficult to create a curve that is within tolerance. I can’t be sure without seeing the file. If you’ve already sent it to tech or directly to Pascal, I will probably see it tomorrow. Otherwise, if you can share it you can send it to me, chuck@mcneel,com. If I get it in the next 30 minutes, I’ll look at it tonight (It’s 9:40 pm here).