1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

Saving notes in the view

This commit is contained in:
ema
2017-04-17 15:16:47 +03:00
committed by snn
parent de486dae37
commit d4e54977cb
4 changed files with 73 additions and 15 deletions

View File

@@ -262,6 +262,17 @@ Standard_GUID XCAFDoc::ViewRefPlaneGUID()
return ID; return ID;
} }
//=======================================================================
//function : ViewRefNoteGUID
//purpose :
//=======================================================================
Standard_GUID XCAFDoc::ViewRefNoteGUID()
{
static Standard_GUID ID("efd213e2-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//======================================================================= //=======================================================================
//function : ViewRefEnabledShapesGUID //function : ViewRefEnabledShapesGUID
//purpose : //purpose :

View File

@@ -123,6 +123,9 @@ public:
//! Return GUIDs for TreeNode representing specified types of View //! Return GUIDs for TreeNode representing specified types of View
Standard_EXPORT static Standard_GUID ViewRefPlaneGUID(); Standard_EXPORT static Standard_GUID ViewRefPlaneGUID();
//! Return GUIDs for TreeNode representing specified types of View
Standard_EXPORT static Standard_GUID ViewRefNoteGUID();
//! Return GUIDs for TreeNode representing specified types of View //! Return GUIDs for TreeNode representing specified types of View
Standard_EXPORT static Standard_GUID ViewRefEnabledShapesGUID(); Standard_EXPORT static Standard_GUID ViewRefEnabledShapesGUID();

View File

@@ -305,11 +305,10 @@ void XCAFDoc_ViewTool::SetView(const TDF_LabelSequence& theShapeLabels,
aPlaneGNode = aChGNode->GetFather(1); aPlaneGNode = aChGNode->GetFather(1);
aPlaneGNode->UnSetChild(aChGNode); aPlaneGNode->UnSetChild(aChGNode);
if (aPlaneGNode->NbChildren() == 0) if (aPlaneGNode->NbChildren() == 0)
aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefGDTGUID()); aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefPlaneGUID());
} }
theViewL.ForgetAttribute(XCAFDoc::ViewRefPlaneGUID()); theViewL.ForgetAttribute(XCAFDoc::ViewRefPlaneGUID());
} }
if (!theViewL.FindAttribute(XCAFDoc::ViewRefShapeGUID(), aChGNode) && theShapeLabels.Length() > 0) { if (!theViewL.FindAttribute(XCAFDoc::ViewRefShapeGUID(), aChGNode) && theShapeLabels.Length() > 0) {
aChGNode = new XCAFDoc_GraphNode; aChGNode = new XCAFDoc_GraphNode;
aChGNode = XCAFDoc_GraphNode::Set(theViewL); aChGNode = XCAFDoc_GraphNode::Set(theViewL);
@@ -444,7 +443,7 @@ void XCAFDoc_ViewTool::SetClippingPlanes(const TDF_LabelSequence& theClippingPla
aPlaneGNode = aChGNode->GetFather(1); aPlaneGNode = aChGNode->GetFather(1);
aPlaneGNode->UnSetChild(aChGNode); aPlaneGNode->UnSetChild(aChGNode);
if (aPlaneGNode->NbChildren() == 0) if (aPlaneGNode->NbChildren() == 0)
aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefGDTGUID()); aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefPlaneGUID());
} }
theViewL.ForgetAttribute(XCAFDoc::ViewRefPlaneGUID()); theViewL.ForgetAttribute(XCAFDoc::ViewRefPlaneGUID());
} }
@@ -476,14 +475,14 @@ void XCAFDoc_ViewTool::SetEnabledShapes(const TDF_LabelSequence& theShapesTransp
return; return;
Handle(XCAFDoc_GraphNode) aChGNode; Handle(XCAFDoc_GraphNode) aChGNode;
Handle(XCAFDoc_GraphNode) aPlaneGNode; Handle(XCAFDoc_GraphNode) aShapeGNode;
if (theViewL.FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aChGNode)) { if (theViewL.FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aChGNode)) {
while (aChGNode->NbFathers() > 0) { while (aChGNode->NbFathers() > 0) {
aPlaneGNode = aChGNode->GetFather(1); aShapeGNode = aChGNode->GetFather(1);
aPlaneGNode->UnSetChild(aChGNode); aShapeGNode->UnSetChild(aChGNode);
if (aPlaneGNode->NbChildren() == 0) if (aShapeGNode->NbChildren() == 0)
aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefEnabledShapesGUID()); aShapeGNode->ForgetAttribute(XCAFDoc::ViewRefEnabledShapesGUID());
} }
theViewL.ForgetAttribute(XCAFDoc::ViewRefEnabledShapesGUID()); theViewL.ForgetAttribute(XCAFDoc::ViewRefEnabledShapesGUID());
} }
@@ -496,16 +495,55 @@ void XCAFDoc_ViewTool::SetEnabledShapes(const TDF_LabelSequence& theShapesTransp
} }
for (Standard_Integer i = theShapesTransparencyLabels.Lower(); i <= theShapesTransparencyLabels.Upper(); i++) for (Standard_Integer i = theShapesTransparencyLabels.Lower(); i <= theShapesTransparencyLabels.Upper(); i++)
{ {
if (!theShapesTransparencyLabels.Value(i).FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aPlaneGNode)) { if (!theShapesTransparencyLabels.Value(i).FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aShapeGNode)) {
aPlaneGNode = new XCAFDoc_GraphNode; aShapeGNode = new XCAFDoc_GraphNode;
aPlaneGNode = XCAFDoc_GraphNode::Set(theShapesTransparencyLabels.Value(i)); aShapeGNode = XCAFDoc_GraphNode::Set(theShapesTransparencyLabels.Value(i));
} }
aPlaneGNode->SetGraphID(XCAFDoc::ViewRefEnabledShapesGUID()); aShapeGNode->SetGraphID(XCAFDoc::ViewRefEnabledShapesGUID());
aPlaneGNode->SetChild(aChGNode); aShapeGNode->SetChild(aChGNode);
aChGNode->SetFather(aPlaneGNode); aChGNode->SetFather(aShapeGNode);
} }
} }
//=======================================================================
//function : SetNotes
//purpose :
//=======================================================================
void XCAFDoc_ViewTool::SetNotes(const TDF_LabelSequence& theNoteLabels,
const TDF_Label& theViewL) const
{
if (!IsView(theViewL))
return;
Handle(XCAFDoc_GraphNode) aChGNode;
Handle(XCAFDoc_GraphNode) aNoteGNode;
if (theViewL.FindAttribute(XCAFDoc::ViewRefNoteGUID(), aChGNode)) {
while (aChGNode->NbFathers() > 0) {
aNoteGNode = aChGNode->GetFather(1);
aNoteGNode->UnSetChild(aChGNode);
if (aNoteGNode->NbChildren() == 0)
aNoteGNode->ForgetAttribute(XCAFDoc::ViewRefNoteGUID());
}
theViewL.ForgetAttribute(XCAFDoc::ViewRefNoteGUID());
}
if (!theViewL.FindAttribute(XCAFDoc::ViewRefNoteGUID(), aChGNode) && theNoteLabels.Length() > 0) {
aChGNode = new XCAFDoc_GraphNode;
aChGNode = XCAFDoc_GraphNode::Set(theViewL);
aChGNode->SetGraphID(XCAFDoc::ViewRefNoteGUID());
}
for (Standard_Integer i = theNoteLabels.Lower(); i <= theNoteLabels.Upper(); i++)
{
if (!theNoteLabels.Value(i).FindAttribute(XCAFDoc::ViewRefNoteGUID(), aNoteGNode)) {
aNoteGNode = new XCAFDoc_GraphNode;
aNoteGNode = XCAFDoc_GraphNode::Set(theNoteLabels.Value(i));
}
aNoteGNode->SetGraphID(XCAFDoc::ViewRefNoteGUID());
aNoteGNode->SetChild(aChGNode);
aChGNode->SetFather(aNoteGNode);
}
}
//======================================================================= //=======================================================================
//function : RemoveView //function : RemoveView
//purpose : //purpose :

View File

@@ -86,10 +86,13 @@ public:
//! Set Clipping planes to given View //! Set Clipping planes to given View
Standard_EXPORT void SetClippingPlanes(const TDF_LabelSequence& theClippingPlaneLabels, Standard_EXPORT void SetClippingPlanes(const TDF_LabelSequence& theClippingPlaneLabels,
const TDF_Label& theViewL) const; const TDF_Label& theViewL) const;
Standard_EXPORT void SetEnabledShapes(const TDF_LabelSequence& theShapesTransparencyLabels, Standard_EXPORT void SetEnabledShapes(const TDF_LabelSequence& theShapesTransparencyLabels,
const TDF_Label& theViewL) const; const TDF_Label& theViewL) const;
//! Set Notes to given View
Standard_EXPORT void SetNotes(const TDF_LabelSequence& theNoteLabels,
const TDF_Label& theViewL) const;
//! Remove View //! Remove View
Standard_EXPORT void RemoveView(const TDF_Label& theViewL); Standard_EXPORT void RemoveView(const TDF_Label& theViewL);
@@ -111,6 +114,9 @@ public:
//! Returns all View labels defined for label Shapes transparency //! Returns all View labels defined for label Shapes transparency
Standard_EXPORT Standard_Boolean GetViewLabelsForEnabledShapesLabel(const TDF_Label& theShapesTransparencyL, TDF_LabelSequence& theViews) const; Standard_EXPORT Standard_Boolean GetViewLabelsForEnabledShapesLabel(const TDF_Label& theShapesTransparencyL, TDF_LabelSequence& theViews) const;
//! Returns all View labels defined for label NotesL
Standard_EXPORT Standard_Boolean GetViewLabelsForNote(const TDF_Label& theNoteL, TDF_LabelSequence& theViews) const;
//! Adds a view definition to a View table and returns its label //! Adds a view definition to a View table and returns its label
Standard_EXPORT TDF_Label AddView() ; Standard_EXPORT TDF_Label AddView() ;