//! Returns the existing feature by the label
//! \param theLabel base label of the feature
- MODEL_EXPORT virtual FeaturePtr feature(TDF_Label& theLabel);
+ MODEL_EXPORT virtual FeaturePtr feature(TDF_Label& theLabel) const;
//! Returns the existing object: result or feature
//! \param theLabel base label of the object
///! On abort, undo or redo it is not necessary: results in document are updated automatically
bool executeFeatures() {return myExecuteFeatures;}
+ //! Registers the name of the shape for the topological naming needs
+ void addNamingName(const TDF_Label theLabel, std::string theName);
+ //! Returns the label, keeper of the name for the topological naming needs
+ TDF_Label findNamingName(std::string theName);
+ //! Returns the result by name of the result (names of results must be unique, used for naming
+ //! selection by name.
+ ResultPtr findByName(const std::string theName);
+
protected:
//! Returns (creates if needed) the features label
- TDF_Label featuresLabel();
+ TDF_Label featuresLabel() const;
//! Initializes feature with a unique name in this group (unique name is generated as
//! feature type + "_" + index
void updateResults(FeaturePtr theFeature);
//! Returns all sub documents
- const std::set<std::string>& subDocuments() const {return mySubs;}
+ const std::set<std::string> subDocuments(const bool theActivatedOnly) const;
friend class Model_Application;
friend class Model_Session;
/// All features managed by this document (not only in history of OB)
/// For optimization mapped by labels
NCollection_DataMap<TDF_Label, FeaturePtr> myObjs;
+ /// Optimization for finding the shape-label by topological naming names
+ std::map<std::string, TDF_Label> myNamingNames;
- ///< set of identifiers of sub-documents of this document
- std::set<std::string> mySubs;
/// transaction indexes (related to myTransactionsAfterSave) which were empty in this doc
std::map<int, bool> myIsEmptyTr;
/// If it is true, features are not executed on update (on abort, undo, redo)