/// 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
/// 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);
+ const std::string& theName) override;
/// Loads disconnected edges
MODEL_EXPORT virtual void loadDisconnectedEdges(GeomShapePtr theShape,
- const std::string& theName,
- int& theTag);
+ const std::string& theName) override;
/// 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();
- /// Converts evolution of sub-shapes stored in naming structure to selection
- /// (theFlag = true) and back (theFlag = false)
- MODEL_EXPORT virtual void evolutionToSelection(const bool theFlag);
-
/// 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);
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;