| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #ifndef PARTDESIGN_Helix_H |
| | #define PARTDESIGN_Helix_H |
| |
|
| | #include <App/PropertyUnits.h> |
| | #include "FeatureSketchBased.h" |
| | #include <TopoDS_Shape.hxx> |
| |
|
| | namespace PartDesign |
| | { |
| |
|
| | enum class HelixMode |
| | { |
| | pitch_height_angle, |
| | pitch_turns_angle, |
| | height_turns_angle, |
| | height_turns_growth |
| | }; |
| |
|
| | class PartDesignExport Helix: public ProfileBased |
| | { |
| | PROPERTY_HEADER_WITH_OVERRIDE(PartDesign::Helix); |
| |
|
| | public: |
| | Helix(); |
| |
|
| | App::PropertyVector Base; |
| | App::PropertyVector Axis; |
| | App::PropertyLength Pitch; |
| | App::PropertyLength Height; |
| | App::PropertyFloatConstraint Turns; |
| | App::PropertyBool LeftHanded; |
| | App::PropertyAngle Angle; |
| | App::PropertyDistance Growth; |
| | App::PropertyEnumeration Mode; |
| | App::PropertyBool Outside; |
| | App::PropertyBool HasBeenEdited; |
| | App::PropertyFloatConstraint Tolerance; |
| |
|
| | |
| | |
| | |
| | App::PropertyLinkSub ReferenceAxis; |
| |
|
| | |
| | |
| | App::DocumentObjectExecReturn* execute() override; |
| | short mustExecute() const override; |
| | |
| | const char* getViewProviderName() const override |
| | { |
| | return "PartDesignGui::ViewProviderHelix"; |
| | } |
| | |
| |
|
| | void proposeParameters(bool force = false); |
| | double safePitch(); |
| |
|
| | protected: |
| | |
| | void updateAxis(); |
| |
|
| | |
| | TopoDS_Shape generateHelixPath(double breakAtTurn = 1.); |
| |
|
| | |
| | TopoDS_Shape projectShape(const TopoDS_Shape& input, const gp_Ax2& plane); |
| |
|
| | |
| | Base::Vector3d getProfileCenterPoint(); |
| |
|
| | |
| | void handleChangedPropertyType( |
| | Base::XMLReader& reader, |
| | const char* TypeName, |
| | App::Property* prop |
| | ) override; |
| |
|
| | void onChanged(const App::Property* prop) override; |
| |
|
| | static const App::PropertyFloatConstraint::Constraints floatTurns; |
| | static const App::PropertyAngle::Constraints floatAngle; |
| | static const App::PropertyFloatConstraint::Constraints floatTolerance; |
| |
|
| | private: |
| | static const char* ModeEnums[]; |
| |
|
| | |
| | void setReadWriteStatusForMode(HelixMode inputMode); |
| | }; |
| |
|
| |
|
| | class PartDesignExport AdditiveHelix: public Helix |
| | { |
| |
|
| | PROPERTY_HEADER_WITH_OVERRIDE(PartDesign::AdditiveHelix); |
| |
|
| | public: |
| | AdditiveHelix(); |
| | }; |
| |
|
| |
|
| | class PartDesignExport SubtractiveHelix: public Helix |
| | { |
| |
|
| | PROPERTY_HEADER_WITH_OVERRIDE(PartDesign::SubtractiveHelix); |
| |
|
| | public: |
| | SubtractiveHelix(); |
| | }; |
| |
|
| | } |
| |
|
| |
|
| | #endif |
| |
|