Grasshopper

algorithmic modeling for Rhino

 

Good evening, 

 

Could you please help me with a boolean substraction-ish operation of the type A(1 object) - B(7100 objects). 

I have tried it through different workflows, many many times, and each time it proved inefficient and generally torturous. Has anyone tried something like this before? Is it really that exceptional? How can I speed up booleans? I tried different approaches like split, trim, etc... it just takes too long, i think it's +1h for ~1300 objects. The objects are simple boxes. 

 

Thanks, even you're just passing through.

Views: 692

Replies to This Discussion

hmmm... can you give us more information about the geometry you're working with? I don't know if this makes matters better or worse from a standpoint of speed, but I have had success in the past trying to boolean sequentially (via scripting) instead of all at once: A minus B0, result minus B1, new result minus B2, etc.

if thats true.. then you can use hoopsnake (recursive plugin).

Just tested it with hoopsnake: Box surfaces cut with lot of little boxes, with Sdiff. Cut with first one, feed the result to next iteration, cut with 2nd one, etc.

I didnt notice a speed increase compared to using Sdiff directly with all the little boxes.

Perhaps I forgot some optimization.

Attachments:

Thanks for the definition Systemiq, 

 

I'm playing with it now. One drawback that I can find is that there is nothing like a step progress indicator. It's the first time I'm using hoopsnake, so maybe it is just me not eyeing the elephant in the room. Second thing is the incredible amount of memory this uses, it's quite funny actually. So far, I think it ran for 10 minutes or so, seems just as slow - I fed it about 240 cuts. 

Just plug a panel in the I output to check the iterations. And disable the Sdiff outside the Hoopsnake loop if you didnt already, its just for comparing times.

Took a few minutes to run with 489 cut shapes, using max about 700meg. Weird.

Attachments:

Hi Andrew, 

 

The geometry is very simple, imagine a flat box that extends rougly over 28 / 6 cm, and ~1mm in thickness. Now on the surface of this box I have pores I want to cut in the shape of squares, and these sum up to ~7100. I shall see if I can post a screenshot of everything.

 

I have no idea how to script that, sorry. But maybe could be a more optimized workflow - just feed one object B at a time, maybe that makes the math behind it more relaxed. 

 

I should emphasize that it is not about 'fault' in the operation, and rather a very slow calculation - the difference does eventually get calculated with no errors whatsoever, the only problem is the unbelievably inefficient, or unproductive time it takes to do so. I think the problem could be the proportion of the objects, one very large, and one very small (28 / 6 / .1cm vs. .05cm), maybe that does something funky to the bounding box calls, I have no idea. And one other thing I suspect is the number of faces in the object, as I progress to let's say 700 cuts, I have then created 700*4 new faces in the object. I don't know if this is indeed something of concern. 

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service