From 1cb2d52dc2af4600d2c9e089fa80348e7c7f88f6 Mon Sep 17 00:00:00 2001 From: DeepSOIC Date: Thu, 18 Jan 2018 13:34:41 +0300 Subject: [PATCH] PartDesign: #2683 add Refine property resolves #2683 Adds Refine property to sketch-based and transformation features. The property is initialized according to preferences, and can be altered in property editor on per-feature basis. --- src/Mod/PartDesign/App/FeatureSketchBased.cpp | 10 +++++++--- src/Mod/PartDesign/App/FeatureSketchBased.h | 2 ++ src/Mod/PartDesign/App/FeatureTransformed.cpp | 11 ++++++++--- src/Mod/PartDesign/App/FeatureTransformed.h | 2 ++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index 3e48eb727d..90b4e00239 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -92,6 +92,12 @@ ProfileBased::ProfileBased() ADD_PROPERTY_TYPE(Midplane,(0),"SketchBased", App::Prop_None, "Extrude symmetric to sketch face"); ADD_PROPERTY_TYPE(Reversed, (0),"SketchBased", App::Prop_None, "Reverse extrusion direction"); ADD_PROPERTY_TYPE(UpToFace,(0),"SketchBased",(App::PropertyType)(App::Prop_None),"Face where feature will end"); + ADD_PROPERTY_TYPE(Refine,(0),"SketchBased",(App::PropertyType)(App::Prop_None),"Refine shape (clean up redundant edges) after adding/subtracting"); + + //init Refine property + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/PartDesign"); + this->Refine.setValue(hGrp->GetBool("RefineModel", false)); } short ProfileBased::mustExecute() const @@ -1039,9 +1045,7 @@ void ProfileBased::getAxis(const App::DocumentObject *pcReferenceAxis, const std TopoDS_Shape ProfileBased::refineShapeIfActive(const TopoDS_Shape& oldShape) const { - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/PartDesign"); - if (hGrp->GetBool("RefineModel", false)) { + if (this->Refine.getValue()) { try { Part::BRepBuilderAPI_RefineModel mkRefine(oldShape); TopoDS_Shape resShape = mkRefine.Shape(); diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.h b/src/Mod/PartDesign/App/FeatureSketchBased.h index ae7df6503f..1def5b34eb 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.h +++ b/src/Mod/PartDesign/App/FeatureSketchBased.h @@ -54,6 +54,8 @@ public: /// Face to extrude up to App::PropertyLinkSub UpToFace; + App::PropertyBool Refine; + short mustExecute() const; /** calculates and updates the Placement property based on the features diff --git a/src/Mod/PartDesign/App/FeatureTransformed.cpp b/src/Mod/PartDesign/App/FeatureTransformed.cpp index 77a515ae0f..a0c3ef113a 100644 --- a/src/Mod/PartDesign/App/FeatureTransformed.cpp +++ b/src/Mod/PartDesign/App/FeatureTransformed.cpp @@ -63,6 +63,13 @@ Transformed::Transformed() ADD_PROPERTY(Originals,(0)); Originals.setSize(0); Placement.setStatus(App::Property::ReadOnly, true); + + ADD_PROPERTY_TYPE(Refine,(0),"SketchBased",(App::PropertyType)(App::Prop_None),"Refine shape (clean up redundant edges) after adding/subtracting"); + + //init Refine property + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/PartDesign"); + this->Refine.setValue(hGrp->GetBool("RefineModel", false)); } void Transformed::positionBySupport(void) @@ -374,9 +381,7 @@ App::DocumentObjectExecReturn *Transformed::execute(void) TopoDS_Shape Transformed::refineShapeIfActive(const TopoDS_Shape& oldShape) const { - Base::Reference hGrp = App::GetApplication().GetUserParameter() - .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/PartDesign"); - if (hGrp->GetBool("RefineModel", false)) { + if (this->Refine.getValue()) { try { Part::BRepBuilderAPI_RefineModel mkRefine(oldShape); TopoDS_Shape resShape = mkRefine.Shape(); diff --git a/src/Mod/PartDesign/App/FeatureTransformed.h b/src/Mod/PartDesign/App/FeatureTransformed.h index 32c0913798..68d38d6654 100644 --- a/src/Mod/PartDesign/App/FeatureTransformed.h +++ b/src/Mod/PartDesign/App/FeatureTransformed.h @@ -49,6 +49,8 @@ public: */ App::PropertyLinkList Originals; + App::PropertyBool Refine; + /** * Returns the BaseFeature property's object(if any) otherwise return first original, * which serves as "Support" for old style workflows