Some questions about Boolean operation


#1

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,
Vaker


#2

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

#3

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


#4

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;
BrepArray1.Append(pBrep1);
BrepArray2.Append(pBrep2);

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);
    	RhinoApp().ActiveDoc()->AddBrepObject(**pBrep);
};