1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00

Saving notes positions in the view

This commit is contained in:
ema 2017-04-17 17:21:08 +03:00
parent 611cd82c38
commit 678c09482c
3 changed files with 61 additions and 1 deletions

View File

@ -48,7 +48,8 @@ enum ChildLab
ChildLab_ClippingExpression,
ChildLab_GDTPoints,
ChildLab_Image,
ChildLab_EnabledShapes
ChildLab_EnabledShapes,
ChildLab_NotePoints
};
//=======================================================================
@ -170,6 +171,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));
}
}
}
//=======================================================================
@ -298,6 +307,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;
}

View 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;
}

View 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