-// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2019 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
//
// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#ifndef Model_BodyBuilder_H_
const GeomShapePtr& theNewShape,
const bool theIsCleanStored = true) override;
- /// Stores the shape without naming support
- /// \param theShape shape to store
- MODEL_EXPORT virtual void storeWithoutNaming(const GeomShapePtr& theShape);
-
/// Returns the shape-result produced by this feature
MODEL_EXPORT virtual GeomShapePtr shape();
/// Records the subshape newShape which was generated during a topological construction.
/// As an example, consider the case of a face generated in construction of a box.
- MODEL_EXPORT virtual void generated(const GeomShapePtr& theNewShape,
- const std::string& theName) override;
+ /// Returns true if it is stored correctly (the final shape contains this new sub-shape)
+ MODEL_EXPORT virtual bool generated(const GeomShapePtr& theNewShape,
+ const std::string& theName, const bool theCheckIsInResult = true) override;
/// Records the shape newShape which was generated from the shape oldShape during a topological
/// construction. As an example, consider the case of a face generated from an edge in
const GeomShapePtr& theNewShape,
const std::string& theName = "") override;
- /// Records the shape oldShape which was deleted from the current label.
- /// As an example, consider the case of a face removed by a Boolean operation.
- MODEL_EXPORT virtual void deleted(const GeomShapePtr& theOldShape) override;
-
/// load deleted shapes
MODEL_EXPORT
virtual void loadDeletedShapes(const GeomMakeShapePtr& theAlgo,
/// load and orient generated shapes
MODEL_EXPORT
- virtual void loadAndOrientGeneratedShapes(GeomAlgoAPI_MakeShape* theMS,
- GeomShapePtr theShapeIn,
- const int theKindOfShape,
- const int theTag,
- const std::string& theName,
- GeomAPI_DataMapOfShapeShape& theSubShapes);
+ virtual void loadGeneratedShapes(const GeomMakeShapePtr& theAlgo,
+ const GeomShapePtr& theOldShape,
+ const GeomAPI_Shape::ShapeType theShapeTypeToExplore,
+ const std::string& theName = "") override;
/// Loads shapes of the first level (to be used during shape import)
MODEL_EXPORT virtual void loadFirstLevel(GeomShapePtr theShape,
- const std::string& theName,
- int& theTag);
-
- /// Loads disconnected edges
- MODEL_EXPORT virtual void loadDisconnectedEdges(GeomShapePtr theShape,
- const std::string& theName,
- int& theTag);
-
- /// Loads disconnected vetexes
- MODEL_EXPORT virtual void loadDisconnectedVertexes(GeomShapePtr theShape,
- const std::string& theName,
- int& theTag);
+ const std::string& theName) override;
/// Removes the stored builders
MODEL_EXPORT virtual ~Model_BodyBuilder();
- /// Returns true if the latest modification of this body in the naming history
- // is equal to the given shape
- MODEL_EXPORT virtual bool isLatestEqual(const GeomShapePtr& theShape);
-
+ /// Cleans cash related to the already stored elements
+ MODEL_EXPORT virtual void cleanCash() override;
protected:
/// Default constructor accessible only by Model_Objects
Model_BodyBuilder(ModelAPI_Object* theOwner);
private:
/// Loads shapes of the next level (to be used during shape import)
void loadNextLevels(GeomShapePtr theShape,
- const std::string& theName, int& theTag);
+ const std::string& theName);
/// builds name for the shape kept at the specified tag
void buildName(const int theTag, const std::string& theName);
private:
- int myPrimitiveTag;
- int myDividedIndex;
- int myVIndex;
- int myEIndex;
- int myFIndex;
+ struct IndexTags {
+ int index;
+ std::vector<int> tags;
+ };
+
+private:
+ int myFreePrimitiveTag;
+ std::map<std::string, IndexTags> myPrimitivesNamesIndexMap;
private:
friend class Model_ResultBody;