]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Implementation of "allFeatures" method needed for the parameters inside of attributes...
authormpv <mpv@opencascade.com>
Thu, 4 Jun 2015 12:45:52 +0000 (15:45 +0300)
committermpv <mpv@opencascade.com>
Thu, 4 Jun 2015 12:45:52 +0000 (15:45 +0300)
src/Model/Model_Document.cpp
src/Model/Model_Document.h
src/Model/Model_Objects.cpp
src/Model/Model_Objects.h
src/ModelAPI/ModelAPI_Document.h

index ee8193036cdf8b67edec80a3e0daaf843782f047..e032dbc691d941e6a0d88c4af67d1a7891f53784 100644 (file)
@@ -827,3 +827,8 @@ ResultPtr Model_Document::findByName(const std::string theName)
 {
   return myObjs->findByName(theName);
 }
+
+std::list<std::shared_ptr<ModelAPI_Feature> > allFeatures()
+{
+  return myObjs->allFeatures();
+}
index 7969d17245c4cd08aa59da983961a659f73d09dc..20adb3d05e8e2231417026378b04a97d1dbe5701 100644 (file)
@@ -168,6 +168,10 @@ class Model_Document : public ModelAPI_Document
   //! selection by name.
   ResultPtr findByName(const std::string theName);
 
+  ///! Returns all features of the document including the hidden features which are not in
+  ///! history. Not very fast method, for calling once, not in big cycles.
+  MODEL_EXPORT virtual std::list<std::shared_ptr<ModelAPI_Feature> > allFeatures();
+
  protected:
   //! Returns (creates if needed) the general label
   TDF_Label generalLabel() const;
index 54033a49b0e8c519d48f41d548692550fe8c5934..be9e80ff3baa9d5699588845a9592874b507fc34 100644 (file)
@@ -898,6 +898,20 @@ FeaturePtr Model_Objects::lastFeature()
   return FeaturePtr(); // no features at all
 }
 
+std::list<std::shared_ptr<ModelAPI_Feature> > Model_Objects::allFeatures()
+{
+  std::list<std::shared_ptr<ModelAPI_Feature> > aResult;
+  Handle(TDataStd_ReferenceArray) aRefs;
+  if (featuresLabel().FindAttribute(TDataStd_ReferenceArray::GetID(), aRefs)) {
+    for(int a = aRefs->Lower(); a <= aRefs->Upper(); a++) {
+      FeaturePtr aFeature = feature(aRefs->Value(a));
+      if (aFeature.get())
+        aResult.push_back(aFeature);
+    }
+  }
+  return aResult;
+}
+
 Standard_Integer HashCode(const TDF_Label& theLab, const Standard_Integer theUpper)
 {
   return TDF_LabelMapHasher::HashCode(theLab, theUpper);
index ef1d403b64cdc18275bc0bb93e001d65d61e8a24..cd7f440e75a95f065045ebc982e410372ab86bcf 100644 (file)
@@ -174,6 +174,11 @@ class Model_Objects
   /// be created before)
   std::string featureResultGroup(FeaturePtr theFeature);
 
+  ///! Returns all features of the document including the hidden features which are not in
+  ///! history. Not very fast method, for calling once, not in big cycles.
+  std::list<std::shared_ptr<ModelAPI_Feature> > allFeatures();
+
+
  private:
   TDF_Label myMain; ///< main label of the data storage
 
index 5f344ea085160b4f18000328183db249ea526a73..38f02b147cd412e93f2347cdbd8b056572dfd47b 100644 (file)
@@ -125,6 +125,10 @@ public:
   virtual std::shared_ptr<ModelAPI_Feature> feature(
       const std::shared_ptr<ModelAPI_Result>& theResult) = 0;
 
+  ///! Returns all features of the document including the hidden features which are not in
+  ///! history. Not very fast method, for calling once, not in big cycles.
+  virtual std::list<std::shared_ptr<ModelAPI_Feature> > allFeatures() = 0;
+
 protected:
   /// Only for SWIG wrapping it is here
   MODELAPI_EXPORT ModelAPI_Document();