How to imprint the face of a solid on the face of another one!

Hello,

I have two solids that are tangent, they have at least a face in touch. The faces in touch of the two solids have different areas:  the face of one solid (the vertical one) has a bigger area than the face of the other solid. I would like to imprint the smaller face on the bigger one, so that the original solid(the vertical one) must be modified, it should have new edges and\or faces. The resulting solid should not be a compound. What is the best way to do such operation? Can you give me any suggestion?

 

Attachments: 
Benjamin Bihler's picture

If you have a wire around one face you can split a shell (or face?) like that at the wire:

BOPAlgo_Builder generalFuseBuilder;
generalFuseBuilder.AddArgument(shell);

TopoDS_Wire orderedBorderWire = orderWire(boundingWire);

generalFuseBuilder.AddArgument(orderedBorderWire);
generalFuseBuilder.Perform();
const TopoDS_Shape& fusedShape = generalFuseBuilder.Shape();

orderWire() uses ShapeFix_Wire::FixReorder to order the edges of a wire. This is only one part of your task, but I hope that it helps you.