diff --git a/src/SketchFeature.cpp b/src/SketchFeature.cpp index aa6b546..57675d4 100644 --- a/src/SketchFeature.cpp +++ b/src/SketchFeature.cpp @@ -54,7 +54,10 @@ void SketchFeature::buildShape() for (SketchObject* obj : m_objects) { if (auto line = dynamic_cast(obj)) { - lineEdges.append(BRepBuilderAPI_MakeEdge(line->startPoint(), line->endPoint()).Edge()); + BRepBuilderAPI_MakeEdge makeEdge(line->startPoint(), line->endPoint()); + if (makeEdge.IsDone()) { + lineEdges.append(makeEdge.Edge()); + } } else if (auto rect = dynamic_cast(obj)) { const gp_Pnt& c1 = rect->corner1(); const gp_Pnt& c2 = rect->corner2(); @@ -71,15 +74,17 @@ void SketchFeature::buildShape() other_corner2.SetCoord(c1.X(), c2.Y(), c1.Z()); } - TopoDS_Edge e1 = BRepBuilderAPI_MakeEdge(c1, other_corner1).Edge(); - TopoDS_Edge e2 = BRepBuilderAPI_MakeEdge(other_corner1, c2).Edge(); - TopoDS_Edge e3 = BRepBuilderAPI_MakeEdge(c2, other_corner2).Edge(); - TopoDS_Edge e4 = BRepBuilderAPI_MakeEdge(other_corner2, c1).Edge(); - BRepBuilderAPI_MakeWire wireBuilder(e1, e2, e3, e4); - if (wireBuilder.IsDone()) { - BRepBuilderAPI_MakeFace faceBuilder(wireBuilder.Wire()); - if (faceBuilder.IsDone()) { - faces.append(faceBuilder.Face()); + BRepBuilderAPI_MakeEdge me1(c1, other_corner1); + BRepBuilderAPI_MakeEdge me2(other_corner1, c2); + BRepBuilderAPI_MakeEdge me3(c2, other_corner2); + BRepBuilderAPI_MakeEdge me4(other_corner2, c1); + if (me1.IsDone() && me2.IsDone() && me3.IsDone() && me4.IsDone()) { + BRepBuilderAPI_MakeWire wireBuilder(me1.Edge(), me2.Edge(), me3.Edge(), me4.Edge()); + if (wireBuilder.IsDone()) { + BRepBuilderAPI_MakeFace faceBuilder(wireBuilder.Wire()); + if (faceBuilder.IsDone()) { + faces.append(faceBuilder.Face()); + } } } } else if (auto circle = dynamic_cast(obj)) { @@ -93,12 +98,15 @@ void SketchFeature::buildShape() } gp_Ax2 axis(center, normal); gp_Circ circ(axis, radius); - TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(circ).Edge(); - BRepBuilderAPI_MakeWire wireBuilder(edge); - if(wireBuilder.IsDone()) { - BRepBuilderAPI_MakeFace faceBuilder(wireBuilder.Wire()); - if (faceBuilder.IsDone()) { - faces.append(faceBuilder.Face()); + BRepBuilderAPI_MakeEdge makeEdge(circ); + if (makeEdge.IsDone()) { + TopoDS_Edge edge = makeEdge.Edge(); + BRepBuilderAPI_MakeWire wireBuilder(edge); + if(wireBuilder.IsDone()) { + BRepBuilderAPI_MakeFace faceBuilder(wireBuilder.Wire()); + if (faceBuilder.IsDone()) { + faces.append(faceBuilder.Face()); + } } } }