From 7a0bc3762d26e5d62bf910621821a97bddb82dbb Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 29 May 2017 20:56:00 +0200 Subject: [PATCH] check for valid vertexes when measuring angles between two edges --- src/Mod/Part/Gui/TaskDimension.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Mod/Part/Gui/TaskDimension.cpp b/src/Mod/Part/Gui/TaskDimension.cpp index b7f2d9886e..095af010d0 100644 --- a/src/Mod/Part/Gui/TaskDimension.cpp +++ b/src/Mod/Part/Gui/TaskDimension.cpp @@ -1521,8 +1521,12 @@ PartGui::VectorAdapter PartGui::TaskMeasureAngular::buildAdapter(const PartGui:: return VectorAdapter(); TopoDS_Edge edge = TopoDS::Edge(edgeShape); // make edge orientation so that end of edge closest to pick is head of vector. - gp_Vec firstPoint = PartGui::convert(TopExp::FirstVertex(edge, Standard_True)); - gp_Vec lastPoint = PartGui::convert(TopExp::LastVertex(edge, Standard_True)); + TopoDS_Vertex firstVertex = TopExp::FirstVertex(edge, Standard_True); + TopoDS_Vertex lastVertex = TopExp::LastVertex(edge, Standard_True); + if (firstVertex.IsNull() || lastVertex.IsNull()) + return VectorAdapter(); + gp_Vec firstPoint = PartGui::convert(firstVertex); + gp_Vec lastPoint = PartGui::convert(lastVertex); gp_Vec pickPoint(current.x, current.y, current.z); double firstDistance = (firstPoint - pickPoint).Magnitude(); double lastDistance = (lastPoint - pickPoint).Magnitude();