X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConstructionPlugin%2FConstructionPlugin_Plane.h;h=ce66bb66f32ae2d1ecc6e0c9c759398f5ee387aa;hb=ea593bc59e7e9461f6c4e2afd3f24d621edb1011;hp=e58dd2ec4a4e76b7b297b5adc1bfc213d08b94b5;hpb=3d7368386762b057fff327d24d0079b4a73c3004;p=modules%2Fshaper.git diff --git a/src/ConstructionPlugin/ConstructionPlugin_Plane.h b/src/ConstructionPlugin/ConstructionPlugin_Plane.h index e58dd2ec4..ce66bb66f 100644 --- a/src/ConstructionPlugin/ConstructionPlugin_Plane.h +++ b/src/ConstructionPlugin/ConstructionPlugin_Plane.h @@ -1,53 +1,274 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ConstructionPlugin_Plane.h -// Created: 12 Dec 2014 -// Author: Vitaly Smetannikov +// 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 ConstructionPlugin_Plane_H #define ConstructionPlugin_Plane_H #include "ConstructionPlugin.h" + #include +#include #include -/// Point kind -const std::string CONSTRUCTION_PLANE_KIND("Plane"); - -/// attribute name for base face -const std::string FACE_ATTR = "planeFace"; - -/// attribute name for distance -const std::string DISTANCE_ATTR = "distance"; - -/**\class ConstructionPlugin_Axis - * \ingroup DataModel - * \brief Feature for creation of the new axis in PartSet. - */ -class ConstructionPlugin_Plane : public ModelAPI_Feature, public GeomAPI_ICustomPrs +/// \class ConstructionPlugin_Plane +/// \ingroup Plugins +/// \brief Feature for creation of the new planar surface in PartSet. +class ConstructionPlugin_Plane: public ModelAPI_Feature, public GeomAPI_ICustomPrs { - public: - /// Returns the kind of a feature +public: + /// \return the kind of a feature. CONSTRUCTIONPLUGIN_EXPORT virtual const std::string& getKind() { - static std::string MY_KIND = CONSTRUCTION_PLANE_KIND; + static std::string MY_KIND = ConstructionPlugin_Plane::ID(); return MY_KIND; } + /// Default color for a plane. + inline static const std::string& DEFAULT_COLOR() + { + static const std::string CONSTRUCTION_PLANE_COLOR("150,150,180"); + return CONSTRUCTION_PLANE_COLOR; + } + + /// Plane kind. + inline static const std::string& ID() + { + static const std::string CONSTRUCTION_PLANE_KIND("Plane"); + return CONSTRUCTION_PLANE_KIND; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD() + { + static const std::string MY_CREATION_METHOD_ID("creation_method"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_GENERAL_EQUATION() + { + static const std::string MY_CREATION_METHOD_ID("by_general_equation"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_THREE_POINTS() + { + static const std::string MY_CREATION_METHOD_ID("by_three_points"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_LINE_AND_POINT() + { + static const std::string MY_CREATION_METHOD_ID("by_line_and_point"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_OTHER_PLANE() + { + static const std::string MY_CREATION_METHOD_ID("by_other_plane"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_OTHER_PLANE_OPTION() + { + static const std::string MY_CREATION_METHOD_ID("by_other_plane_option"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_DISTANCE_FROM_OTHER() + { + static const std::string MY_CREATION_METHOD_ID("by_distance_from_other"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_COINCIDENT_TO_POINT() + { + static const std::string MY_CREATION_METHOD_ID("by_coincident_to_point"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_ROTATION() + { + static const std::string MY_CREATION_METHOD_ID("by_rotation"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for creation method. + inline static const std::string& CREATION_METHOD_BY_TWO_PARALLEL_PLANES() + { + static const std::string MY_CREATION_METHOD_ID("by_two_parallel_planes"); + return MY_CREATION_METHOD_ID; + } + + /// Attribute name for first point. + inline static const std::string& POINT1() + { + static const std::string ATTR_ID("point1"); + return ATTR_ID; + } + + /// Attribute name for second point. + inline static const std::string& POINT2() + { + static const std::string ATTR_ID("point2"); + return ATTR_ID; + } + + /// Attribute name for third point. + inline static const std::string& POINT3() + { + static const std::string ATTR_ID("point3"); + return ATTR_ID; + } + + /// Attribute name for line. + inline static const std::string& LINE() + { + static const std::string ATTR_ID("line"); + return ATTR_ID; + } + + /// Attribute name for point. + inline static const std::string& POINT() + { + static const std::string ATTR_ID("point"); + return ATTR_ID; + } + + /// Attribute name for perpendicular flag. + inline static const std::string& PERPENDICULAR() + { + static const std::string ATTR_ID("perpendicular"); + return ATTR_ID; + } + + /// Attribute name for selected plane. + inline static const std::string& PLANE() + { + static const std::string ATTR_ID("plane"); + return ATTR_ID; + } + + /// Attribute name for distance. + inline static const std::string& DISTANCE() + { + static const std::string ATTR_ID("distance"); + return ATTR_ID; + } + + /// Attribute name for reverse flag. + inline static const std::string& REVERSE() + { + static const std::string ATTR_ID("reverse"); + return ATTR_ID; + } + + /// Attribute name for coincident point. + inline static const std::string& COINCIDENT_POINT() + { + static const std::string ATTR_ID("coincident_point"); + return ATTR_ID; + } + + /// Attribute name for axis. + inline static const std::string& AXIS() + { + static const std::string ATTR_ID("axis"); + return ATTR_ID; + } + + /// Attribute name for angle. + inline static const std::string& ANGLE() + { + static const std::string ATTR_ID("angle"); + return ATTR_ID; + } + + inline static const std::string& PLANE1() + { + static const std::string ATTR_ID("plane1"); + return ATTR_ID; + } + + inline static const std::string& PLANE2() + { + static const std::string ATTR_ID("plane2"); + return ATTR_ID; + } + + + /// Attribute name for a parameter for the general equation of a plane (ax+by+cz+d=0) + inline static const std::string& A() + { + static const std::string ATTR_ID("A"); + return ATTR_ID; + } + /// Attribute name for b parameter for the general equation of a plane (ax+by+cz+d=0) + inline static const std::string& B() + { + static const std::string ATTR_ID("B"); + return ATTR_ID; + } + /// Attribute name for c parameter for the general equation of a plane (ax+by+cz+d=0) + inline static const std::string& C() + { + static const std::string ATTR_ID("C"); + return ATTR_ID; + } + /// Attribute name for d parameter for the general equation of a plane (ax+by+cz+d=0) + inline static const std::string& D() + { + static const std::string ATTR_ID("D"); + return ATTR_ID; + } + /// Creates a new part document if needed CONSTRUCTIONPLUGIN_EXPORT virtual void execute(); /// Request for initialization of data model of the feature: adding all attributes CONSTRUCTIONPLUGIN_EXPORT virtual void initAttributes(); - /// Construction result is allways recomuted on the fly - CONSTRUCTIONPLUGIN_EXPORT virtual bool isPersistentResult() {return false;} - /// Use plugin manager for features creation ConstructionPlugin_Plane(); /// Customize presentation of the feature - virtual void customisePresentation(AISObjectPtr thePrs); + virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs, + std::shared_ptr theDefaultPrs); + +protected: + /// Creates a new plane by general equation. + std::shared_ptr createByGeneralEquation(); + std::shared_ptr createByThreePoints(); + std::shared_ptr createByLineAndPoint(); + std::shared_ptr createByCoincidentPoint(); + std::shared_ptr createByRotation(); + std::shared_ptr createByTwoParallelPlanes(); + /// Creates a new plane by copy of face plane with translation along the normal + /// to the specified distance. + std::shared_ptr createByDistanceFromOther(); }; -#endif \ No newline at end of file +#endif