Solid Difference Failure

Hello everyone,

I’m currently working on cutting polygons with various surfaces. I’m using a specific data tree structure that I need to maintain due to the complexity of the overall problem. When I apply the cutting component, everything works well except for one particular opening. I’m having trouble understanding why this is happening because all the openings are created using the same point structure. I’m searching for a reliable method to perform these operations consistently.

I’ve attempted to recreate the cut using both the Python and C# components, but unfortunately, it’s not working as expected.

Any assistance on this matter would be greatly appreciated!

Solid Difference Failure.gh (10.5 KB)

missing

It appears to work correctly for me in R7 so might be a tolerance issue? ‘View | Display Options… | Units | Absolute tolerance’ = 0.001.
P.S. I take that back, one of the “opening” surfaces fails, as @kev.r has explained below.

However, these are flat surfaces, not “solids” with thickness, so RDiff (Region Difference) is more appropriate. It works too except you have four branches in Slabs. Outline Surface and only three branches in Slabs. Outline Surface.

1 Like

Besides the issues @Joseph_Oster pointed out, one of your surfaces if flipped in orientation compared to all the others.

This is the surface that is not being cut out. If you flip it (or construct it in the same way as all the others) you will get the result you’re expecting.

-Kevin

2 Likes

Thank you for your answers, that is right…flipping the surface solved the problem :slight_smile:

@kev.r

Again the solid difference component is messing with me. In this case I have all the normal vectors pointing towards the same direction. Any idea about how to solve this case? @Quan_Li

Solid Difference.gh (13.5 KB)

Thanks in advance,

Regards

Curious. Especially what happens when the ‘W’ (Wrap) input on List Item is inverted.


Solid Difference_2024Feb14a.gh (15.0 KB)

‘W’ (Wrap) input on List Item inverted. (False instead of True)

1 Like

It seems that it has to do with the odd data structure you are using (missing branches).

If you replace the missing branches with empty branches this is what you get:

240214a_Solid_Difference.gh (13.5 KB)

The empty branches produce empty branches at the output of the Solid Difference component and the warning “Second Brep set is empty” but the branches that each contain a surface produce the expected outputs.

If you use the Region Difference and Boundary Surfaces components, I think it produces the results you are looking for.

240214b_Solid_Difference.gh (14.7 KB)

I think that if you look at the way you’re producing these surfaces, you could come up with a better workflow (as suggested previously by @Joseph_Oster).

-Kevin

2 Likes