X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_ResultBody.h;h=cb17e6522241d13c3303946089413c22c19f04db;hb=22d52a8110982f722b4fb46f762a8ed851fc108e;hp=8b90e4427440c2796840b274da23063ec6c07f97;hpb=d0424553b2719e8c99798cb3f6856b42ef106418;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_ResultBody.h b/src/ModelAPI/ModelAPI_ResultBody.h index 8b90e4427..cb17e6522 100644 --- a/src/ModelAPI/ModelAPI_ResultBody.h +++ b/src/ModelAPI/ModelAPI_ResultBody.h @@ -1,8 +1,22 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ModelAPI_ResultBody.hxx -// Created: 07 Jul 2014 -// Author: Mikhail PONIKAROV +// Copyright (C) 2014-2017 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 ModelAPI_ResultBody_H_ #define ModelAPI_ResultBody_H_ @@ -22,11 +36,27 @@ class GeomAlgoAPI_MakeShape; * Provides a shape that may be displayed in the viewer. * May provide really huge results, so, working with this kind * of result must be optimized. +* Also provides a conainer of sub-body result in case it is compound or compsolid. */ class ModelAPI_ResultBody : public ModelAPI_Result { +public: + /// Iternal enumeration for storage the information of connected topology flag + enum ConnectedTopologyFlag { + ConnectionNotComputed, ///< not yet computed + IsConnected, ///< the topology is connected + IsNotConnected ///< the topology is connected + }; + +protected: + /// Keeps (not persistently) the connected topology flag + ConnectedTopologyFlag myConnect; + + ModelAPI_BodyBuilder* myBuilder; ///< provides the body processing in naming shape + public: MODELAPI_EXPORT virtual ~ModelAPI_ResultBody(); + /// Returns the group identifier of this result MODELAPI_EXPORT virtual std::string groupName(); @@ -50,21 +80,23 @@ public: return "0.0001"; } - /// Iternal enumeration for storage the information of connected topology flag - enum ConnectedTopologyFlag { - ConnectionNotComputed, ///< not yet computed - IsConnected, ///< the topology is connected - IsNotConnected ///< the topology is connected - }; - /// Keeps (not persistently) the connected topology flag - ConnectedTopologyFlag myConnect; + /// Returns the number of sub-elements + MODELAPI_EXPORT virtual int numberOfSubs(bool forTree = false) const = 0; + + /// Returns the sub-result by zero-base index + MODELAPI_EXPORT virtual std::shared_ptr subResult( + const int theIndex, bool forTree = false) const = 0; + + /// Returns true if feature or reuslt belong to this composite feature as subs + /// Returns theIndex - zero based index of sub if found + MODELAPI_EXPORT virtual bool isSub(ObjectPtr theObject, int& theIndex) const = 0; /// \brief Stores the shape (called by the execution method). /// param[in] theShape shape to store. /// param[in] theIsStoreSameShapes if false stores reference to the same shape /// if it is already in document. MODELAPI_EXPORT virtual void store(const std::shared_ptr& theShape, - const bool theIsStoreSameShapes = true); + const bool theIsStoreSameShapes = true); /// Stores the generated shape (called by the execution method). MODELAPI_EXPORT virtual void storeGenerated(const std::shared_ptr& theFromShape, @@ -105,17 +137,20 @@ public: const std::shared_ptr& theOldShape, const int theTag = 1); /// load deleted shapes - MODELAPI_EXPORT virtual void loadDeletedShapes (GeomAlgoAPI_MakeShape* theMS, - std::shared_ptr theShapeIn, - const int theKindOfShape, - const int theTag); + MODELAPI_EXPORT virtual void loadDeletedShapes(GeomAlgoAPI_MakeShape* theMS, + std::shared_ptr theShapeIn, + const int theKindOfShape, + const int theTag); + /// load and orient modified shapes - MODELAPI_EXPORT virtual void loadAndOrientModifiedShapes (GeomAlgoAPI_MakeShape* theMS, + MODELAPI_EXPORT virtual void loadAndOrientModifiedShapes(GeomAlgoAPI_MakeShape* theMS, std::shared_ptr theShapeIn, const int theKindOfShape, const int theTag, const std::string& theName, GeomAPI_DataMapOfShapeShape& theSubShapes, - const bool theIsStoreSeparate = false); + const bool theIsStoreSeparate = false, const bool theIsStoreAsGenerated = false, + const bool theSplitInSubs = false); + /// load and orient generated shapes - MODELAPI_EXPORT virtual void loadAndOrientGeneratedShapes (GeomAlgoAPI_MakeShape* theMS, + MODELAPI_EXPORT virtual void loadAndOrientGeneratedShapes(GeomAlgoAPI_MakeShape* theMS, std::shared_ptr theShapeIn, const int theKindOfShape, const int theTag, const std::string& theName, GeomAPI_DataMapOfShapeShape& theSubShapes); @@ -129,21 +164,27 @@ public: /// load disconnected vetexes MODELAPI_EXPORT virtual void loadDisconnectedVertexes(std::shared_ptr theShape, - const std::string& theName,int& theTag); + const std::string& theName, int& theTag); /// Returns true if the latest modification of this body in the naming history // is equal to the given shape MODELAPI_EXPORT virtual bool isLatestEqual(const std::shared_ptr& theShape) = 0; - /// Returns true is the topology is connected. Cashes this information for the current shape, - /// so it is more effective to use this method than directly GeomAPI_Shape. - MODELAPI_EXPORT virtual bool isConnectedTopology(); + /// Returns true is the topology is connected. + MODELAPI_EXPORT virtual bool isConnectedTopology() = 0; + + /// Set displayed flag to the result and all sub results + /// \param theDisplay a boolean value + MODELAPI_EXPORT virtual void setDisplayed(const bool theDisplay); + + /// Updates the sub-bodies if shape of this object is compsolid or compound + MODELAPI_EXPORT virtual void updateSubs(const std::shared_ptr& theThisShape, + const bool theShapeChanged = true) = 0; protected: /// Default constructor accessible only from Model_Objects MODELAPI_EXPORT ModelAPI_ResultBody(); - ModelAPI_BodyBuilder* myBuilder; ///< provides the body processing in naming shape }; //! Pointer on feature object