X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_ShapeAPI.h;h=fe1f86f2b54b8aa4bdbff503ecd8ccf5a105248a;hb=d5d78920316491975a67f76578982b401cdfe71d;hp=d84249c6145fe3d1bbf83d887f7bd7d6c72829d8;hpb=2c892f5ecdcdbdce82da2b0bbd8f0c878971a076;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_ShapeAPI.h b/src/GeomAlgoAPI/GeomAlgoAPI_ShapeAPI.h index d84249c61..fe1f86f2b 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_ShapeAPI.h +++ b/src/GeomAlgoAPI/GeomAlgoAPI_ShapeAPI.h @@ -1,13 +1,27 @@ -// Copyright (C) 2014-2016 CEA/DEN, EDF R&D - -// File: GeomAlgoAPI_ShapeAPI.h -// Created: 17 Mar 2016 -// Author: Clarisse Genrault (CEA) +// 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 +// #ifndef GEOMALGOAPI_SHAPEAPI_H #define GEOMALGOAPI_SHAPEAPI_H #include +#include #include #include #include @@ -37,28 +51,246 @@ public: /// \return a shape static std::shared_ptr makeBox(std::shared_ptr theFirstPoint, std::shared_ptr theSecondPoint) throw (GeomAlgoAPI_Exception); - + + /// Creates a cylinder using a center, an axis, a radius and a height. + /// \param theBasePoint The center of the lower base of the cylinder + /// \param theEdge The axis of the cylinder + /// \param theRadius The radius of the cylinder + /// \param theHeight The heigth of the cylinder + static std::shared_ptr makeCylinder(std::shared_ptr theBasePoint, + std::shared_ptr theEdge, double theRadius, double theHeight) + throw (GeomAlgoAPI_Exception); + + /// Creates a portion of cylinder using a center, an axis, a radius, a height and an angle. + /// \param theBasePoint The center of the lower base of the cylinder + /// \param theEdge The axis of the cylinder + /// \param theRadius The radius of the cylinder + /// \param theHeight The heigth of the cylinder + /// \param theAngle The angle defining the portion + static std::shared_ptr makeCylinder(std::shared_ptr theBasePoint, + std::shared_ptr theEdge, double theRadius, double theHeight, + double theAngle) throw (GeomAlgoAPI_Exception); + + /// Creates a cylinder using the origin, the OZ axis, a radius and a height. + /// \param theRadius The radius of the cylinder + /// \param theHeight The heigth of the cylinder + static std::shared_ptr makeCylinder(double theRadius, double theHeight) + throw (GeomAlgoAPI_Exception); + + /// Creates a portion of cylinder using the origin, the OZ axis, a radius, a height and an angle. + /// \param theRadius The radius of the cylinder + /// \param theHeight The heigth of the cylinder + /// \param theAngle The angle defining the portion + static std::shared_ptr makeCylinder(double theRadius, double theHeight, + double theAngle) throw (GeomAlgoAPI_Exception); + + /// Creates a sphere using a center and a radius. + /// \param theCenterPoint The center of the sphere + /// \param theRadius The radius of the sphere + static std::shared_ptr makeSphere(std::shared_ptr theCenterPoint, + double theRadius) throw (GeomAlgoAPI_Exception); + + /// Creates a sphere using the origin and a radius. + /// \param theRadius The radius of the sphere + static std::shared_ptr makeSphere(double theRadius) + throw (GeomAlgoAPI_Exception); + + /// Creates a torus using a base point, an axis, a radius and a ring radius. + /// \param theBasePoint The center of the torus + /// \param theEdge The axis of the torus + /// \param theRadius The radius of the torus + /// \param theRingRadius The ring radius of the torus + static std::shared_ptr makeTorus(std::shared_ptr theBasePoint, + std::shared_ptr theEdge, double theRadius, double theRingRadius) + throw (GeomAlgoAPI_Exception); + + /// Creates a torus using a radius and a ring radius. + /// \param theRadius The radius of the torus + /// \param theRingRadius The ring radius of the torus + static std::shared_ptr makeTorus(double theRadius, double theRingRadius) + throw (GeomAlgoAPI_Exception); + + /// Creates a cone using a base point, an axis, a base radius, a top radius and a height. + /// \param theBasePoint The center of the lower base of the cone + /// \param theEdge The axis of the cone + /// \param theBaseRadius The base radius of the cone + /// \param theTopRadius The top radius of the cone + /// \param theHeight The height of the cone + static std::shared_ptr makeCone(std::shared_ptr theBasePoint, + std::shared_ptr theEdge, double theBaseRadius, + double theTopRadius, double theHeight) throw (GeomAlgoAPI_Exception); + + /// Creates a cone using a base radius, a top radius and a height. + /// \param theBaseRadius The base radius of the cone + /// \param theTopRadius The top radius of the cone + /// \param theHeight The height of the cone + static std::shared_ptr makeCone(double theBaseRadius, double theTopRadius, + double theHeight) throw (GeomAlgoAPI_Exception); + /// Performs a translation from an axis and a distance. - /// \param theSourceShape Shape to be moved. - /// \param theAxis Movement axis. - /// \param theDistance Movement distance. + /// \param theSourceShape Shape to be moved + /// \param theAxis Movement axis + /// \param theDistance Movement distance /// \return a shape static std::shared_ptr makeTranslation( std::shared_ptr theSourceShape, - std::shared_ptr theAxis, + std::shared_ptr theAxis, const double theDistance) throw (GeomAlgoAPI_Exception); - + /// Performs a translation from dimensions. - /// \param theSourceShape Shape to be moved. - /// \param theDx Movement dimension on X. - /// \param theDy Movement dimension on Y. - /// \param theDz Movement dimension on Z. + /// \param theSourceShape Shape to be moved + /// \param theDx Movement dimension on X + /// \param theDy Movement dimension on Y + /// \param theDz Movement dimension on Z /// \return a shape static std::shared_ptr makeTranslation( std::shared_ptr theSourceShape, const double theDx, const double theDy, const double theDz) throw (GeomAlgoAPI_Exception); + + /// Performs a translation from two points. + /// \param theSourceShape Shape to be moved + /// \param theStartPoint Movement start point + /// \param theEndPoint Movement end point + /// \return a shape + static std::shared_ptr makeTranslation( + std::shared_ptr theSourceShape, + std::shared_ptr theStartPoint, + std::shared_ptr theEndPoint) throw (GeomAlgoAPI_Exception); + + /// Performs a rotation from an axis and an angle. + /// \param theSourceShape Shape to be rotated + /// \param theAxis Movement axis + /// \param theAngle Movement angle + /// \return a shape + static std::shared_ptr makeRotation( + std::shared_ptr theSourceShape, + std::shared_ptr theAxis, + const double theAngle) throw (GeomAlgoAPI_Exception); + + /// Performs a rotation from three points. + /// \param theSourceShape Shape to be rotated + /// \param theCenterPoint Movement center point + /// \param theStartPoint Movement start point + /// \param theEndPoint Movement end point + /// \return a shape + static std::shared_ptr makeRotation( + std::shared_ptr theSourceShape, + std::shared_ptr theCenterPoint, + std::shared_ptr theStartPoint, + std::shared_ptr theEndPoint) throw (GeomAlgoAPI_Exception); + + /// Performs a symmetry by a point. + /// \param theSourceShape Shape be symmetrized + /// \param thePoint Point of symmetry + static std::shared_ptr makeSymmetry( + std::shared_ptr theSourceShape, + std::shared_ptr thePoint) throw (GeomAlgoAPI_Exception); + + /// Performs a symmetry by an axis. + /// \param theSourceShape Shape be symmetrized + /// \param theAxis Axis of symmetry + static std::shared_ptr makeSymmetry( + std::shared_ptr theSourceShape, + std::shared_ptr theAxis) throw (GeomAlgoAPI_Exception); + + /// Performs a symmetry by a plane. + /// \param theSourceShape Shape be symmetrized + /// \param thePlane Plane of symmetry + static std::shared_ptr makeSymmetry( + std::shared_ptr theSourceShape, + std::shared_ptr thePlane) throw (GeomAlgoAPI_Exception); + + /// Performs a scale by a scale factor. + /// \param theSourceShape Shape be scaled + /// \param theCenterPoint Point of scale + /// \param theScaleFactor Factor of scale + static std::shared_ptr makeScale( + std::shared_ptr theSourceShape, + std::shared_ptr theCenterPoint, + const double theScaleFactor) throw (GeomAlgoAPI_Exception); + + /// Performs a scale by dimensions. + /// \param theSourceShape Shape be scaled + /// \param theCenterPoint Point of scale + /// \param theScaleFactorX Factor of scale in X + /// \param theScaleFactorY Factor of scale in Y + /// \param theScaleFactorZ Factor of scale in Z + static std::shared_ptr makeScale( + std::shared_ptr theSourceShape, + std::shared_ptr theCenterPoint, + const double theScaleFactorX, + const double theScaleFactorY, + const double theScaleFactorZ) throw (GeomAlgoAPI_Exception); + + /// Performs a multi translation along one axis, at a distance and a number of times + /// \param theSourceShape Shape to be moved + /// \param theAxis Movement axis + /// \param theStep Movement step + /// \param theNumber Movement number + /// \return a shape + static std::shared_ptr makeMultiTranslation( + std::shared_ptr theSourceShape, + std::shared_ptr theAxis, + const double theStep, + const int theNumber) throw (GeomAlgoAPI_Exception); + + /// Performs a multi translation along two axis : a different distance on each axis + /// and a different number of times for each axis + /// \param theSourceShape Shape to be moved + /// \param theFirstAxis First movement axis + /// \param theFirstStep First movement step + /// \param theFirstNumber First movement number + /// \param theSecondAxis First movement axis + /// \param theSecondStep First movement step + /// \param theSecondNumber First movement number + /// \return a shape + static std::shared_ptr makeMultiTranslation( + std::shared_ptr theSourceShape, + std::shared_ptr theFirstAxis, + const double theFirstStep, + const int theFirstNumber, + std::shared_ptr theSecondAxis, + const double theSecondStep, + const int theSecondNumber) throw (GeomAlgoAPI_Exception); + + /// Performs a multi rotation along one axis and a number of times + /// \param[in] theSourceShape Shape to be rotated + /// \param[in] theAxis Axis for the rotation + /// \param[in] theNumber Number of copies + static std::shared_ptr makeMultiRotation( + std::shared_ptr theSourceShape, + std::shared_ptr theAxis, + const int theNumber) throw (GeomAlgoAPI_Exception); + + /// Performs a multi rotation along one axis, at a step and a number of times + /// \param theSourceShape Shape to be moved + /// \param[in] theAxis Axis for the rotation + /// \param[in] theStep Angle for each rotation + /// \param[in] theNumber Number of copies + static std::shared_ptr makeMultiRotation( + std::shared_ptr theSourceShape, + std::shared_ptr theAxis, + const double theStep, + const int theNumber) throw (GeomAlgoAPI_Exception); + + /// Creates a cone segment using standard GDML parameters. + /// \param theRMin1 Inner radius at base of cone + /// \param theRMax1 Outer radius at base of cone + /// \param theRMin2 Inner radius at top of cone + /// \param theRMax2 Outer radius at top of cone + /// \param theZ Height of cone segment + /// \param theStartPhi Start angle of the segment + /// \param theDeltaPhi Angle of the segment + static std::shared_ptr makeConeSegment( + const double theRMin1, + const double theRMax1, + const double theRMin2, + const double theRMax2, + const double theZ, + const double theStartPhi, + const double theDeltaPhi) throw (GeomAlgoAPI_Exception); }; } #endif