X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchAPI%2FSketchAPI_Sketch.h;h=f9eea73cbfd7f0e38784669436389f12f78d7308;hb=77ce6d35ac8d2f0fdaecb4f23e0870bf74e36103;hp=b62e9c3af6edb2d679861497bac4d0baf31e2a1d;hpb=87b6a30a3afb8fb32e7e43ade8d9c947d9eb1684;p=modules%2Fshaper.git diff --git a/src/SketchAPI/SketchAPI_Sketch.h b/src/SketchAPI/SketchAPI_Sketch.h index b62e9c3af..f9eea73cb 100644 --- a/src/SketchAPI/SketchAPI_Sketch.h +++ b/src/SketchAPI/SketchAPI_Sketch.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2024 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ @@ -28,29 +27,40 @@ #include #include +#include +#include #include #include +#include //-------------------------------------------------------------------------------------- class ModelAPI_CompositeFeature; class ModelAPI_Object; -class ModelHighAPI_Double; class ModelHighAPI_Integer; class ModelHighAPI_RefAttr; class ModelHighAPI_Reference; -class ModelHighAPI_Selection; class SketchAPI_Arc; class SketchAPI_MacroArc; class SketchAPI_Circle; class SketchAPI_MacroCircle; +class SketchAPI_Ellipse; +class SketchAPI_MacroEllipse; +class SketchAPI_EllipticArc; +class SketchAPI_MacroEllipticArc; +class SketchAPI_BSpline; class SketchAPI_IntersectionPoint; class SketchAPI_Line; class SketchAPI_Mirror; +class SketchAPI_Offset; class SketchAPI_Point; class SketchAPI_Projection; class SketchAPI_Rectangle; class SketchAPI_Rotation; class SketchAPI_Translation; +class SketchAPI_MacroMiddlePoint; + +//-------------------------------------------------------------------------------------- +typedef std::pair, ModelHighAPI_RefAttr> PointOrReference; //-------------------------------------------------------------------------------------- /**\class SketchAPI_Sketch * \ingroup CPPHighAPI @@ -99,6 +109,11 @@ public: SKETCHAPI_EXPORT void setPlane(const std::shared_ptr & thePlane); + /// Change sketch plane + SKETCHAPI_EXPORT + void setPlane(const ModelHighAPI_Selection & thePlane, + bool theRemoveExternalDependency = false); + /// Set external SKETCHAPI_EXPORT void setExternal(const ModelHighAPI_Selection & theExternal); @@ -107,6 +122,14 @@ public: SKETCHAPI_EXPORT void setExternal(std::shared_ptr thePlaneObject); + /// Change order of sketch results (faces) + SKETCHAPI_EXPORT + void changeFacesOrder(const std::list >& theFaces); + + /// List points not connected by constraints with other sketch entitites + SKETCHAPI_EXPORT + std::list< std::shared_ptr > getFreePoints(); + /// Add point SKETCHAPI_EXPORT std::shared_ptr addPoint( @@ -120,16 +143,18 @@ public: std::shared_ptr addPoint(const ModelHighAPI_Selection & theExternal); /// Add point SKETCHAPI_EXPORT - std::shared_ptr addPoint(const std::string & theExternalName); + std::shared_ptr addPoint(const std::wstring & theExternalName); /// Add intersection point SKETCHAPI_EXPORT std::shared_ptr - addIntersectionPoint(const ModelHighAPI_Selection & theExternal); + addIntersectionPoint(const ModelHighAPI_Selection & theExternal, + bool theKeepResult = false); /// Add point SKETCHAPI_EXPORT std::shared_ptr - addIntersectionPoint(const std::string & theExternalName); + addIntersectionPoint(const std::wstring & theExternalName, + bool theKeepResult = false); /// Add line SKETCHAPI_EXPORT @@ -145,7 +170,7 @@ public: std::shared_ptr addLine(const ModelHighAPI_Selection & theExternal); /// Add line SKETCHAPI_EXPORT - std::shared_ptr addLine(const std::string & theExternalName); + std::shared_ptr addLine(const std::wstring & theExternalName); /// Add rectangle SKETCHAPI_EXPORT @@ -156,6 +181,11 @@ public: std::shared_ptr addRectangle( const std::shared_ptr & theStartPoint, const std::shared_ptr & theEndPoint); + /// Add rectangle + SKETCHAPI_EXPORT + std::shared_ptr addRectangleCentered( + const std::pair, ModelHighAPI_RefAttr> & theCenter, + const std::pair, ModelHighAPI_RefAttr> & theCorner); /// Add circle SKETCHAPI_EXPORT @@ -194,7 +224,7 @@ public: std::shared_ptr addCircle(const ModelHighAPI_Selection & theExternal); /// Add circle SKETCHAPI_EXPORT - std::shared_ptr addCircle(const std::string & theExternalName); + std::shared_ptr addCircle(const std::wstring & theExternalName); /// Add arc SKETCHAPI_EXPORT @@ -226,19 +256,21 @@ public: const std::shared_ptr& theEnd, const std::shared_ptr& thePassed); - /// Add arc + /// Add transversal/tangent arc SKETCHAPI_EXPORT std::shared_ptr addArc( - const ModelHighAPI_RefAttr& theTangentPoint, + const ModelHighAPI_RefAttr& theConnectedPoint, double theEndX, double theEndY, - bool theInversed); + bool theInversed, + bool theTransversal = false); - /// Add arc + /// Add transversal/tangent arc SKETCHAPI_EXPORT std::shared_ptr addArc( - const ModelHighAPI_RefAttr& theTangentPoint, + const ModelHighAPI_RefAttr& theConnectedPoint, const std::shared_ptr& theEnd, - bool theInversed); + bool theInversed, + bool theTransversal = false); /// Add arc SKETCHAPI_EXPORT @@ -246,16 +278,96 @@ public: /// Add arc SKETCHAPI_EXPORT - std::shared_ptr addArc(const std::string & theExternalName); + std::shared_ptr addArc(const std::wstring & theExternalName); - /// Add projection + /// Add ellipse SKETCHAPI_EXPORT - std::shared_ptr addProjection( - const ModelHighAPI_Selection & theExternalFeature); + std::shared_ptr addEllipse( + double theCenterX, double theCenterY, + double theFocusX, double theFocusY, + double theMinorRadius); + /// Add ellipse + SKETCHAPI_EXPORT + std::shared_ptr addEllipse( + const std::shared_ptr& theCenter, + const std::shared_ptr& theFocus, + double theRadius); + /// Add ellipse + SKETCHAPI_EXPORT + std::shared_ptr addEllipse( + double thePoint1X, double thePoint1Y, + double thePoint2X, double thePoint2Y, + double thePassedX, double thePassedY, + bool isPoint1Center = true); + /// Add ellipse + SKETCHAPI_EXPORT + std::shared_ptr addEllipse( + const PointOrReference& thePoint1, + const PointOrReference& thePoint2, + const PointOrReference& thePassedPoint, + bool isPoint1Center = true); + /// Add ellipse + SKETCHAPI_EXPORT + std::shared_ptr addEllipse(const ModelHighAPI_Selection & theExternal); + /// Add ellipse + SKETCHAPI_EXPORT + std::shared_ptr addEllipse(const std::wstring & theExternalName); + + /// Add elliptic arc + SKETCHAPI_EXPORT + std::shared_ptr addEllipticArc( + double theCenterX, double theCenterY, + double theFocusX, double theFocusY, + double theStartX, double theStartY, + double theEndX, double theEndY, + bool theInversed = false); + /// Add elliptic arc + SKETCHAPI_EXPORT + std::shared_ptr addEllipticArc( + const PointOrReference& theCenter, + const PointOrReference& theMajorAxisPoint, + const PointOrReference& theStartPoint, + const PointOrReference& theEndPoint, + bool theInversed = false); + /// Add elliptic arc + SKETCHAPI_EXPORT + std::shared_ptr addEllipticArc(const ModelHighAPI_Selection & theExternal); + /// Add elliptic arc + SKETCHAPI_EXPORT + std::shared_ptr addEllipticArc(const std::wstring & theExternalName); + + /// Add B-spline + SKETCHAPI_EXPORT + std::shared_ptr addSpline( + const ModelHighAPI_Selection & external = ModelHighAPI_Selection(), + const int degree = -1, + const std::list& poles = std::list(), + const std::list& weights = std::list(), + const std::list& knots = std::list(), + const std::list& multiplicities = std::list(), + const bool periodic = false); + + /// Add interpolation feature + SKETCHAPI_EXPORT + std::shared_ptr addInterpolation( + const std::list& points, + const bool periodic = false, + const bool closed = false); + + /// Add approximation feature + SKETCHAPI_EXPORT + std::shared_ptr addApproximation( + const std::list& points, + const ModelHighAPI_Double& precision = ModelHighAPI_Double(1.e-3), + const bool periodic = false, + const bool closed = false); /// Add projection SKETCHAPI_EXPORT - std::shared_ptr addProjection(const std::string & theExternalName); + std::shared_ptr addProjection( + const ModelHighAPI_Selection & theExternalFeature, + bool keepResult = false, + bool keepRefToOriginal = true); /// Add mirror SKETCHAPI_EXPORT @@ -263,6 +375,15 @@ public: const ModelHighAPI_RefAttr & theMirrorLine, const std::list > & theObjects); + /// Add offset + SKETCHAPI_EXPORT + std::shared_ptr addOffset( + const std::list > & theObjects, + const ModelHighAPI_Double & theValue, + const bool theReversed = false, + const std::string & theJointType = SketchPlugin_Offset::JOINT_KEEP_DISTANCE(), + const bool theApprox = false); + /// Add translation SKETCHAPI_EXPORT std::shared_ptr addTranslation( @@ -279,7 +400,8 @@ public: const ModelHighAPI_RefAttr & theCenter, const ModelHighAPI_Double & theAngle, const ModelHighAPI_Integer & theNumberOfObjects, - bool theFullValue = false); + bool theFullValue = false, + bool theReversed = false); /// Add split SKETCHAPI_EXPORT @@ -298,7 +420,8 @@ public: std::shared_ptr setAngle( const ModelHighAPI_RefAttr & theLine1, const ModelHighAPI_RefAttr & theLine2, - const ModelHighAPI_Double & theValue); + const ModelHighAPI_Double & theValue, + const std::string& type = std::string()); /// Set complementary angle SKETCHAPI_EXPORT @@ -331,6 +454,35 @@ public: std::shared_ptr setDistance( const ModelHighAPI_RefAttr & thePoint, const ModelHighAPI_RefAttr & thePointOrLine, + const ModelHighAPI_Double & theValue, + bool isSigned = false); + + /// Set signed distance + SKETCHAPI_EXPORT + std::shared_ptr setSignedDistance( + const ModelHighAPI_RefAttr & thePoint, + const ModelHighAPI_RefAttr & thePointOrLine, + const ModelHighAPI_Double & theValue); + + /// Set unsigned distance + SKETCHAPI_EXPORT + std::shared_ptr setUnsignedDistance( + const ModelHighAPI_RefAttr & thePoint, + const ModelHighAPI_RefAttr & thePointOrLine, + const ModelHighAPI_Double & theValue); + + /// Set horizontal distance + SKETCHAPI_EXPORT + std::shared_ptr setHorizontalDistance( + const ModelHighAPI_RefAttr & thePoint1, + const ModelHighAPI_RefAttr & thePoint2, + const ModelHighAPI_Double & theValue); + + /// Set vertical distance + SKETCHAPI_EXPORT + std::shared_ptr setVerticalDistance( + const ModelHighAPI_RefAttr & thePoint1, + const ModelHighAPI_RefAttr & thePoint2, const ModelHighAPI_Double & theValue); /// Set equal @@ -372,6 +524,11 @@ public: const ModelHighAPI_RefAttr & thePoint, const ModelHighAPI_RefAttr & theLine); + /// Set middle + SKETCHAPI_EXPORT + std::shared_ptr setMiddlePoint( + const ModelHighAPI_RefAttr& theLine); + /// Set parallel SKETCHAPI_EXPORT std::shared_ptr setParallel( @@ -407,6 +564,16 @@ public: const std::shared_ptr & theConstraint, const ModelHighAPI_Double & theValue); + /// Move point or sketch feature + SKETCHAPI_EXPORT + void move(const ModelHighAPI_RefAttr& theMovedEntity, + const std::shared_ptr& theTargetPoint); + + /// Move point or sketch feature + SKETCHAPI_EXPORT + void move(const ModelHighAPI_RefAttr& theMovedEntity, + double theTargetX, double theTargetY); + SKETCHAPI_EXPORT std::shared_ptr to2D(const std::shared_ptr& thePoint); @@ -427,6 +594,8 @@ protected: //! Pointer on Sketch object typedef std::shared_ptr SketchPtr; +//-------------------------------------------------------------------------------------- + /**\ingroup CPPHighAPI * \brief Create Sketch feature */ @@ -446,7 +615,7 @@ SketchPtr addSketch(const std::shared_ptr & thePart, */ SKETCHAPI_EXPORT SketchPtr addSketch(const std::shared_ptr & thePart, - const std::string & theExternalName); + const std::wstring & theExternalName); /**\ingroup CPPHighAPI * \brief Create Sketch feature @@ -456,5 +625,13 @@ SketchPtr addSketch(const std::shared_ptr & thePart, std::shared_ptr thePlaneObject); //-------------------------------------------------------------------------------------- + +/** \ingroup CPPHighAPI + * \brief Copy sketch with all its sub-features + */ +SKETCHAPI_EXPORT +SketchPtr copySketch(const std::shared_ptr & thePart, + const SketchPtr & theSketch); + //-------------------------------------------------------------------------------------- #endif /* SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ */