From: ema Date: Mon, 17 Apr 2017 12:16:47 +0000 (+0300) Subject: Saving notes in the view X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=d4e54977cb29b21345181ddd6134328f9ad91dbf;p=occt-copy.git Saving notes in the view --- diff --git a/src/XCAFDoc/XCAFDoc.cxx b/src/XCAFDoc/XCAFDoc.cxx index 57e9662410..132d4250a4 100644 --- a/src/XCAFDoc/XCAFDoc.cxx +++ b/src/XCAFDoc/XCAFDoc.cxx @@ -262,6 +262,17 @@ Standard_GUID XCAFDoc::ViewRefPlaneGUID() return ID; } +//======================================================================= +//function : ViewRefNoteGUID +//purpose : +//======================================================================= + +Standard_GUID XCAFDoc::ViewRefNoteGUID() +{ + static Standard_GUID ID("efd213e2-6dfd-11d4-b9c8-0060b0ee281b"); + return ID; +} + //======================================================================= //function : ViewRefEnabledShapesGUID //purpose : diff --git a/src/XCAFDoc/XCAFDoc.hxx b/src/XCAFDoc/XCAFDoc.hxx index b9c8944e4a..943586870e 100644 --- a/src/XCAFDoc/XCAFDoc.hxx +++ b/src/XCAFDoc/XCAFDoc.hxx @@ -122,6 +122,9 @@ public: //! Return GUIDs for TreeNode representing specified types of View 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 Standard_EXPORT static Standard_GUID ViewRefEnabledShapesGUID(); diff --git a/src/XCAFDoc/XCAFDoc_ViewTool.cxx b/src/XCAFDoc/XCAFDoc_ViewTool.cxx index 082ac58248..eee158000d 100644 --- a/src/XCAFDoc/XCAFDoc_ViewTool.cxx +++ b/src/XCAFDoc/XCAFDoc_ViewTool.cxx @@ -305,11 +305,10 @@ void XCAFDoc_ViewTool::SetView(const TDF_LabelSequence& theShapeLabels, aPlaneGNode = aChGNode->GetFather(1); aPlaneGNode->UnSetChild(aChGNode); if (aPlaneGNode->NbChildren() == 0) - aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefGDTGUID()); + aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefPlaneGUID()); } theViewL.ForgetAttribute(XCAFDoc::ViewRefPlaneGUID()); } - if (!theViewL.FindAttribute(XCAFDoc::ViewRefShapeGUID(), aChGNode) && theShapeLabels.Length() > 0) { aChGNode = new XCAFDoc_GraphNode; aChGNode = XCAFDoc_GraphNode::Set(theViewL); @@ -444,7 +443,7 @@ void XCAFDoc_ViewTool::SetClippingPlanes(const TDF_LabelSequence& theClippingPla aPlaneGNode = aChGNode->GetFather(1); aPlaneGNode->UnSetChild(aChGNode); if (aPlaneGNode->NbChildren() == 0) - aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefGDTGUID()); + aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefPlaneGUID()); } theViewL.ForgetAttribute(XCAFDoc::ViewRefPlaneGUID()); } @@ -476,14 +475,14 @@ void XCAFDoc_ViewTool::SetEnabledShapes(const TDF_LabelSequence& theShapesTransp return; Handle(XCAFDoc_GraphNode) aChGNode; - Handle(XCAFDoc_GraphNode) aPlaneGNode; + Handle(XCAFDoc_GraphNode) aShapeGNode; if (theViewL.FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aChGNode)) { while (aChGNode->NbFathers() > 0) { - aPlaneGNode = aChGNode->GetFather(1); - aPlaneGNode->UnSetChild(aChGNode); - if (aPlaneGNode->NbChildren() == 0) - aPlaneGNode->ForgetAttribute(XCAFDoc::ViewRefEnabledShapesGUID()); + aShapeGNode = aChGNode->GetFather(1); + aShapeGNode->UnSetChild(aChGNode); + if (aShapeGNode->NbChildren() == 0) + aShapeGNode->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++) { - if (!theShapesTransparencyLabels.Value(i).FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aPlaneGNode)) { - aPlaneGNode = new XCAFDoc_GraphNode; - aPlaneGNode = XCAFDoc_GraphNode::Set(theShapesTransparencyLabels.Value(i)); + if (!theShapesTransparencyLabels.Value(i).FindAttribute(XCAFDoc::ViewRefEnabledShapesGUID(), aShapeGNode)) { + aShapeGNode = new XCAFDoc_GraphNode; + aShapeGNode = XCAFDoc_GraphNode::Set(theShapesTransparencyLabels.Value(i)); } - aPlaneGNode->SetGraphID(XCAFDoc::ViewRefEnabledShapesGUID()); - aPlaneGNode->SetChild(aChGNode); - aChGNode->SetFather(aPlaneGNode); + aShapeGNode->SetGraphID(XCAFDoc::ViewRefEnabledShapesGUID()); + aShapeGNode->SetChild(aChGNode); + 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 //purpose : diff --git a/src/XCAFDoc/XCAFDoc_ViewTool.hxx b/src/XCAFDoc/XCAFDoc_ViewTool.hxx index 453024dc37..e1c952651f 100644 --- a/src/XCAFDoc/XCAFDoc_ViewTool.hxx +++ b/src/XCAFDoc/XCAFDoc_ViewTool.hxx @@ -86,10 +86,13 @@ public: //! Set Clipping planes to given View Standard_EXPORT void SetClippingPlanes(const TDF_LabelSequence& theClippingPlaneLabels, const TDF_Label& theViewL) const; - Standard_EXPORT void SetEnabledShapes(const TDF_LabelSequence& theShapesTransparencyLabels, 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 Standard_EXPORT void RemoveView(const TDF_Label& theViewL); @@ -110,6 +113,9 @@ public: //! Returns all View labels defined for label Shapes transparency 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 Standard_EXPORT TDF_Label AddView() ;