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