From f9ea3bc07207b5a20174086faa43d1515606d216 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Wed, 20 Dec 2023 19:31:53 -0500 Subject: [PATCH] [TD]fix Landmark dim with datum points --- src/Mod/TechDraw/App/LandmarkDimension.cpp | 21 +++++++++------------ src/Mod/TechDraw/App/ShapeExtractor.cpp | 16 ++++++++++++++-- src/Mod/TechDraw/App/ShapeExtractor.h | 1 + 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/Mod/TechDraw/App/LandmarkDimension.cpp b/src/Mod/TechDraw/App/LandmarkDimension.cpp index 878a772068..d18d28f08c 100644 --- a/src/Mod/TechDraw/App/LandmarkDimension.cpp +++ b/src/Mod/TechDraw/App/LandmarkDimension.cpp @@ -87,19 +87,16 @@ short LandmarkDimension::mustExecute() const App::DocumentObjectExecReturn *LandmarkDimension::execute() { - Base::Console().Message("LD::execute() - %s\n", getNameInDocument()); - if (!keepUpdated()) { + // Base::Console().Message("LD::execute() - %s\n", getNameInDocument()); + if (!okToProceed()) { return App::DocumentObject::StdReturn; } DrawViewPart* dvp = getViewPart(); - if (!dvp) { - return App::DocumentObject::StdReturn; - } References2D.setValue(dvp); std::vector features = References3D.getValues(); - Base::Console().Message("LD::execute - features: %d\n", features.size()); + // Base::Console().Message("LD::execute - features: %d\n", features.size()); //if distance, required size = 2 //if angle, required size = 3; //not implemented yet unsigned int requiredSize = 2; @@ -130,18 +127,18 @@ App::DocumentObjectExecReturn *LandmarkDimension::execute() index++; } } - Base::Console().Message("LD::execute - front: %s back: %s\n", - DrawUtil::formatVector(points.front()).c_str(), - DrawUtil::formatVector(points.back()).c_str()); + // Base::Console().Message("LD::execute - front: %s back: %s\n", + // DrawUtil::formatVector(points.front()).c_str(), + // DrawUtil::formatVector(points.back()).c_str()); setLinearPoints(points.front(), points.back()); - App::DocumentObjectExecReturn* dvdResult = DrawViewDimension::execute(); + // App::DocumentObjectExecReturn* dvdResult = DrawViewDimension::execute(); dvp->addReferencesToGeom(); - dvp->requestPaint(); + // dvp->requestPaint(); overrideKeepUpdated(false); - return dvdResult; + return DrawView::execute(); } Base::Vector3d LandmarkDimension::projectPoint(const Base::Vector3d& pt, DrawViewPart* dvp) const diff --git a/src/Mod/TechDraw/App/ShapeExtractor.cpp b/src/Mod/TechDraw/App/ShapeExtractor.cpp index c1aefc982a..5215c3a030 100644 --- a/src/Mod/TechDraw/App/ShapeExtractor.cpp +++ b/src/Mod/TechDraw/App/ShapeExtractor.cpp @@ -406,13 +406,15 @@ bool ShapeExtractor::isEdgeType(App::DocumentObject* obj) bool ShapeExtractor::isPointType(App::DocumentObject* obj) { -// Base::Console().Message("SE::isPointType(%s)\n", obj->getNameInDocument()); + // Base::Console().Message("SE::isPointType(%s)\n", obj->getNameInDocument()); if (obj) { Base::Type t = obj->getTypeId(); if (t.isDerivedFrom(Part::Vertex::getClassTypeId())) { return true; } else if (isDraftPoint(obj)) { return true; + } else if (isDatumPoint(obj)) { + return true; } } return false; @@ -433,11 +435,21 @@ bool ShapeExtractor::isDraftPoint(App::DocumentObject* obj) return false; } +bool ShapeExtractor::isDatumPoint(App::DocumentObject* obj) +{ + std::string objTypeName = obj->getTypeId().getName(); + std::string pointToken("Point"); + if (objTypeName.find(pointToken) != std::string::npos) { + return true; + } + return false; +} + //! get the location of a point object Base::Vector3d ShapeExtractor::getLocation3dFromFeat(App::DocumentObject* obj) { - Base::Console().Message("SE::getLocation3dFromFeat()\n"); + // Base::Console().Message("SE::getLocation3dFromFeat()\n"); if (!isPointType(obj)) { return Base::Vector3d(0.0, 0.0, 0.0); } diff --git a/src/Mod/TechDraw/App/ShapeExtractor.h b/src/Mod/TechDraw/App/ShapeExtractor.h index baabb4537c..34e1898b96 100644 --- a/src/Mod/TechDraw/App/ShapeExtractor.h +++ b/src/Mod/TechDraw/App/ShapeExtractor.h @@ -50,6 +50,7 @@ public: static bool isEdgeType(App::DocumentObject* obj); static bool isPointType(App::DocumentObject* obj); static bool isDraftPoint(App::DocumentObject* obj); + static bool isDatumPoint(App::DocumentObject* obj); static Base::Vector3d getLocation3dFromFeat(App::DocumentObject *obj); static TopoDS_Shape stripInfiniteShapes(TopoDS_Shape inShape);