Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / Model / Model_Data.cpp
index 87c7be8672fda2dfa7b0a6b7c95ad461598d2bbc..5b26417a200191515540f1806624487bd9f6b266 100644 (file)
@@ -5,6 +5,9 @@
 #include <Model_Data.h>
 #include <Model_AttributeDocRef.h>
 #include <Model_AttributeDouble.h>
+#include <GeomData_Point.h>
+#include <GeomData_Point2D.h>
+#include <GeomData_Dir.h>
 #include <TDataStd_Name.hxx>
 
 using namespace std;
@@ -39,9 +42,17 @@ void Model_Data::addAttribute(string theID, string theAttrType)
     anAttr = new Model_AttributeDocRef(anAttrLab);
   else if (theAttrType == ModelAPI_AttributeDouble::type())
     anAttr = new Model_AttributeDouble(anAttrLab);
+  else if (theAttrType == GeomData_Point::type())
+    anAttr = new GeomData_Point(anAttrLab);
+  else if (theAttrType == GeomData_Dir::type())
+    anAttr = new GeomData_Dir(anAttrLab);
+  else if (theAttrType == GeomData_Point2D::type())
+    anAttr = new GeomData_Point2D(anAttrLab);
 
-  if (anAttr)
+  if (anAttr) {
     myAttrs[theID] = boost::shared_ptr<ModelAPI_Attribute>(anAttr);
+    anAttr->setFeature(myFeature);
+  }
   else
     ; // TODO: generate error on unknown attribute request and/or add mechanism for customization
 }
@@ -75,3 +86,11 @@ boost::shared_ptr<ModelAPI_AttributeDouble> Model_Data::real(const string theID)
   }
   return aRes;
 }
+
+boost::shared_ptr<ModelAPI_Attribute> Model_Data::attribute(const std::string theID)
+{
+  boost::shared_ptr<ModelAPI_Attribute> aResult;
+  if (myAttrs.find(theID) == myAttrs.end()) // no such attribute
+    return aResult;
+  return myAttrs[theID];
+}