]> OCCT Git - occt-copy.git/commitdiff
Saving notes positions in the view
authorema <elena.mozokhina@opencascade.com>
Mon, 17 Apr 2017 14:21:08 +0000 (17:21 +0300)
committerema <elena.mozokhina@opencascade.com>
Mon, 17 Apr 2017 14:21:08 +0000 (17:21 +0300)
src/XCAFDoc/XCAFDoc_View.cxx
src/XCAFView/XCAFView_Object.cxx
src/XCAFView/XCAFView_Object.hxx

index 5531cf132c455066223d1e3c302d6a5a9ad94785..cbe07f6589b00fc5a2e183a7f7e7ed34152773cc 100644 (file)
@@ -47,7 +47,8 @@ enum ChildLab
   ChildLab_ViewVolumeSidesClipping,
   ChildLab_GDTPoints,
   ChildLab_Image,
-  ChildLab_EnabledShapes
+  ChildLab_EnabledShapes,
+  ChildLab_NotePoints
 };
 
 //=======================================================================
@@ -165,6 +166,14 @@ void XCAFDoc_View::SetObject (const Handle(XCAFView_Object)& theObject)
       TDataStd_Integer::Set(aShapeTranspLabel.FindChild(i), aValue);
     }
   }
+  //note points
+  if (theObject->HasNotePoints())
+  {
+    TDF_Label aPointsLabel = Label().FindChild(ChildLab_NotePoints);
+    for (Standard_Integer i = 1; i <= theObject->NbNotePoints(); i++) {
+      TDataXtd_Point::Set(aPointsLabel.FindChild(i), theObject->NotePoint(i));
+    }
+  }
 }
 
 //=======================================================================
@@ -286,6 +295,19 @@ Handle(XCAFView_Object) XCAFDoc_View::GetObject()  const
       anObj->SetEnabledShape(i, aValue);
     }
   }
+
+  // Note Points
+  if (!Label().FindChild(ChildLab_NotePoints, Standard_False).IsNull()) {
+    TDF_Label aPointsLabel = Label().FindChild(ChildLab_NotePoints);
+    anObj->CreateNotePoints(aPointsLabel.NbChildren());
+    for (Standard_Integer i = 1; i <= aPointsLabel.NbChildren(); i++) {
+      gp_Pnt aPoint;
+      Handle(TDataXtd_Point) aPointAttr;
+      aPointsLabel.FindChild(i).FindAttribute(TDataXtd_Point::GetID(), aPointAttr);
+      TDataXtd_Geometry::Point(aPointAttr->Label(), aPoint);
+      anObj->SetNotePoint(i, aPoint);
+    }
+  }
   return anObj;
 }
 
index 9421d1ace23c5f3cb6896488f59b560ec3c8600b..bf86ecbb033d1dd9f3ad46c3ea5203da5d7959b2 100644 (file)
@@ -30,6 +30,7 @@ XCAFView_Object::XCAFView_Object()
   myGDTPoints = NULL;
   myImage = NULL;
   myEnabledShapes = NULL;
+  myNotePoints = NULL;
 }
 
 //=======================================================================
@@ -54,5 +55,6 @@ XCAFView_Object::XCAFView_Object(const Handle(XCAFView_Object)& theObj)
   myGDTPoints = NULL;
   myImage = theObj->myImage;
   myEnabledShapes = NULL;
+  myGDTPoints = NULL;
 }
 
index c02713dafb5090ffb849d49d8d666fcdde0bc86c..9924c128f32d9391316297c5dbc0cea67f1defaa 100644 (file)
@@ -270,6 +270,41 @@ public:
     else
       return Standard_False;
   }
+  Standard_EXPORT void CreateNotePoints(const Standard_Integer theLenght)
+  {
+    if (theLenght > 0)
+      myNotePoints = new TColgp_HArray1OfPnt(1, theLenght);
+  }
+
+  Standard_EXPORT Standard_Boolean HasNotePoints()
+  {
+    return (!myNotePoints.IsNull());
+  }
+
+  Standard_EXPORT Standard_Integer NbNotePoints()
+  {
+    if (myNotePoints.IsNull())
+      return 0;
+    return myNotePoints->Length();
+  }
+
+  Standard_EXPORT void SetNotePoint(const Standard_Integer theIndex, const gp_Pnt thePoint)
+  {
+    if (myNotePoints.IsNull())
+      return;
+    if (theIndex > 0 && theIndex <= myNotePoints->Length())
+      myNotePoints->SetValue(theIndex, thePoint);
+  }
+
+  Standard_EXPORT gp_Pnt NotePoint(const Standard_Integer theIndex)
+  {
+    if (myNotePoints.IsNull())
+      return gp_Pnt();
+    if (theIndex > 0 && theIndex <= myNotePoints->Length())
+      return myNotePoints->Value(theIndex);
+    else
+      return gp_Pnt();
+  }
 
   DEFINE_STANDARD_RTTIEXT(XCAFView_Object,Standard_Transient)
 
@@ -292,6 +327,7 @@ private:
   Handle(TColgp_HArray1OfPnt) myGDTPoints; // Point for each GDT to describe position of GDT frame in View.
   Handle(TColStd_HArray1OfByte) myImage;
   Handle(TColStd_HArray1OfBoolean) myEnabledShapes;
+  Handle(TColgp_HArray1OfPnt) myNotePoints;
 };
 
 #endif // _XCAFView_Object_HeaderFile