From d82fe1564fab995d24f02658c6235793ddc7cf59 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Sat, 2 Mar 2024 09:41:36 +0100 Subject: [PATCH] Part/Toponaming: Transfer PartFeature Feature::create() * Imported Feature::create() method in Part::Feature class --- src/Mod/Part/App/PartFeature.cpp | 17 +++++++++++++++++ src/Mod/Part/App/PartFeature.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 2212f4695a..070037a940 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -536,6 +536,23 @@ TopLoc_Location Feature::getLocation() const return TopLoc_Location(trf); } +Feature* Feature::create(const TopoShape& shape, const char* name, App::Document* document) +{ + if (!name || !name[0]) { + name = "Shape"; + } + if (!document) { + document = App::GetApplication().getActiveDocument(); + if (!document) { + document = App::GetApplication().newDocument(); + } + } + auto res = static_cast(document->addObject("Part::Feature", name)); + res->Shape.setValue(shape); + res->purgeTouched(); + return res; +} + ShapeHistory Feature::buildHistory(BRepBuilderAPI_MakeShape& mkShape, TopAbs_ShapeEnum type, const TopoDS_Shape& newS, const TopoDS_Shape& oldS) { diff --git a/src/Mod/Part/App/PartFeature.h b/src/Mod/Part/App/PartFeature.h index 5e377e6e55..cfba503ca0 100644 --- a/src/Mod/Part/App/PartFeature.h +++ b/src/Mod/Part/App/PartFeature.h @@ -110,6 +110,9 @@ public: return owner && owner->isDerivedFrom(getClassTypeId()); } + static Feature* + create(const TopoShape& shape, const char* name = nullptr, App::Document* document = nullptr); + protected: /// recompute only this object App::DocumentObjectExecReturn *recompute() override;