diff --git a/src/Mod/Measure/App/ShapeFinder.cpp b/src/Mod/Measure/App/ShapeFinder.cpp index d8ec29829d..ac47e37130 100644 --- a/src/Mod/Measure/App/ShapeFinder.cpp +++ b/src/Mod/Measure/App/ShapeFinder.cpp @@ -106,9 +106,17 @@ ResolveResult ShapeFinder::resolveSelection( // and ShapeFinder::getLinkAttachParent() TopoDS_Shape ShapeFinder::getLocatedShape(const App::DocumentObject& rootObject, const std::string& leafSub) { - auto resolved = resolveSelection(rootObject, leafSub); - auto target = &resolved.getTarget(); - auto shortSub = resolved.getShortSub(); + // point objects are weird. + const std::string VertexTag {"Vertex"}; + const std::string PointTag {"Point"}; + std::string objName {rootObject.getNameInDocument()}; + if (objName.find(VertexTag) != std::string::npos || objName.find(PointTag) != std::string::npos) { + return Part::Feature::getShape(&rootObject, Part::ShapeOption::Transform); + } + + ResolveResult resolved = resolveSelection(rootObject, leafSub); + App::DocumentObject* target = &resolved.getTarget(); + std::string shortSub = resolved.getShortSub(); if (!target) { return {}; } diff --git a/src/Mod/TechDraw/Gui/DimensionValidators.cpp b/src/Mod/TechDraw/Gui/DimensionValidators.cpp index ab37700d48..854311399a 100644 --- a/src/Mod/TechDraw/Gui/DimensionValidators.cpp +++ b/src/Mod/TechDraw/Gui/DimensionValidators.cpp @@ -77,10 +77,18 @@ TechDraw::DrawViewPart* TechDraw::getReferencesFromSelection(ReferenceVector& re } } else if (!selItem.getObject()->isDerivedFrom()) { App::DocumentObject* obj3d = selItem.getObject(); - // this is a regular 3d reference in form obj + long subelement - for (auto& sub3d : selItem.getSubNames()) { - ReferenceEntry ref(obj3d, sub3d); + // obj3d is a point object, in which case the sub will be empty instead of + // containing Vertex1. Inserting "Vertex1" here gets us through + // validation, but doesn't work in Measure::shapefinder. + if (ShapeExtractor::isPointType(obj3d)) { + ReferenceEntry ref(obj3d, "Vertex1"); references3d.push_back(ref); + } else { + // this is a regular 3d reference in form obj + long subelement + for (auto& sub3d : selItem.getSubNames()) { + ReferenceEntry ref(obj3d, sub3d); + references3d.push_back(ref); + } } } }