Some questions about Boolean operation


I need a function like imprint.

“1” and “2” are open surface.
I want one operation to Boolean “1”+“2”=“A”+“B”+"C"
I can use Boolean difference+intersection
If any simple function?
How do I do?

Best Regard,


Maybe something like.

  • Dupborder both.
  • Use the curves to split the other
  • Now you have A, C and 2 times B. Delete 1 B and done.
    Dont know if its easier xD


If the surfaces are in the same C-Plane you can use the command split. Split each surface from each other.


There are two surfaces in the 3dm file
BooleanTest1.3dm (52.5 KB)
I use RhinoBooleanDifference and the result is ok

I use RhinoBooleanIntersection and the result is incorrect(like Boolean union result).

The tolerance of RhinoBooleanDifference and RhinoBooleanIntersection is the same tolerance=1e-2.
Why the RhinoBooleanIntersection result is incorrect?

ON_SimpleArray<const ON_Brep*> BrepArray1;
ON_SimpleArray<const ON_Brep*> BrepArray2;

bool bResult = false;
ON_SimpleArray<ON_Brep*> OutputBrepArray;
if ( !RhinoBooleanIntersection( BrepArray1, BrepArray2, 1e-2, &bResult, OutputBrepArray, false ) )
	AfxMessageBox(_T("Intersection failed"));

int iCount = OutputBrepArray.Count();
for ( int i=0; i<iCount; i++ )
    	ON_Brep** pBrep = OutputBrepArray.At(i);