X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_Rotation.h;h=0f196e66a529ca7b2b5e43840863b648b7e63b5c;hb=fc72d43b677baa05ae7fd317346fd8b723b799ed;hp=1326e7ac55f90488149e5328a2f5f770021d6fc3;hpb=95eaef2c17309c871072a4cfb98f2df39badb48e;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_Rotation.h b/src/FeaturesPlugin/FeaturesPlugin_Rotation.h old mode 100755 new mode 100644 index 1326e7ac5..0f196e66a --- a/src/FeaturesPlugin/FeaturesPlugin_Rotation.h +++ b/src/FeaturesPlugin/FeaturesPlugin_Rotation.h @@ -1,8 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: FeaturesPlugin_Rotation.h -// Created: 12 May 2015 -// Author: Dmitry Bobylev +// Copyright (C) 2014-2023 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 FeaturesPlugin_Rotation_H_ #define FeaturesPlugin_Rotation_H_ @@ -11,7 +24,7 @@ #include -#include +class GeomAPI_Trsf; /// \class FeaturesPlugin_Rotation /// \ingroup Plugins @@ -26,6 +39,27 @@ class FeaturesPlugin_Rotation : public ModelAPI_Feature return MY_ROTATION_ID; } + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD() + { + static const std::string MY_CREATION_METHOD_ID("CreationMethod"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method "ByAxisAndAngle". + inline static const std::string& CREATION_METHOD_BY_ANGLE() + { + static const std::string MY_CREATION_METHOD_ID("ByAxisAndAngle"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method "ByThreePoints". + inline static const std::string& CREATION_METHOD_BY_THREE_POINTS() + { + static const std::string MY_CREATION_METHOD_ID("ByThreePoints"); + return MY_CREATION_METHOD_ID; + } + /// Attribute name of referenced objects. inline static const std::string& OBJECTS_LIST_ID() { @@ -47,6 +81,27 @@ class FeaturesPlugin_Rotation : public ModelAPI_Feature return MY_ANGLE_ID; } + /// Attribute name of a center point. + inline static const std::string& CENTER_POINT_ID() + { + static const std::string MY_CENTER_POINT_ID("center_point"); + return MY_CENTER_POINT_ID; + } + + /// Attribute name of a center point. + inline static const std::string& START_POINT_ID() + { + static const std::string MY_START_POINT_ID("start_point"); + return MY_START_POINT_ID; + } + + /// Attribute name of a center point. + inline static const std::string& END_POINT_ID() + { + static const std::string MY_END_POINT_ID("end_point"); + return MY_END_POINT_ID; + } + /// \return the kind of a feature. FEATURESPLUGIN_EXPORT virtual const std::string& getKind() { @@ -54,7 +109,7 @@ class FeaturesPlugin_Rotation : public ModelAPI_Feature return MY_KIND; } - /// Creates a new part document if needed. + /// Performs the algorithm and stores results it in the data structure. FEATURESPLUGIN_EXPORT virtual void execute(); /// Request for initialization of data model of the feature: adding all attributes. @@ -64,9 +119,14 @@ class FeaturesPlugin_Rotation : public ModelAPI_Feature FeaturesPlugin_Rotation(); private: - void loadNamingDS(GeomAlgoAPI_Rotation& theRotaionAlgo, - std::shared_ptr theResultBody, - std::shared_ptr theBaseShape); + /// Calculate the rotation using an axis and an angle. + std::shared_ptr rotationByAxisAndAngle(); + + /// Calculate the rotation using a center and two points. + std::shared_ptr rotationByThreePoints(); + + /// Perform the transformation + void performRotation(const std::shared_ptr& theTrsf); }; #endif