diff --git a/src/Mod/TechDraw/App/Geometry.cpp b/src/Mod/TechDraw/App/Geometry.cpp index d34eeb9bbf..bf5cde8abf 100644 --- a/src/Mod/TechDraw/App/Geometry.cpp +++ b/src/Mod/TechDraw/App/Geometry.cpp @@ -227,11 +227,15 @@ std::vector BaseGeom::findEndPoints() { std::vector result; - gp_Pnt p = BRep_Tool::Pnt(TopExp::FirstVertex(occEdge)); - result.push_back(Base::Vector3d(p.X(),p.Y(), p.Z())); - p = BRep_Tool::Pnt(TopExp::LastVertex(occEdge)); - result.push_back(Base::Vector3d(p.X(),p.Y(), p.Z())); - + if (!occEdge.IsNull()) { + gp_Pnt p = BRep_Tool::Pnt(TopExp::FirstVertex(occEdge)); + result.push_back(Base::Vector3d(p.X(),p.Y(), p.Z())); + p = BRep_Tool::Pnt(TopExp::LastVertex(occEdge)); + result.push_back(Base::Vector3d(p.X(),p.Y(), p.Z())); + } else { + //TODO: this should throw something + Base::Console().Message("Geometry::findEndPoints - OCC edge not found\n"); + } return result; } @@ -239,13 +243,27 @@ std::vector BaseGeom::findEndPoints() Base::Vector3d BaseGeom::getStartPoint() { std::vector verts = findEndPoints(); - return verts[0]; + if (!verts.empty()) { + return verts[0]; + } else { + //TODO: this should throw something + Base::Console().Message("Geometry::getStartPoint - start point not found!\n"); + Base::Vector3d badResult(0.0, 0.0, 0.0); + return badResult; + } } Base::Vector3d BaseGeom::getEndPoint() { std::vector verts = findEndPoints(); + + if (verts.size() != 2) { + //TODO: this should throw something + Base::Console().Message("Geometry::getEndPoint - end point not found!\n"); + Base::Vector3d badResult(0.0, 0.0, 0.0); + return badResult; + } return verts[1]; }