X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_CompositeSketch.h;h=72413a03f5c9c3e226b4ab5914ee085a98816c4c;hb=dd140b9ea4a1563b93cd088b3d601e4adc074608;hp=d4307edeb965434798f47bab0fab2a3f5fa9e434;hpb=ea4d65430ad05a8f47f4c2d95c4b09260d6ed3ab;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h b/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h index d4307edeb..72413a03f 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h +++ b/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h @@ -1,45 +1,51 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: FeaturesPlugin_CompositeSketch.h -// Created: 11 September 2015 -// Author: Dmitry Bobylev +// Copyright (C) 2014-2021 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_CompositeSketch_H_ #define FeaturesPlugin_CompositeSketch_H_ -#include +#include "FeaturesPlugin.h" #include -#include +#include -/** \class FeaturesPlugin_CompositeSketch - * \ingroup Plugins - * \brief Interface for the composite sketch feature. - */ +/// \class FeaturesPlugin_CompositeSketch +/// \ingroup Plugins +/// \brief Interface for the composite sketch feature. class FeaturesPlugin_CompositeSketch : public ModelAPI_CompositeFeature { - public: +public: /// Attribute name of sketch feature. - inline static const std::string& SKETCH_OBJECT_ID() + inline static const std::string& SKETCH_ID() { - static const std::string MY_SKETCH_OBJECT_ID("sketch"); - return MY_SKETCH_OBJECT_ID; + static const std::string MY_SKETCH_ID("sketch"); + return MY_SKETCH_ID; } - /// Attribute name of sketch feature selection: needed for naming of the selected sketch. - inline static const std::string& SKETCH_SELECTION_ID() + /// Attribute name of base objects. + inline static const std::string& BASE_OBJECTS_ID() { - static const std::string MY_SKETCH_SELECTION_ID("sketch_selection"); - return MY_SKETCH_SELECTION_ID; + static const std::string MY_BASE_OBJECTS_ID("base"); + return MY_BASE_OBJECTS_ID; } - /// Creates a new part document if needed. - FEATURESPLUGIN_EXPORT virtual void execute(); - - /// Request for initialization of data model of the feature: adding all attributes. - FEATURESPLUGIN_EXPORT virtual void initAttributes(); - /// Appends a feature to the sketch sub-elements container. FEATURESPLUGIN_EXPORT virtual std::shared_ptr addFeature(std::string theID); @@ -47,7 +53,8 @@ class FeaturesPlugin_CompositeSketch : public ModelAPI_CompositeFeature FEATURESPLUGIN_EXPORT virtual int numberOfSubs(bool forTree = false) const; /// \return the sub-feature by zero-base index. - FEATURESPLUGIN_EXPORT virtual std::shared_ptr subFeature(const int theIndex, bool forTree = false); + FEATURESPLUGIN_EXPORT virtual + std::shared_ptr subFeature(const int theIndex, bool forTree = false); /// \return the sub-feature unique identifier in this composite feature by zero-base index. FEATURESPLUGIN_EXPORT virtual int subFeatureId(const int theIndex) const; @@ -56,26 +63,44 @@ class FeaturesPlugin_CompositeSketch : public ModelAPI_CompositeFeature FEATURESPLUGIN_EXPORT virtual bool isSub(ObjectPtr theObject) const; /// This method to inform that sub-feature is removed and must be removed from the internal data - /// structures of the owner (the remove from the document will be done outside just after) + /// structures of the owner (the remove from the document will be done outside just after). FEATURESPLUGIN_EXPORT virtual void removeFeature(std::shared_ptr theFeature); - /// removes also all sub-sketch - FEATURESPLUGIN_EXPORT virtual void erase(); - protected: - FeaturesPlugin_CompositeSketch(){}; - - /// Define this function to init attributes for extrusion/revolution. - virtual void initMakeSolidsAttributes() = 0; + enum InitFlags { + InitSketchLauncher = 1 << 0, + InitBaseObjectsList = 1 << 1 + }; - /// Define this function to create solids from faces with extrusion/revolution. - virtual void makeSolid(const std::shared_ptr theFace, - std::shared_ptr& theMakeShape) = 0; + FeaturesPlugin_CompositeSketch(){}; - /// Results naming. - void loadNamingDS(std::shared_ptr theResultBody, - const std::shared_ptr& theBaseShape, - const std::shared_ptr& theMakeShape); + /// Initializes composite sketch attributes. + void initCompositeSketchAttribtues(const int theInitFlags); + + /// \brief Returns list of base shapes. + /// \param[out] theBaseShapesList list of base shapes (warning: list not cleared). + /// \param[in] theIsMakeShells if true make shells from faces with shared edges. + void getBaseShapes(ListOfShape& theBaseShapesList, const bool theIsMakeShells = true); + + /// Stores result of generation. + void storeResult(const GeomShapePtr theBaseShape, + const std::shared_ptr theMakeShape, + const int theIndex = 0); + + /// Stores generation history. + void storeGenerationHistory(ResultBodyPtr theResultBody, + const GeomShapePtr theBaseShape, + const std::shared_ptr theMakeShape); + + /// Used to store from and to shapes: generated, or in common modified tag + void storeShapes(const std::shared_ptr theMakeShape, + ResultBodyPtr theResultBody, + const GeomAPI_Shape::ShapeType theBaseShapeType, + const ListOfShape& theShapes, + const std::string theName); + +private: + std::string myCurrentSelectionType; //< type of selection (vertex, edge or face) }; #endif