From 01ffabccaaafe1a8b0b5a80caaa27f185502bc57 Mon Sep 17 00:00:00 2001 From: Andrew Shkolik Date: Wed, 26 Feb 2025 20:51:23 -0600 Subject: [PATCH] fix #18356 Sketcher: External reference line defaults to geometry, but vertex does not --- src/Mod/Sketcher/App/SketchObject.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index 0bfa228d53..4c9b8be7fe 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -366,10 +366,23 @@ void SketchObject::buildShape() { auto egf = ExternalGeometryFacade::getFacade(geo); if(!egf->testFlag(ExternalGeometryExtension::Defining)) continue; + auto indexedName = Data::IndexedName::fromConst("ExternalEdge", i-1); - shapes.push_back(getEdge(geo, convertSubName(indexedName, false).c_str())); - if (checkSmallEdge(shapes.back())) { - FC_WARN("Edge too small: " << indexedName); + + if (geo->isDerivedFrom()) { + Part::TopoShape vertex(TopoDS::Vertex(geo->toShape())); + if (!vertex.hasElementMap()) { + vertex.resetElementMap(std::make_shared()); + } + vertex.setElementName(Data::IndexedName::fromConst("Vertex", 1), + Data::MappedName::fromRawData(convertSubName(indexedName, false).c_str()),0L); + vertices.push_back(vertex); + vertices.back().copyElementMap(vertex, Part::OpCodes::Sketch); + } else { + shapes.push_back(getEdge(geo, convertSubName(indexedName, false).c_str())); + if (checkSmallEdge(shapes.back())) { + FC_WARN("Edge too small: " << indexedName); + } } }