BRep_Builder::Infinite Parameter for BRepFeat_MakePrism
I am getting the above error message. This is what I am doing. I have:
a) a circular wire
b) a cylindrical face (just a segment, not the whole cylinder)
and I want to project the wire on the surface (not on the face because that is smaller than the wire)
1. Get unlimited surface of face: BRepAdaptor_Surface adapt(face, Standard_False);
2. Iterate through all edges of the wire (there is only one, of course)
3. Get curve of edge: BRep_Tool::Curve(edge, min, max);
4. Extrude curve: Geom_SurfaceOfLinearExtrusion(curve, dir);
5. Intersect extruded curve with surface: GeomAPI_IntSS intersector(extrudedCurve, surface, Precision::Confusion());
6. Build edges from intersection lines: BRepBuilderAPI_MakeEdge mkEdge (intersector.Line(i));
7. Build projected wire from edges: mkWire.Add(TopoDS::Edge(mkEdge.Shape()));
8. Build projected face from wire: BRepBuilderAPI_MakeFace mkFace(adapt.Surface().Surface(), projectedWire);
This all works fine. But when I use the projected face for
I get the BRep_Builder::Infinite Parameter error.
Just the projected wire itself looks fine, though I noticed that is is built of 3 segments (2 quarters, one half). The face builds fine but is not displayed in my application (!). So it seems that this face is the problem, but I don't know how to find what is wrong with it if it is not displayed...
FYI, if I use
BRepProj_Projection proj(wire, face, dir)
everything is fine but of course this only works if the projected wire fits inside the face.
Do I need to ShapeFix() the face somehow? If yes, how?
Thanks for any help!