From 8bc59f47ca64d04ab5f8d622b0f2a6c863c37590 Mon Sep 17 00:00:00 2001 From: tomate44 Date: Sun, 10 Jun 2018 17:49:32 +0200 Subject: [PATCH] add Approximation option to FeaturePartSection --- src/Mod/Part/App/FeaturePartSection.cpp | 21 +++++++++++++++++++-- src/Mod/Part/App/FeaturePartSection.h | 3 +++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Mod/Part/App/FeaturePartSection.cpp b/src/Mod/Part/App/FeaturePartSection.cpp index 55cd6da6ea..06f47c31bf 100644 --- a/src/Mod/Part/App/FeaturePartSection.cpp +++ b/src/Mod/Part/App/FeaturePartSection.cpp @@ -37,10 +37,27 @@ PROPERTY_SOURCE(Part::Section, Part::Boolean) Section::Section(void) { + ADD_PROPERTY_TYPE(Approximation,(false),"Section",App::Prop_None,"Approximate the output edges"); } -BRepAlgoAPI_BooleanOperation* Section::makeOperation(const TopoDS_Shape& base, const TopoDS_Shape& tool) const +short Section::mustExecute() const +{ + if (Approximation.isTouched()) + return 1; + return 0; +} + +BRepAlgoAPI_BooleanOperation *Section::makeOperation(const TopoDS_Shape& base, const TopoDS_Shape& tool) const { // Let's call algorithm computing a section operation: - return new BRepAlgoAPI_Section(base, tool); + // return new BRepAlgoAPI_Section(base, tool); + bool approx = Approximation.getValue(); + BRepAlgoAPI_Section* mkSection = new BRepAlgoAPI_Section(); + mkSection->Init1(base); + mkSection->Init2(tool); + mkSection->Approximation(approx); + mkSection->Build(); + if (!mkSection->IsDone()) + throw Base::RuntimeError("Section failed"); + return mkSection; } diff --git a/src/Mod/Part/App/FeaturePartSection.h b/src/Mod/Part/App/FeaturePartSection.h index ca27b902cc..2b5f73c956 100644 --- a/src/Mod/Part/App/FeaturePartSection.h +++ b/src/Mod/Part/App/FeaturePartSection.h @@ -38,9 +38,12 @@ class Section : public Boolean public: Section(); + App::PropertyBool Approximation; + /** @name methods override Feature */ //@{ /// recalculate the Feature + short mustExecute() const; protected: BRepAlgoAPI_BooleanOperation* makeOperation(const TopoDS_Shape&, const TopoDS_Shape&) const; //@}