X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSketchAPI%2FSketchAPI_Sketch.h;h=e8a2b089f1136b92fbe99f3633a4cdc4a19bc3fe;hb=3e5f9ac99e64ed6b62dcf8d67acf825a87639f3f;hp=50d17a36474513071c154b054f35799498ffc1f9;hpb=be2c027cecdfe5a648a6ca400b2c14e24a20f30d;p=modules%2Fshaper.git diff --git a/src/SketchAPI/SketchAPI_Sketch.h b/src/SketchAPI/SketchAPI_Sketch.h index 50d17a364..e8a2b089f 100644 --- a/src/SketchAPI/SketchAPI_Sketch.h +++ b/src/SketchAPI/SketchAPI_Sketch.h @@ -1,8 +1,21 @@ -// Name : SketchAPI_Sketch.h -// Purpose: +// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// History: -// 07/06/16 - Sergey POKHODENKO - Creation of the file #ifndef SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ #define SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ @@ -17,15 +30,33 @@ #include #include +#include //-------------------------------------------------------------------------------------- class ModelAPI_CompositeFeature; +class ModelAPI_Object; class ModelHighAPI_Double; +class ModelHighAPI_Integer; class ModelHighAPI_RefAttr; -class ModelHighAPI_Selection; +class ModelHighAPI_Reference; 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_Point; +class SketchAPI_Projection; +class SketchAPI_Rectangle; +class SketchAPI_Rotation; +class SketchAPI_Translation; +//-------------------------------------------------------------------------------------- +typedef std::pair, ModelHighAPI_RefAttr> PointOrReference; //-------------------------------------------------------------------------------------- /**\class SketchAPI_Sketch * \ingroup CPPHighAPI @@ -45,29 +76,55 @@ public: SKETCHAPI_EXPORT SketchAPI_Sketch(const std::shared_ptr & theFeature, const ModelHighAPI_Selection & theExternal); + /// Constructor with values + SKETCHAPI_EXPORT + SketchAPI_Sketch(const std::shared_ptr & theFeature, + std::shared_ptr thePlaneObject); /// Destructor SKETCHAPI_EXPORT virtual ~SketchAPI_Sketch(); INTERFACE_7(SketchPlugin_Sketch::ID(), - origin, SketchPlugin_Sketch::ORIGIN_ID(), GeomDataAPI_Point, /** Origin point */, - dirX, SketchPlugin_Sketch::DIRX_ID(), GeomDataAPI_Dir, /** Direction of X */, - normal, SketchPlugin_Sketch::NORM_ID(), GeomDataAPI_Dir, /** Normal */, - features, SketchPlugin_Sketch::FEATURES_ID(), ModelAPI_AttributeRefList, /** Features */, - external, SketchPlugin_SketchEntity::EXTERNAL_ID(), ModelAPI_AttributeSelection, /** External */, - solverError, SketchPlugin_Sketch::SOLVER_ERROR(), ModelAPI_AttributeString, /** Solver error */, - solverDOF, SketchPlugin_Sketch::SOLVER_DOF(), ModelAPI_AttributeString, /** Solver DOF */ + origin, SketchPlugin_Sketch::ORIGIN_ID(), + GeomDataAPI_Point, /** Origin point */, + dirX, SketchPlugin_Sketch::DIRX_ID(), + GeomDataAPI_Dir, /** Direction of X */, + normal, SketchPlugin_Sketch::NORM_ID(), + GeomDataAPI_Dir, /** Normal */, + features, SketchPlugin_Sketch::FEATURES_ID(), + ModelAPI_AttributeRefList, /** Features */, + external, SketchPlugin_SketchEntity::EXTERNAL_ID(), + ModelAPI_AttributeSelection, /** External */, + solverError, SketchPlugin_Sketch::SOLVER_ERROR(), + ModelAPI_AttributeString, /** Solver error */, + solverDOF, SketchPlugin_Sketch::SOLVER_DOF(), + ModelAPI_AttributeString, /** Solver DOF */ ) /// Set plane 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); - // TODO(spo): addIntersection + /// Set external + 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 @@ -84,6 +141,17 @@ public: SKETCHAPI_EXPORT std::shared_ptr addPoint(const std::string & theExternalName); + /// Add intersection point + SKETCHAPI_EXPORT + std::shared_ptr + addIntersectionPoint(const ModelHighAPI_Selection & theExternal, + bool theKeepResult = false); + /// Add point + SKETCHAPI_EXPORT + std::shared_ptr + addIntersectionPoint(const std::string & theExternalName, + bool theKeepResult = false); + /// Add line SKETCHAPI_EXPORT std::shared_ptr addLine( @@ -100,6 +168,16 @@ public: SKETCHAPI_EXPORT std::shared_ptr addLine(const std::string & theExternalName); + /// Add rectangle + SKETCHAPI_EXPORT + std::shared_ptr addRectangle( + double theX1, double theY1, double theX2, double theY2); + /// Add rectangle + SKETCHAPI_EXPORT + std::shared_ptr addRectangle( + const std::shared_ptr & theStartPoint, + const std::shared_ptr & theEndPoint); + /// Add circle SKETCHAPI_EXPORT std::shared_ptr addCircle( @@ -112,13 +190,23 @@ public: double theRadius); /// Add circle SKETCHAPI_EXPORT - std::shared_ptr addCircle( + std::shared_ptr addCircle( + double theCenterX, double theCenterY, + double thePassedX, double thePassedY); + /// Add circle + SKETCHAPI_EXPORT + std::shared_ptr addCircle( + const std::shared_ptr& theCenterPoint, + const std::shared_ptr& thePassedPoint); + /// Add circle + SKETCHAPI_EXPORT + std::shared_ptr addCircle( double theX1, double theY1, double theX2, double theY2, double theX3, double theY3); /// Add circle SKETCHAPI_EXPORT - std::shared_ptr addCircle( + std::shared_ptr addCircle( const std::shared_ptr& thePoint1, const std::shared_ptr& thePoint2, const std::shared_ptr& thePoint3); @@ -147,31 +235,33 @@ public: /// Add arc SKETCHAPI_EXPORT - std::shared_ptr addArc( + std::shared_ptr addArc( double theStartX, double theStartY, double theEndX, double theEndY, double thePassedX, double thePassedY); /// Add arc SKETCHAPI_EXPORT - std::shared_ptr addArc( + std::shared_ptr addArc( const std::shared_ptr& theStart, 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, + std::shared_ptr addArc( + 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, + std::shared_ptr addArc( + const ModelHighAPI_RefAttr& theConnectedPoint, const std::shared_ptr& theEnd, - bool theInversed); + bool theInversed, + bool theTransversal = false); /// Add arc SKETCHAPI_EXPORT @@ -181,112 +271,287 @@ public: SKETCHAPI_EXPORT std::shared_ptr addArc(const std::string & theExternalName); + /// Add ellipse + SKETCHAPI_EXPORT + 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::string & 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::string & 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 projection + SKETCHAPI_EXPORT + std::shared_ptr addProjection( + const ModelHighAPI_Selection & theExternalFeature, + bool theKeepResult = false); + + /// Add projection + SKETCHAPI_EXPORT + std::shared_ptr addProjection(const std::string & theExternalName, + bool theKeepResult = false); + + /// Add mirror + SKETCHAPI_EXPORT + std::shared_ptr addMirror( + const ModelHighAPI_RefAttr & theMirrorLine, + const std::list > & theObjects); + + /// Add translation + SKETCHAPI_EXPORT + std::shared_ptr addTranslation( + const std::list > & theObjects, + const ModelHighAPI_RefAttr & thePoint1, + const ModelHighAPI_RefAttr & thePoint2, + const ModelHighAPI_Integer & theNumberOfObjects, + bool theFullValue = false); + + /// Add rotation + SKETCHAPI_EXPORT + std::shared_ptr addRotation( + const std::list > & theObjects, + const ModelHighAPI_RefAttr & theCenter, + const ModelHighAPI_Double & theAngle, + const ModelHighAPI_Integer & theNumberOfObjects, + bool theFullValue = false, + bool theReversed = false); + + /// Add split + SKETCHAPI_EXPORT + std::shared_ptr addSplit( + const ModelHighAPI_Reference& theFeature, + const std::shared_ptr& thePositionPoint); + + /// Add trim + SKETCHAPI_EXPORT + std::shared_ptr addTrim( + const ModelHighAPI_Reference& theFeature, + const std::shared_ptr& thePositionPoint); + /// Set angle SKETCHAPI_EXPORT - std::shared_ptr setAngle( + std::shared_ptr setAngle( + const ModelHighAPI_RefAttr & theLine1, + const ModelHighAPI_RefAttr & theLine2, + const ModelHighAPI_Double & theValue, + const std::string& type = std::string()); + + /// Set complementary angle + SKETCHAPI_EXPORT + std::shared_ptr setAngleComplementary( + const ModelHighAPI_RefAttr & theLine1, + const ModelHighAPI_RefAttr & theLine2, + const ModelHighAPI_Double & theValue); + + /// Set backward angle (= 360 - angle) + SKETCHAPI_EXPORT + std::shared_ptr setAngleBackward( const ModelHighAPI_RefAttr & theLine1, const ModelHighAPI_RefAttr & theLine2, const ModelHighAPI_Double & theValue); /// Set coincident SKETCHAPI_EXPORT - std::shared_ptr setCoincident( + std::shared_ptr setCoincident( const ModelHighAPI_RefAttr & thePoint1, const ModelHighAPI_RefAttr & thePoint2); /// Set collinear SKETCHAPI_EXPORT - std::shared_ptr setCollinear( + std::shared_ptr setCollinear( const ModelHighAPI_RefAttr & theLine1, const ModelHighAPI_RefAttr & theLine2); /// Set distance SKETCHAPI_EXPORT - std::shared_ptr setDistance( + 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 SKETCHAPI_EXPORT - std::shared_ptr setEqual( + std::shared_ptr setEqual( const ModelHighAPI_RefAttr & theObject1, const ModelHighAPI_RefAttr & theObject2); /// Set fillet SKETCHAPI_EXPORT - std::shared_ptr setFillet( - const std::list & thePoints, + std::shared_ptr setFillet( + const ModelHighAPI_RefAttr & thePoint); + + /// Set fillet with additional radius constraint + SKETCHAPI_EXPORT + std::shared_ptr setFilletWithRadius( + const ModelHighAPI_RefAttr & thePoint, const ModelHighAPI_Double & theRadius); + /// Set fixed + SKETCHAPI_EXPORT + std::shared_ptr setFixed( + const ModelHighAPI_RefAttr & theObject); + /// Set horizontal SKETCHAPI_EXPORT - std::shared_ptr setHorizontal( + std::shared_ptr setHorizontal( const ModelHighAPI_RefAttr & theLine); /// Set length SKETCHAPI_EXPORT - std::shared_ptr setLength( + std::shared_ptr setLength( const ModelHighAPI_RefAttr & theLine, const ModelHighAPI_Double & theValue); /// Set middle SKETCHAPI_EXPORT - std::shared_ptr setMiddlePoint( + std::shared_ptr setMiddlePoint( const ModelHighAPI_RefAttr & thePoint, const ModelHighAPI_RefAttr & theLine); - // TODO(spo): setMirror - /// Set parallel SKETCHAPI_EXPORT - std::shared_ptr setParallel( + std::shared_ptr setParallel( const ModelHighAPI_RefAttr & theLine1, const ModelHighAPI_RefAttr & theLine2); /// Set perpendicular SKETCHAPI_EXPORT - std::shared_ptr setPerpendicular( + std::shared_ptr setPerpendicular( const ModelHighAPI_RefAttr & theLine1, const ModelHighAPI_RefAttr & theLine2); /// Set radius SKETCHAPI_EXPORT - std::shared_ptr setRadius( + std::shared_ptr setRadius( const ModelHighAPI_RefAttr & theCircleOrArc, const ModelHighAPI_Double & theValue); - /// Set rigid - SKETCHAPI_EXPORT - std::shared_ptr setRigid( - const ModelHighAPI_RefAttr & theObject); - /// Set tangent SKETCHAPI_EXPORT - std::shared_ptr setTangent( + std::shared_ptr setTangent( const ModelHighAPI_RefAttr & theLine, const ModelHighAPI_RefAttr & theCircle); /// Set vertical SKETCHAPI_EXPORT - std::shared_ptr setVertical( + std::shared_ptr setVertical( const ModelHighAPI_RefAttr & theLine); - // TODO(spo): addRectagle, projection, Translation, Rotation - /// Set constraint value SKETCHAPI_EXPORT void setValue( - const std::shared_ptr & theConstraint, + const std::shared_ptr & theConstraint, const ModelHighAPI_Double & theValue); - // TODO(spo): setText. Is it necessary as setValue accepts text expressions? + /// 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); // TODO(spo): rename to selectFaces() or faces() (or add faces() -> list to SWIG) /// Select face SKETCHAPI_EXPORT std::list selectFace() const; + /// Dump wrapped feature + SKETCHAPI_EXPORT + virtual void dump(ModelHighAPI_Dumper& theDumper) const; + protected: std::shared_ptr compositeFeature() const; @@ -316,6 +581,13 @@ SKETCHAPI_EXPORT SketchPtr addSketch(const std::shared_ptr & thePart, const std::string & theExternalName); +/**\ingroup CPPHighAPI + * \brief Create Sketch feature + */ +SKETCHAPI_EXPORT +SketchPtr addSketch(const std::shared_ptr & thePart, + std::shared_ptr thePlaneObject); + //-------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------- #endif /* SRC_SKETCHAPI_SKETCHAPI_SKETCH_H_ */