/// 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
/// 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();
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;