X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_CompositeSketch.h;h=72ee31341a4e99caf1a096aef9bf111dd23d303c;hb=cc958db6897ac22fbd029ed613feea4c3f1bd669;hp=1ad620eb49a6b320c08ef16935ed813d02110150;hpb=1b93f1881c5fec599aa79707f93c84dd9c287bc0;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h b/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h index 1ad620eb4..72ee31341 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-2022 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. - 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,34 +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: + enum InitFlags { + InitSketchLauncher = 1 << 0, + InitBaseObjectsList = 1 << 1 + }; + FeaturesPlugin_CompositeSketch(){}; - /// Define this function to init attributes for extrusion/revolution. - virtual void initMakeSolidsAttributes() = 0; - - /// Define this function to create solids from faces with extrusion/revolution. - virtual void makeSolid(const std::shared_ptr theFace, - std::shared_ptr& theResult, - ListOfShape& theFromFaces, - ListOfShape& theToFaces, - std::shared_ptr& theMakeShape, - std::shared_ptr& theDataMap) = 0; - - /// Results naming. - void loadNamingDS(std::shared_ptr theResultBody, - const std::shared_ptr& theBaseShape, - const std::shared_ptr& theResult, - const ListOfShape& theFromFaces, - const ListOfShape& theToFaces, - const std::shared_ptr& theMakeShape, - const std::shared_ptr& theDataMap); + /// 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