From c5fbbb38306aa405bdaf3bf3d98b56838e475c1e Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 6 Dec 2024 18:29:50 +0100 Subject: [PATCH] SubShapeBinder: Add support for point. --- src/Mod/Part/App/PartFeature.cpp | 1 + src/Mod/PartDesign/App/ShapeBinder.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index ee3ab6948d..65ae266de8 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -1076,6 +1076,7 @@ static TopoShape _getTopoShape(const App::DocumentObject* obj, shape = TopoShape(tag, hasher, _shape); } } + if (!shape.isNull()) { shape.transformShape(mat * linkMat, false, true); return shape; diff --git a/src/Mod/PartDesign/App/ShapeBinder.cpp b/src/Mod/PartDesign/App/ShapeBinder.cpp index 31040e5001..8402df16c9 100644 --- a/src/Mod/PartDesign/App/ShapeBinder.cpp +++ b/src/Mod/PartDesign/App/ShapeBinder.cpp @@ -28,6 +28,7 @@ # include # include # include +# include #endif #include @@ -194,6 +195,10 @@ void ShapeBinder::getFilteredReferences(const App::PropertyLinkSubList* prop, obj = plane; break; } + if (auto point = dynamic_cast(it)) { + obj = point; + break; + } } } } @@ -244,6 +249,13 @@ Part::TopoShape ShapeBinder::buildShapeFromReferences(App::GeoFeature* obj, std: shape.setPlacement(obj->Placement.getValue()); return shape; } + else if (obj->isDerivedFrom()) { + gp_Pnt point; + BRepBuilderAPI_MakeVertex mkPoint(point); + Part::TopoShape shape(mkPoint.Shape()); + shape.setPlacement(obj->Placement.getValue()); + return shape; + } return TopoDS_Shape(); }