From 021f42f82890ef5e2feee820a00513a52ea25692 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 5 Apr 2021 13:25:36 +0200 Subject: [PATCH] PartDesign: for Prism feature use PrismExtension --- src/Mod/PartDesign/App/FeaturePrimitive.cpp | 18 ++++-------------- src/Mod/PartDesign/App/FeaturePrimitive.h | 11 +++-------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/src/Mod/PartDesign/App/FeaturePrimitive.cpp b/src/Mod/PartDesign/App/FeaturePrimitive.cpp index f8f79bfea2..444b61ddc2 100644 --- a/src/Mod/PartDesign/App/FeaturePrimitive.cpp +++ b/src/Mod/PartDesign/App/FeaturePrimitive.cpp @@ -553,11 +553,8 @@ Prism::Prism() ADD_PROPERTY_TYPE(Polygon, (6.0), "Prism", App::Prop_None, "Number of sides in the polygon, of the prism"); ADD_PROPERTY_TYPE(Circumradius, (2.0), "Prism", App::Prop_None, "Circumradius (centre to vertex) of the polygon, of the prism"); ADD_PROPERTY_TYPE(Height, (10.0f), "Prism", App::Prop_None, "The height of the prism"); - ADD_PROPERTY_TYPE(FirstAngle, (0.0f), "Prism", App::Prop_None, "Angle in first direction"); - ADD_PROPERTY_TYPE(SecondAngle, (0.0f), "Prism", App::Prop_None, "Angle in second direction"); - static const App::PropertyQuantityConstraint::Constraints angleConstraint = { -89.99999, 89.99999, 1.0 }; - FirstAngle.setConstraints(&angleConstraint); - SecondAngle.setConstraints(&angleConstraint); + + Part::PrismExtension::initExtension(this); primitiveType = FeaturePrimitive::Prism; } @@ -587,11 +584,8 @@ App::DocumentObjectExecReturn* Prism::execute(void) mkPoly.Add(gp_Pnt(v.x,v.y,v.z)); BRepBuilderAPI_MakeFace mkFace(mkPoly.Wire()); // the direction vector for the prism is the height for z and the given angle - BRepPrimAPI_MakePrism mkPrism(mkFace.Face(), - gp_Vec(Height.getValue() * tan(Base::toRadians(FirstAngle.getValue())), - Height.getValue() * tan(Base::toRadians(SecondAngle.getValue())), - Height.getValue())); - return FeaturePrimitive::execute(mkPrism.Shape()); + TopoDS_Shape prism = makePrism(Height.getValue(), mkFace.Face()); + return FeaturePrimitive::execute(prism); } catch (Standard_Failure& e) { return new App::DocumentObjectExecReturn(e.GetMessageString()); @@ -608,10 +602,6 @@ short int Prism::mustExecute() const return 1; if (Height.isTouched()) return 1; - if (FirstAngle.isTouched()) - return 1; - if (SecondAngle.isTouched()) - return 1; return FeaturePrimitive::mustExecute(); } diff --git a/src/Mod/PartDesign/App/FeaturePrimitive.h b/src/Mod/PartDesign/App/FeaturePrimitive.h index 7d6d7d4408..6b4dc7a713 100644 --- a/src/Mod/PartDesign/App/FeaturePrimitive.h +++ b/src/Mod/PartDesign/App/FeaturePrimitive.h @@ -29,6 +29,7 @@ #include "FeatureAddSub.h" #include +#include namespace PartDesign { @@ -307,28 +308,22 @@ class PartDesignExport SubtractiveTorus : public Torus { }; -class PartDesignExport Prism : public PartDesign::FeaturePrimitive { +class PartDesignExport Prism : public PartDesign::FeaturePrimitive, public Part::PrismExtension { PROPERTY_HEADER(PartDesign::Prism); public: - Prism(); - + App::PropertyIntegerConstraint Polygon; App::PropertyLength Circumradius; App::PropertyLength Height; - App::PropertyAngle FirstAngle; - App::PropertyAngle SecondAngle; /** @name methods override feature */ //@{ /// recalculate the Feature App::DocumentObjectExecReturn *execute(void); short mustExecute() const; - -protected: - }; class PartDesignExport AdditivePrism : public Prism {