first I think the process the OP described was not the best way to solve the problem. If I wanted to cut lots of holes into a plane I would probably setpt the curves to the plane and then use split.
If I wanted to cut holes into a none flat surface, I would project curves to the surface and then split. if splitting crashed the computer, I would do the process in smaller groups or consider manually using trim until the object was complete.
To answer the question about performance however, I would suspected large sets of Booleans would be more likely to succeed with more system ram on a 64bit system than anything else. I don’t believe Boolean uses the videocard to crunch numbers at all, so a processor may also help if plenty of system ram was available.
Sorry, I’ve been so busy I haven’t had time to try Mitch’s script. Looking forward to do so.
The reason I think booleans is the only way to do this - imagine a child’s ‘shape sorter’ - it has two components: the sorter and the shapes. The negative spaces of the sorter have to fit the shapes with good tolerance.
My project is like that. It has a complex curved surface (to be carved out of sheets of 4’ x 8’ 6" high density foam on a CNC machine then assembled) with hundreds of shapes cut out of the surface. The shapes are actually objects, some of which will be inserted randomly into the holes. I’m not confident that projecting on to a surface will result in the kind of accuracy I need. It seems to me that using the actual shapes to boolean the surface is a more dependable way to go. What I’ve done is scaled up the ‘objects’ by 1% so that the negative space will be slightly larger to receive the actual objects.
I can’t show the real item because of NDA (which, incidentally, I think is ridiculous 99% of the time) but this image might explain:
a) Offset your extrusion base curves instead of scaling. That will make for a more exact fit and tolerance.
b) Projecting a curve to a Surface will give you exactly the curve, that would result from exruding the curve in the projection direction and then intersecting that extrusion with the Surface. That’s exactly what your current workflow does just without creating the solid extrusion.
Since you want to remove tiny cut-outs from a larger Surface, the solid intersection will basically result in a split operation with the inside part deleted. You could just project, split, then select everything but the largest surface and delete that. That sould consume less memory, take less time and might give more stable results.
It seems you have a “wall” with a given thickness, so you would need to cut holes into both inner and outer layer and then loft between the holes borders in order to maintain a solid object. That’s the only point where a solid extrusion/Boolean approach might give nicer results since the loft between two complex curves will probably result in a more complex surface than the constant extrusion of the unprojected curve trimmed with both projected curves.
The actual pattern is floral and is composed of hundreds and hundreds of elements. Selecting them all and lofting would probably be very time consuming and, because the surface is curved and the elements are very close together, I think it’s likely Rhino wouldn’t always connect the right elements.
Boolean worked. I did it in about 8 groups. A bit time consuming but it gave me a stable result that can be reviewed in the next technical presentation.
I have yet to use a plugin so I was reluctant to do so in the days leading up to the first review. Now that I’m done and the material is presentation ready I’m going to copy the file and try Mitch’s script. Looking forward to that.
I’d probably have attacked that problem with Grasshopper or Scripting anyway. No problem to identify the correct pair of curves there…
Scripting the whole process would be my most probable way to go, if you want to spare resources. You wouldn’t have to create and maintain a bunch of extra geometry but only have one extra extrusion at a time.