I am trying to do a simple boolean operation in 2d. Essentially, all I need is the common area between a circle and another face. Unfortunately, I could not find any algorithm that would do this directly in 2d. Does anyone know an algorithm here?
Then, I tried to produce 3d TopoDS_Faces from it and use BRepAlgoAPI_Common to get the common part. In 99% of the time, this works, but for a small percentage of seemingly innocent faces, the algorithm fails. Is there a better way to do this?
I've posted the code below. I am using OCC6.7.1 with the C#-wrappers.
Thanks for the help.
Geom2d_Curve Circle_tragend = new Geom2d_Circle(new gp_Circ2d(new gp_Ax2d(Schwerpunkt_gesamt, new gp_Dir2d(1, 0)), Durchmesser_tragend / 2.0, true));
BRepBuilderAPI_MakeWire circleWireTemp = new BRepBuilderAPI_MakeWire();
circleWireTemp.Add(new BRepBuilderAPI_MakeEdge(GeomAPI.GeomAPI.To3d(Circle_tragend, xyPlane)).Edge());
TopoDS_Wire circleWire = circleWireTemp.Wire();
TopoDS_Face circleFace = new BRepBuilderAPI_MakeFace(circleWire).Face();
BRepAlgoAPI.BRepAlgoAPI_Common schneiden = new BRepAlgoAPI_Common(circleFace, Face);
TopoDS_Shape tragendeFlaecheShape = schneiden.Shape();