mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-05-11 10:44:53 +03:00
XCAF: remove subshape/attr note/all notes
This commit is contained in:
parent
1bebdb9c92
commit
2c465c8c0c
@ -444,6 +444,72 @@ XCAFDoc_NotesTool::RemoveNote(const TDF_Label& theNoteLabel,
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean
|
||||
XCAFDoc_NotesTool::RemoveSubshapeNote(const TDF_Label& theNoteLabel,
|
||||
const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Integer theSubshapeIndex,
|
||||
Standard_Boolean theDelIfOrphan)
|
||||
{
|
||||
Handle(XCAFDoc_Note) aNote = XCAFDoc_Note::Get(theNoteLabel);
|
||||
|
||||
if (aNote.IsNull())
|
||||
return Standard_False;
|
||||
|
||||
Handle(XCAFDoc_GraphNode) aFather;
|
||||
if (!theNoteLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather))
|
||||
return Standard_False;
|
||||
|
||||
TDF_Label anAnnotatedItem = FindAnnotatedItemSubshape(theItemId, theSubshapeIndex);
|
||||
if (anAnnotatedItem.IsNull())
|
||||
return Standard_False;
|
||||
|
||||
Handle(XCAFDoc_GraphNode) aChild;
|
||||
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
|
||||
return Standard_False;
|
||||
|
||||
aChild->UnSetFather(aFather);
|
||||
if (aChild->NbFathers() == 0)
|
||||
anAnnotatedItem.ForgetAllAttributes();
|
||||
|
||||
if (theDelIfOrphan && aNote->IsOrphan())
|
||||
DeleteNote(theNoteLabel);
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean
|
||||
XCAFDoc_NotesTool::RemoveAttrNote(const TDF_Label& theNoteLabel,
|
||||
const XCAFDoc_AssemblyItemId& theItemId,
|
||||
const Standard_GUID& theGUID,
|
||||
Standard_Boolean theDelIfOrphan)
|
||||
{
|
||||
Handle(XCAFDoc_Note) aNote = XCAFDoc_Note::Get(theNoteLabel);
|
||||
|
||||
if (aNote.IsNull())
|
||||
return Standard_False;
|
||||
|
||||
Handle(XCAFDoc_GraphNode) aFather;
|
||||
if (!theNoteLabel.FindAttribute(XCAFDoc::NoteRefGUID(), aFather))
|
||||
return Standard_False;
|
||||
|
||||
TDF_Label anAnnotatedItem = FindAnnotatedItemAttr(theItemId, theGUID);
|
||||
if (anAnnotatedItem.IsNull())
|
||||
return Standard_False;
|
||||
|
||||
Handle(XCAFDoc_GraphNode) aChild;
|
||||
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
|
||||
return Standard_False;
|
||||
|
||||
aChild->UnSetFather(aFather);
|
||||
if (aChild->NbFathers() == 0)
|
||||
anAnnotatedItem.ForgetAllAttributes();
|
||||
|
||||
if (theDelIfOrphan && aNote->IsOrphan())
|
||||
DeleteNote(theNoteLabel);
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean
|
||||
XCAFDoc_NotesTool::RemoveAllNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Boolean theDelIfOrphan)
|
||||
@ -474,6 +540,68 @@ XCAFDoc_NotesTool::RemoveAllNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean
|
||||
XCAFDoc_NotesTool::RemoveAllSubshapeNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Integer theSubshapeIndex,
|
||||
Standard_Boolean theDelIfOrphan)
|
||||
{
|
||||
TDF_Label anAnnotatedItem = FindAnnotatedItemSubshape(theItemId, theSubshapeIndex);
|
||||
if (anAnnotatedItem.IsNull())
|
||||
return Standard_False;
|
||||
|
||||
Handle(XCAFDoc_GraphNode) aChild;
|
||||
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
|
||||
return Standard_False;
|
||||
|
||||
Standard_Integer nbFathers = aChild->NbFathers();
|
||||
for (Standard_Integer iFather = 1; iFather <= nbFathers; ++iFather)
|
||||
{
|
||||
Handle(XCAFDoc_GraphNode) aFather = aChild->GetFather(iFather);
|
||||
Handle(XCAFDoc_Note) aNote = XCAFDoc_Note::Get(aFather->Label());
|
||||
if (!aNote.IsNull())
|
||||
{
|
||||
aFather->UnSetChild(aChild);
|
||||
if (theDelIfOrphan && aNote->IsOrphan())
|
||||
DeleteNote(aFather->Label());
|
||||
}
|
||||
}
|
||||
|
||||
anAnnotatedItem.ForgetAllAttributes();
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean
|
||||
XCAFDoc_NotesTool::RemoveAllAttrNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
const Standard_GUID& theGUID,
|
||||
Standard_Boolean theDelIfOrphan)
|
||||
{
|
||||
TDF_Label anAnnotatedItem = FindAnnotatedItemAttr(theItemId, theGUID);
|
||||
if (anAnnotatedItem.IsNull())
|
||||
return Standard_False;
|
||||
|
||||
Handle(XCAFDoc_GraphNode) aChild;
|
||||
if (!anAnnotatedItem.FindAttribute(XCAFDoc::NoteRefGUID(), aChild))
|
||||
return Standard_False;
|
||||
|
||||
Standard_Integer nbFathers = aChild->NbFathers();
|
||||
for (Standard_Integer iFather = 1; iFather <= nbFathers; ++iFather)
|
||||
{
|
||||
Handle(XCAFDoc_GraphNode) aFather = aChild->GetFather(iFather);
|
||||
Handle(XCAFDoc_Note) aNote = XCAFDoc_Note::Get(aFather->Label());
|
||||
if (!aNote.IsNull())
|
||||
{
|
||||
aFather->UnSetChild(aChild);
|
||||
if (theDelIfOrphan && aNote->IsOrphan())
|
||||
DeleteNote(aFather->Label());
|
||||
}
|
||||
}
|
||||
|
||||
anAnnotatedItem.ForgetAllAttributes();
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean
|
||||
XCAFDoc_NotesTool::DeleteNote(const TDF_Label& theNoteLabel)
|
||||
{
|
||||
|
@ -99,8 +99,22 @@ public:
|
||||
Standard_EXPORT Standard_Boolean RemoveNote(const TDF_Label& theNoteLabel,
|
||||
const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Boolean theDelIfOrphan = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean RemoveSubshapeNote(const TDF_Label& theNoteLabel,
|
||||
const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Integer theSubshapeIndex,
|
||||
Standard_Boolean theDelIfOrphan = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean RemoveAttrNote(const TDF_Label& theNoteLabel,
|
||||
const XCAFDoc_AssemblyItemId& theItemId,
|
||||
const Standard_GUID& theGUID,
|
||||
Standard_Boolean theDelIfOrphan = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean RemoveAllNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Boolean theDelIfOrphan = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean RemoveAllSubshapeNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
Standard_Integer theSubshapeIndex,
|
||||
Standard_Boolean theDelIfOrphan = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean RemoveAllAttrNotes(const XCAFDoc_AssemblyItemId& theItemId,
|
||||
const Standard_GUID& theGUID,
|
||||
Standard_Boolean theDelIfOrphan = Standard_False);
|
||||
|
||||
Standard_EXPORT Standard_Boolean DeleteNote(const TDF_Label& theNoteLabel);
|
||||
Standard_EXPORT Standard_Integer DeleteNotes(TDF_LabelSequence& theNoteLabels);
|
||||
|
Loading…
x
Reference in New Issue
Block a user