X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_Placement.h;h=ddf361d7fb4634e0f6271a204799bd4488706c9b;hb=3ce3e69a217055142b03d67add35d054979a6340;hp=e96541de32bf43b44a7b147077f6d97ac611a45a;hpb=88ca95388a92f9bbe96d81bf5b1456ca1179100e;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_Placement.h b/src/FeaturesPlugin/FeaturesPlugin_Placement.h index e96541de3..ddf361d7f 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Placement.h +++ b/src/FeaturesPlugin/FeaturesPlugin_Placement.h @@ -1,8 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> - -// File: FeaturesPlugin_Placement.h -// Created: 2 Dec 2014 -// Author: Artem ZHIDKOV +// 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 +// #ifndef FeaturesPlugin_Placement_H_ #define FeaturesPlugin_Placement_H_ @@ -10,6 +23,7 @@ #include "FeaturesPlugin.h" #include #include +#include class ModelAPI_ResultBody; class GeomAPI_Shape; @@ -18,9 +32,9 @@ class GeomAPI_Shape; * \ingroup Plugins * \brief Feature for applying of placement operation: relative movement of Solid. * - * Locates the selected attractable_face of the solid in the middle of the selected - * placement_base face. Faces must be planar. Orientation of the placed solid is - * depended on the underlied planes of both faces. + * Locates the selected placement_attractable_object (face, edge, vertex) of the solid into + * the selected placement_base_object. Faces must be planar, edges must be linear. + * Orientation of the placed solid depends on the underlied planes of both faces. */ class FeaturesPlugin_Placement : public ModelAPI_Feature { @@ -31,17 +45,38 @@ class FeaturesPlugin_Placement : public ModelAPI_Feature static const std::string MY_PLACEMENT_ID("Placement"); return MY_PLACEMENT_ID; } - /// attribute name of referenced face - inline static const std::string& BASE_FACE_ID() + + /// attribute name of references sketch entities list, it should contain a sketch result or + /// a pair a sketch result to sketch face + inline static const std::string& OBJECTS_LIST_ID() + { + static const std::string MY_OBJECTS_LIST_ID("placement_objects_list"); + return MY_OBJECTS_LIST_ID; + } + + /// attribute name of referenced object + inline static const std::string& START_SHAPE_ID() { - static const std::string MY_BASE_FACE_ID("placement_base_face"); - return MY_BASE_FACE_ID; + static const std::string MY_START_SHAPE_ID("placement_start_shape"); + return MY_START_SHAPE_ID; } /// attribute name of attractable face - inline static const std::string& ATTRACT_FACE_ID() + inline static const std::string& END_SHAPE_ID() + { + static const std::string MY_END_SHAPE_ID("placement_end_shape"); + return MY_END_SHAPE_ID; + } + /// attribute name of flag of reverse direction + inline static const std::string& REVERSE_ID() + { + static const std::string MY_REVERSE_ID("placement_reverse_direction"); + return MY_REVERSE_ID; + } + /// attribute name of flag of centering position + inline static const std::string& CENTERING_ID() { - static const std::string MY_ATTRACT_FACE_ID("placement_attractable_face"); - return MY_ATTRACT_FACE_ID; + static const std::string MY_CENTERING_ID("placement_centering"); + return MY_CENTERING_ID; } /// Returns the kind of a feature @@ -51,7 +86,7 @@ class FeaturesPlugin_Placement : 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 @@ -60,10 +95,8 @@ class FeaturesPlugin_Placement : public ModelAPI_Feature /// Use plugin manager for features creation FeaturesPlugin_Placement(); private: - /// Load Naming data structure of the feature to the document - void LoadNamingDS(GeomAlgoAPI_Placement& theFeature, - std::shared_ptr theResultBody, - std::shared_ptr theSlaveObject); + /// Checks validity of passed shape. + bool isShapeValid(GeomShapePtr theShape); }; #endif