X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_CompositeSketch.h;h=5cfefa7e40a553c72d74494b5a4edaf606e89583;hb=a2ab2dc339b560c7309540e1f10b6ad60e5ed0af;hp=350369699202de0246254b8ff0dd63e2f67d1de2;hpb=cbde248859fb0072f6012907391ea90cfc254574;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h b/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h index 350369699..5cfefa7e4 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h +++ b/src/FeaturesPlugin/FeaturesPlugin_CompositeSketch.h @@ -7,39 +7,32 @@ #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 +40,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 +50,47 @@ 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); + + /// Checks make shape algo. + bool isMakeShapeValid(const std::shared_ptr theMakeShape); + + /// 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, + int& theTag); + + /// Used to store from and to shapes. + void storeShapes(ResultBodyPtr theResultBody, + const GeomAPI_Shape::ShapeType theBaseShapeType, + const std::shared_ptr theMapOfSubShapes, + const ListOfShape& theShapes, + const std::string theName, + int& theTag); + }; #endif