Region intersection problem

Hi,
I have a question about how to make RInt (region intersection) component work.

I’ve seen some threads discussing the use of the component for separate streams of data.
I’m having an issue where I wish to generate the intersections between two lists of groups of curves.

I have made this work before, with pairs of lists which had different quantities compared to what I’m dealing with now however they were still two separate lists.

Long story short I have 18 trimmed breps and 18 groups of closed curves representing what will be perforations on a panel (each brep is a panel). I want to generate the region intersections using the edges from these 18 trimmed breps against the 18 sets of curves.

Here’s a sample file:
MCXRINT.gh (1.5 MB)

Note: Trim With Regions seems to work correctly however that returns open profiles as opposed to the region intersection result I wish to obtain.

I thought isolating (first) the actual curves that are intersecting would do it but it didn’t. Before that I was simply feeding the Region Intersection component all of the curves for the operations. Both ways did not allow me to get the result. What am I missing?
image

Thanks for looking at it. I appreciate your time.

RC

I think the problem comes with the Set component

if you make a Set of the indexes of the iA and iB that come as output from the MCX component, then you are losing the item-to-item corespondance -maybe- ?

for instance, what I would do is Join Text of iA and iB with a “-” separator, so you get pairs of indexes that intersect
then use Set on that new list
and at the end get back the index pairs with Split Text using the same separator

something like this?


MCXRINT_Re.gh (1.5 MB)

I honestly didn’t spend much time investigating what’s the issue with Boundary Surface turning orange .__. it happens often lately

1 Like

As always, thank you Inno, for looking into this.

Not quite, although you did manage to get something out of it (Region Intersection component).

The result(s) around exterior edges of the panel should look like this:

The result(s) where perforations intersect with panel holes should look like this:

Seems like RInt doesn’t like it when one of the input lists contains multiple regions (holes) inside a larger region (panel edge).

I did a test to visualize this matter:
MCXRINT_test.gh (1.5 MB)

Copying something similar to what happens on this topic didn’t give me favorable results either. :thinking:

Thanks - crossing fingers for next aha moment.

This is the sacrilege I end up doing for now:


Slow but better than nothing, I guess.

Maybe grasshopper needs a set of ‘region’ components that allow for multi-region operations - just like there is “trim with brep(s)” or “with region(s)”, same for splitting.

Clipper give an acceptable result

1 Like

ahh, I didn’t really understand what you were trying to achieve :slight_smile: I thought you only wanted to Region Intersect together the curves that were intersecting with MCX


from this image looks like you want to contour the original surface in such a way polygons to be subtracted are never intersecting existing “original surface’s” features like this?

as @anon39580149 suggests, Clipper is really a game changer in these cases


MCXRINT_Re_Re.gh (1.5 MB)

maybe another filtering based on polygon_area / distance_to_external_border ratio is needed, to get rid of tiny particles that were generated in the process…

2 Likes

I meant to say thanks, to both of you @inno and @anon39580149.

This is one of those dead end situations, I guess (unless I split one set of curves {perforations} with the other set, then split that set with the perforations, then join all fragments). Plus, one of those seemingly ignored or forsaken things that haven’t gotten solved. In this topic, the same solution is chosen: use clipper. On this other topic, also cited in a reply above, you (@anon39580149) show a rather simple solution - if I attempt to imitate what’s shown there, grasshopper simply freezes indefinitely - most likely due to the amount of curves in the sets?

It seems I have to resort to Clipper 2, or play the slow game with solid intersection(s) - which is an ultra counterproductive workaround. My intuition tells me one must separate the sets of intersecting curves, leaving out those not intersecting with anything, then proceed with Region Intersection - nonetheless it only works with the panel edge (many intersecting one), but it doesn’t work in the case of multiple intersecting multiple (panel holes intersecting perforations).

image

Best to you guys

1 Like

Please excuse continued replies.

After shaming “Split brep multiple” earlier in this topic:

And after plug-in resignation, it (SplitMul) eventually saves the day here:


“Who would have thought”, right…?

LoL

Right, now I ('bit more satisfied, not really :stuck_out_tongue:) just do that and some offsets.

Thanks for your help and patience!

1 Like


I’ve given up - I was on other projects since this post. Came back to it and cried again - no matter the work-arounds (nor the unnecessary resistance to using a plug-in for something I think I can handle without ‘help’), I accept. I will forever use Clipper for something like this from now on. Although I have been perplexed for another eternity as to why GH simply doesn’t have this power when it has other mind-blowing capabilities, I now decide to shut up and finish the damn project. 'Done waiting for RUnions and RInts and Ranything to produce nulls.


I kept resisting because I didn’t want to convert curves to polylines in favor of CNC travel paths, but it’s fine now.

Sorry for the random rant, lol - I’m just making sure it’s in writing so I don’t leave the forum and go back to my stubborness.

Thanks

1 Like

image

welcome to the dark side

wouldn’t you -at a certain point- had to transform curves to CNC_polylines anyway?

1 Like

Yes I remember - when splines weren’t available as export and for certain compound curves I would go with polycurves w/bulge arcs - but today the only thing bulging was my frustration vein on the side of my forehead :rofl:

1 Like