X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConstructionAPI%2FConstructionAPI_Point.h;h=1af65318dbc7a7646c4d82fad017f675a3f03bd9;hb=5fbfd2e75c41fcacf436f668bf4f5898bf37a1a9;hp=612df30753685f73857ca68f134df08d0aeb6b68;hpb=40677b43bb137a6f014fafbc5ce4f647dc597f39;p=modules%2Fshaper.git diff --git a/src/ConstructionAPI/ConstructionAPI_Point.h b/src/ConstructionAPI/ConstructionAPI_Point.h index 612df3075..1af65318d 100644 --- a/src/ConstructionAPI/ConstructionAPI_Point.h +++ b/src/ConstructionAPI/ConstructionAPI_Point.h @@ -1,8 +1,21 @@ -// Name : ConstructionAPI_Point.h -// Purpose: +// Copyright (C) 2014-2020 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: -// 29/03/16 - Sergey POKHODENKO - Creation of the file #ifndef SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_POINT_H_ #define SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_POINT_H_ @@ -39,36 +52,86 @@ public: CONSTRUCTIONAPI_EXPORT ConstructionAPI_Point(const std::shared_ptr& theFeature, const ModelHighAPI_Selection& theEdge, - const ModelHighAPI_Double& theDistanceValue, - const bool theDistancePercent = false, + const ModelHighAPI_Double& theOffset, + const bool theUseRatio = false, const bool theReverse = false); - /// Constructor with values. + /// Constructor with values: intersected objects. CONSTRUCTIONAPI_EXPORT ConstructionAPI_Point(const std::shared_ptr& theFeature, const ModelHighAPI_Selection& theObject1, const ModelHighAPI_Selection& theObject2); + /// Constructor with values: intersected objects. + CONSTRUCTIONAPI_EXPORT + ConstructionAPI_Point(const std::shared_ptr& theFeature, + const ModelHighAPI_Selection& theObject1, + const ModelHighAPI_Selection& theObject2, + const ModelHighAPI_Selection& theObject3); + + /// Constructor with values: object and circular edge flag. + /// May be used for creation of point by coordinates using selection-vertex. + CONSTRUCTIONAPI_EXPORT + ConstructionAPI_Point(const std::shared_ptr& theFeature, + const ModelHighAPI_Selection& theObject, + const bool theIsCircularEdge = false, + const bool theIsXYZSelection = false); + /// Destructor. CONSTRUCTIONAPI_EXPORT virtual ~ConstructionAPI_Point(); - INTERFACE_14(ConstructionPlugin_Point::ID(), - creationMethod, ConstructionPlugin_Point::CREATION_METHOD(), ModelAPI_AttributeString, /** Creation method */, - x, ConstructionPlugin_Point::X(), ModelAPI_AttributeDouble, /** X attribute */, - y, ConstructionPlugin_Point::Y(), ModelAPI_AttributeDouble, /** Y attribute */, - z, ConstructionPlugin_Point::Z(), ModelAPI_AttributeDouble, /** Z attribute */, - edge, ConstructionPlugin_Point::EDGE(), ModelAPI_AttributeSelection, /** Edge attribute */, - distanceValue, ConstructionPlugin_Point::DISTANCE_VALUE(), ModelAPI_AttributeDouble, /** Distance value attribute */, - distancePercent, ConstructionPlugin_Point::DISTANCE_PERCENT(), ModelAPI_AttributeBoolean, /** Distance percent attribute */, - reverse, ConstructionPlugin_Point::REVERSE(), ModelAPI_AttributeBoolean, /** Reverse attribute */, - point, ConstructionPlugin_Point::POINT(), ModelAPI_AttributeSelection, /** Point attribute */, - plane, ConstructionPlugin_Point::PLANE(), ModelAPI_AttributeSelection, /** Plane attribute */, - firstLine, ConstructionPlugin_Point::FIRST_LINE(), ModelAPI_AttributeSelection, /** First line attribute */, - secondLine, ConstructionPlugin_Point::SECOND_LINE(), ModelAPI_AttributeSelection, /** Second line attribute */, - intersectionLine, ConstructionPlugin_Point::INTERSECTION_LINE(), ModelAPI_AttributeSelection, /** Intersection line attribute */, - intersectionPlane, ConstructionPlugin_Point::INTERSECTION_PLANE(), ModelAPI_AttributeSelection, /** Intersection plane attribute */ - ) + INTERFACE_25(ConstructionPlugin_Point::ID(), + point, ConstructionPlugin_Point::POINT3D(), + GeomDataAPI_Point, /** Point attribute */, + creationMethod, ConstructionPlugin_Point::CREATION_METHOD(), + ModelAPI_AttributeString, /** Creation method */, + intersectionType, ConstructionPlugin_Point::INTERSECTION_TYPE(), + ModelAPI_AttributeString, /** Type of the intersection */, + intersectionLine1, ConstructionPlugin_Point::INTERSECTION_LINE_1(), + ModelAPI_AttributeSelection, /** Line for intersection */, + intersectionLine2, ConstructionPlugin_Point::INTERSECTION_LINE_2(), + ModelAPI_AttributeSelection, /** Line for intersection */, + intersectionLine, ConstructionPlugin_Point::INTERSECTION_LINE(), + ModelAPI_AttributeSelection, /** Line for intersection */, + intersectionPlane, ConstructionPlugin_Point::INTERSECTION_PLANE(), + ModelAPI_AttributeSelection, /** Plane for intersection */, + intersectionPlane1, ConstructionPlugin_Point::INTERSECTION_PLANE_1(), + ModelAPI_AttributeSelection, /** Plane for intersection */, + intersectionPlane2, ConstructionPlugin_Point::INTERSECTION_PLANE_2(), + ModelAPI_AttributeSelection, /** Plane for intersection */, + intersectionPlane3, ConstructionPlugin_Point::INTERSECTION_PLANE_3(), + ModelAPI_AttributeSelection, /** Plane for intersection */, + useOffset, ConstructionPlugin_Point::USE_OFFSET(), + ModelAPI_AttributeString, /** Use offset */, + offset, ConstructionPlugin_Point::OFFSET(), + ModelAPI_AttributeDouble, /** Offset */, + reverseOffset, ConstructionPlugin_Point::REVERSE_OFFSET(), + ModelAPI_AttributeBoolean, /** Reverse offset */, + edge, ConstructionPlugin_Point::EDGE(), + ModelAPI_AttributeSelection, /** Edge */, + offsetType, ConstructionPlugin_Point::OFFSET_TYPE(), + ModelAPI_AttributeString, /** Type of the offset on edge */, + distance, ConstructionPlugin_Point::DISTANCE(), + ModelAPI_AttributeDouble, /** Distance */, + ratio, ConstructionPlugin_Point::RATIO(), + ModelAPI_AttributeDouble, /** Ratio */, + reverse, ConstructionPlugin_Point::REVERSE(), + ModelAPI_AttributeBoolean, /** Reverse */, + pointToProject, ConstructionPlugin_Point::POINT_TO_PROJECT(), + ModelAPI_AttributeSelection, /** Point to project*/, + projectionType, ConstructionPlugin_Point::PROJECTION_TYPE(), + ModelAPI_AttributeString, /** Type of the point projection */, + faceForPointProjection, ConstructionPlugin_Point::FACE_FOR_POINT_PROJECTION(), + ModelAPI_AttributeSelection, /** Face for point projection */, + edgeForPointProjection, ConstructionPlugin_Point::EDGE_FOR_POINT_PROJECTION(), + ModelAPI_AttributeSelection, /** Edge for point projection */, + geometricalPropertyType, ConstructionPlugin_Point::GEOMETRICAL_PROPERTY_TYPE(), + ModelAPI_AttributeString, /** Type of the geometrical property */, + objectForCenterOfGravity, ConstructionPlugin_Point::OBJECT_FOR_CENTER_OF_GRAVITY(), + ModelAPI_AttributeSelection, /** Object for center of gravity */, + objectForCenterOfCircle, ConstructionPlugin_Point::OBJECT_FOR_CENTER_OF_CIRCLE(), + ModelAPI_AttributeSelection, /** Object for center of circle */) /// Set point values. CONSTRUCTIONAPI_EXPORT @@ -78,15 +141,20 @@ public: /// Set edge and distance on it for point. CONSTRUCTIONAPI_EXPORT - void setByDistanceOnEdge(const ModelHighAPI_Selection& theEdge, - const ModelHighAPI_Double& theDistanceValue, - const bool theDistancePercent = false, - const bool theReverse = false); + void setByOffsetOnEdge(const ModelHighAPI_Selection& theEdge, + const ModelHighAPI_Double& theOffset, + const bool theUseRatio = false, + const bool theReverse = false); + + /// Set point and edge for projection. + CONSTRUCTIONAPI_EXPORT + void setByProjectionOnEdge(const ModelHighAPI_Selection& theVertex, + const ModelHighAPI_Selection& theEdge); - /// Set point and plane for projection. + /// Set point and face for projection. CONSTRUCTIONAPI_EXPORT - void setByProjection(const ModelHighAPI_Selection& theVertex, - const ModelHighAPI_Selection& theFace); + void setByProjectionOnFace(const ModelHighAPI_Selection& theVertex, + const ModelHighAPI_Selection& theFace); /// Set lines for intersections. CONSTRUCTIONAPI_EXPORT @@ -97,6 +165,24 @@ public: CONSTRUCTIONAPI_EXPORT void setByLineAndPlaneIntersection(const ModelHighAPI_Selection& theEdge, const ModelHighAPI_Selection& theFace); + + /// Set faces for intersections. + CONSTRUCTIONAPI_EXPORT + void setByPlanesIntersection(const ModelHighAPI_Selection& theFace1, + const ModelHighAPI_Selection& theFace2, + const ModelHighAPI_Selection& theFace3); + + /// Set object for center of gravity. + CONSTRUCTIONAPI_EXPORT + void setByCenterOfGravity(const ModelHighAPI_Selection& theObject); + + /// Set object for center of circular edge. + CONSTRUCTIONAPI_EXPORT + void setByCenterOfCircle(const ModelHighAPI_Selection& theObject); + + /// Dump wrapped feature + CONSTRUCTIONAPI_EXPORT + virtual void dump(ModelHighAPI_Dumper& theDumper) const; }; /// Pointer on Point object. @@ -115,15 +201,46 @@ PointPtr addPoint(const std::shared_ptr & thePart, CONSTRUCTIONAPI_EXPORT PointPtr addPoint(const std::shared_ptr & thePart, const ModelHighAPI_Selection& theEdge, - const ModelHighAPI_Double& theDistanceValue, - const bool theDistancePercent = false, + const ModelHighAPI_Double& theOffset, + const bool theUseRatio = false, const bool theReverse = false); /// \ingroup CPPHighAPI -/// \brief Create Point feature +/// \brief Create Point feature as an intersection of selected plane (or planar face) and edge CONSTRUCTIONAPI_EXPORT PointPtr addPoint(const std::shared_ptr & thePart, const ModelHighAPI_Selection& theObject1, const ModelHighAPI_Selection& theObject2); -#endif /* SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_POINT_H_ */ +/// \ingroup CPPHighAPI +/// \brief Create Point feature as an intersection of selected plane (or planar face) and edge +/// with positive distance from the plane and flag to reverse the offset direction. +CONSTRUCTIONAPI_EXPORT +PointPtr addPoint(const std::shared_ptr & thePart, + const ModelHighAPI_Selection& theObject1, + const ModelHighAPI_Selection& theObject2, + const ModelHighAPI_Double& theDistanceValue, + const bool theReverse = false); + +/// \ingroup CPPHighAPI +/// \brief Create Point feature as an intersection of selected planes. +CONSTRUCTIONAPI_EXPORT +PointPtr addPoint(const std::shared_ptr & thePart, + const ModelHighAPI_Selection& theObject1, + const ModelHighAPI_Selection& theObject2, + const ModelHighAPI_Selection& theObject3); + +/// \ingroup CPPHighAPI +/// \brief Create Point feature as a geometrical property. +CONSTRUCTIONAPI_EXPORT +PointPtr addPoint(const std::shared_ptr & thePart, + const ModelHighAPI_Selection& theObject, + const bool theIsCircularEdge = false); + +/// \ingroup CPPHighAPI +/// \brief Create Point feature by coordinates using the selected vertex. +CONSTRUCTIONAPI_EXPORT +PointPtr addPointXYZ(const std::shared_ptr & thePart, + const ModelHighAPI_Selection& theObject); + +#endif /* SRC_CONSTRUCTIONAPI_CONSTRUCTIONAPI_POINT_H_ */