diff --git a/adm/UDLIST b/adm/UDLIST index 39ffb0ba8a..358e504cc9 100644 --- a/adm/UDLIST +++ b/adm/UDLIST @@ -433,4 +433,5 @@ n IVtkDraw t TKIVtkDraw n Geom2dEvaluator t TKVCAF -n XCAFView \ No newline at end of file +n XCAFView +n XCAFNoteObjects diff --git a/adm/genproj.tcl b/adm/genproj.tcl index 9a063b7de0..8386c71f8c 100644 --- a/adm/genproj.tcl +++ b/adm/genproj.tcl @@ -1866,6 +1866,7 @@ proc osutils:tk:files { tkloc thePlatform } { "t" { set utyp "toolkit" } "n" { set utyp "nocdlpack" } "x" { set utyp "executable" } + default { error "Error: Cannot determine type of unit $loc, check adm/UDLIST!" } } if [array exists map] { unset map } osutils:tk:loadunit $loc map diff --git a/dox/user_guides/xde/xde.md b/dox/user_guides/xde/xde.md index 3455f323d9..25e6f86986 100644 --- a/dox/user_guides/xde/xde.md +++ b/dox/user_guides/xde/xde.md @@ -952,6 +952,26 @@ if (!myCommentNote.IsNull()) { myCommentNote->Set("New comment"); } ~~~~~ +In order to edit auxiliary note data such as text and attachment position, plane for rendering and tesselated presentation, +one should use a transfer object *XCAFNoteObjects_NoteObject* by GetObject and SetObject methods of *XCAFDoc_Note* class. +*XCAFNoteObjects_NoteObject* class provides the following functionality: +- HasPlane, GetPlane and SetPlane methods test, get and set plane for note rendering +- HasPoint, GetPoint and SetPoint methods test, get and set note attachment position on the annotated object +- HasPointText, GetPointText, SetPointText methods test, get and set test position +- GetPresentation and SetPresentation methods allow to test for and specify tesselated presentation + +After getting, the transfer object can be edited and set back to the note: +~~~~~ +Handle(XCAFNoteObjects_NoteObject) aNoteObj = myNote->GetObject(); +if (!aNoteObj.IsNull()) +{ + gp_Pnt aPntTxt (...); + aNoteObj->SetPointText (aPntTxt); + TopoDS_Shape aS = ...; + aNoteObj->SetPresentation (aS); + myNote->SetObject (aNoteObj); +} +~~~~~ @subsubsection occt_xde_2_10_4 Adding Notes diff --git a/src/TKXCAF/PACKAGES b/src/TKXCAF/PACKAGES index b7774d3a1d..740c0b62d1 100755 --- a/src/TKXCAF/PACKAGES +++ b/src/TKXCAF/PACKAGES @@ -1,5 +1,6 @@ XCAFApp XCAFDimTolObjects +XCAFNoteObjects XCAFDoc XCAFPrs XCAFView diff --git a/src/XCAFDoc/XCAFDoc_Note.cxx b/src/XCAFDoc/XCAFDoc_Note.cxx index f5a7d9e7d7..f4ab611c87 100644 --- a/src/XCAFDoc/XCAFDoc_Note.cxx +++ b/src/XCAFDoc/XCAFDoc_Note.cxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-10 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -13,26 +11,55 @@ // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. +#include + +#include #include +#include +#include +#include #include +#include #include +#include +#include +#include #include #include -#include IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_Note, TDF_Attribute) -Standard_Boolean +enum ChildLab +{ + ChildLab_PntText = 1, + ChildLab_Plane, + ChildLab_Pnt, + ChildLab_Presentation +}; + +// ======================================================================= +// function : IsMine +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_Note::IsMine(const TDF_Label& theLabel) { return !Get(theLabel).IsNull(); } +// ======================================================================= +// function : XCAFDoc_Note +// purpose : +// ======================================================================= XCAFDoc_Note::XCAFDoc_Note() { } -Handle(XCAFDoc_Note) +// ======================================================================= +// function : Get +// purpose : +// ======================================================================= +Handle(XCAFDoc_Note) XCAFDoc_Note::Get(const TDF_Label& theLabel) { Handle(XCAFDoc_Note) aNote; @@ -45,7 +72,11 @@ XCAFDoc_Note::Get(const TDF_Label& theLabel) return aNote; } -void +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +void XCAFDoc_Note::Set(const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp) { @@ -55,41 +86,138 @@ XCAFDoc_Note::Set(const TCollection_ExtendedString& theUserName, myTimeStamp = theTimeStamp; } -const TCollection_ExtendedString& -XCAFDoc_Note::UserName() const -{ - return myUserName; -} - -const TCollection_ExtendedString& -XCAFDoc_Note::TimeStamp() const -{ - return myTimeStamp; -} - -Standard_Boolean -XCAFDoc_Note::IsOrphan() const +// ======================================================================= +// function : IsOrphan +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_Note::IsOrphan() const { Handle(XCAFDoc_GraphNode) aFather; return !Label().FindAttribute(XCAFDoc::NoteRefGUID(), aFather) || (aFather->NbChildren() == 0); } -void +// ======================================================================= +// function : GetObject +// purpose : +// ======================================================================= +Handle(XCAFNoteObjects_NoteObject) XCAFDoc_Note::GetObject() const +{ + Handle(XCAFNoteObjects_NoteObject) anObj = new XCAFNoteObjects_NoteObject(); + + Handle(TDataXtd_Point) aPnt; + if (Label().FindChild(ChildLab_Pnt).FindAttribute(TDataXtd_Point::GetID(), aPnt)) + { + gp_Pnt aP; + if (TDataXtd_Geometry::Point(aPnt->Label(), aP)) + { + anObj->SetPoint(aP); + } + } + + Handle(TDataXtd_Plane) aPln; + if (Label().FindChild(ChildLab_Plane).FindAttribute(TDataXtd_Plane::GetID(), aPln)) + { + gp_Pln aP; + if (TDataXtd_Geometry::Plane(aPln->Label(), aP)) + { + anObj->SetPlane(aP.Position().Ax2()); + } + } + + Handle(TDataXtd_Point) aPntText; + if (Label().FindChild(ChildLab_PntText).FindAttribute(TDataXtd_Point::GetID(), aPntText)) + { + gp_Pnt aP; + if (TDataXtd_Geometry::Point(aPntText->Label(), aP)) + { + anObj->SetPointText(aP); + } + } + + Handle(TNaming_NamedShape) aNS; + TDF_Label aLPres = Label().FindChild(ChildLab_Presentation); + if (aLPres.FindAttribute(TNaming_NamedShape::GetID(), aNS)) + { + TopoDS_Shape aPresentation = TNaming_Tool::GetShape(aNS); + if (!aPresentation.IsNull()) + { + anObj->SetPresentation(aPresentation); + } + } + + return anObj; +} + +// ======================================================================= +// function : SetObject +// purpose : +// ======================================================================= +void XCAFDoc_Note::SetObject (const Handle(XCAFNoteObjects_NoteObject)& theObject) +{ + Backup(); + + for (TDF_ChildIterator anIter(Label()); anIter.More(); anIter.Next()) + { + anIter.Value().ForgetAllAttributes(); + } + + if (theObject->HasPoint()) + { + gp_Pnt aPnt1 = theObject->GetPoint(); + TDataXtd_Point::Set (Label().FindChild (ChildLab_Pnt), aPnt1); + } + + if (theObject->HasPlane()) + { + gp_Ax2 anAx = theObject->GetPlane(); + + gp_Pln aP (anAx); + TDataXtd_Plane::Set (Label().FindChild (ChildLab_Plane), aP); + } + + if (theObject->HasPointText()) + { + gp_Pnt aPntText = theObject->GetPointText(); + TDataXtd_Point::Set (Label().FindChild (ChildLab_PntText), aPntText); + } + + TopoDS_Shape aPresentation = theObject->GetPresentation(); + if (!aPresentation.IsNull()) + { + TDF_Label aLPres = Label().FindChild (ChildLab_Presentation); + TNaming_Builder aBuilder (aLPres); + aBuilder.Generated (aPresentation); + } +} + +// ======================================================================= +// function : Restore +// purpose : +// ======================================================================= +void XCAFDoc_Note::Restore(const Handle(TDF_Attribute)& theAttr) { myUserName = Handle(XCAFDoc_Note)::DownCast(theAttr)->myUserName; myTimeStamp = Handle(XCAFDoc_Note)::DownCast(theAttr)->myTimeStamp; } -void +// ======================================================================= +// function : Paste +// purpose : +// ======================================================================= +void XCAFDoc_Note::Paste(const Handle(TDF_Attribute)& theAttrInto, const Handle(TDF_RelocationTable)& /*theRT*/) const { Handle(XCAFDoc_Note)::DownCast(theAttrInto)->Set(myUserName, myTimeStamp); } -Standard_OStream& +// ======================================================================= +// function : Dump +// purpose : +// ======================================================================= +Standard_OStream& XCAFDoc_Note::Dump(Standard_OStream& theOS) const { TDF_Attribute::Dump(theOS); diff --git a/src/XCAFDoc/XCAFDoc_Note.hxx b/src/XCAFDoc/XCAFDoc_Note.hxx index 736e6f1802..16a77fa929 100644 --- a/src/XCAFDoc/XCAFDoc_Note.hxx +++ b/src/XCAFDoc/XCAFDoc_Note.hxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-10 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -22,13 +20,11 @@ #include #include #include +#include class Standard_GUID; class TDF_RelocationTable; -class XCAFDoc_Note; -DEFINE_STANDARD_HANDLE(XCAFDoc_Note, TDF_Attribute) - //! A base note attribute. //! Any note contains the name of the user created the note //! and the creation timestamp. @@ -49,17 +45,23 @@ public: //! \param [in] theTimeStamp - timestamp of the note. //! \return A handle to the attribute instance. Standard_EXPORT void Set(const TCollection_ExtendedString& theUserName, - const TCollection_ExtendedString& theTimeStamp); + const TCollection_ExtendedString& theTimeStamp); //! Returns the user name, who created the note. - Standard_EXPORT const TCollection_ExtendedString& UserName() const; + const TCollection_ExtendedString& UserName() const { return myUserName; } //! Returns the timestamp of the note. - Standard_EXPORT const TCollection_ExtendedString& TimeStamp() const; + const TCollection_ExtendedString& TimeStamp() const { return myTimeStamp; } //! Checks if the note isn't linked to annotated items. Standard_EXPORT Standard_Boolean IsOrphan() const; + //! Returns auxiliary data object + Standard_EXPORT Handle(XCAFNoteObjects_NoteObject) GetObject() const; + + //! Updates auxiliary data + Standard_EXPORT void SetObject(const Handle(XCAFNoteObjects_NoteObject)& theObject); + public: // Overrides TDF_Attribute virtuals @@ -79,4 +81,6 @@ private: TCollection_ExtendedString myTimeStamp; ///< Timestamp, when the note was created. }; +DEFINE_STANDARD_HANDLE(XCAFDoc_Note, TDF_Attribute) + #endif // _XCAFDoc_Note_HeaderFile diff --git a/src/XCAFDoc/XCAFDoc_NoteBalloon.cxx b/src/XCAFDoc/XCAFDoc_NoteBalloon.cxx index 32288721b8..559d4eaffc 100644 --- a/src/XCAFDoc/XCAFDoc_NoteBalloon.cxx +++ b/src/XCAFDoc/XCAFDoc_NoteBalloon.cxx @@ -1,6 +1,4 @@ -// Created on: 2017-08-10 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -19,13 +17,21 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_NoteBalloon, XCAFDoc_NoteComment) -const Standard_GUID& +// ======================================================================= +// function : GetID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NoteBalloon::GetID() { static Standard_GUID s_ID("1127951D-87D5-4ecc-89D5-D1406576C43F"); return s_ID; } +// ======================================================================= +// function : Get +// purpose : +// ======================================================================= Handle(XCAFDoc_NoteBalloon) XCAFDoc_NoteBalloon::Get(const TDF_Label& theLabel) { @@ -34,6 +40,10 @@ XCAFDoc_NoteBalloon::Get(const TDF_Label& theLabel) return aThis; } +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= Handle(XCAFDoc_NoteBalloon) XCAFDoc_NoteBalloon::Set(const TDF_Label& theLabel, const TCollection_ExtendedString& theUserName, @@ -51,17 +61,29 @@ XCAFDoc_NoteBalloon::Set(const TDF_Label& theLabel, return aNoteBalloon; } +// ======================================================================= +// function : XCAFDoc_NoteBalloon +// purpose : +// ======================================================================= XCAFDoc_NoteBalloon::XCAFDoc_NoteBalloon() { } -const Standard_GUID& +// ======================================================================= +// function : ID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NoteBalloon::ID() const { return GetID(); } -Handle(TDF_Attribute) +// ======================================================================= +// function : NewEmpty +// purpose : +// ======================================================================= +Handle(TDF_Attribute) XCAFDoc_NoteBalloon::NewEmpty() const { return new XCAFDoc_NoteBalloon(); diff --git a/src/XCAFDoc/XCAFDoc_NoteBalloon.hxx b/src/XCAFDoc/XCAFDoc_NoteBalloon.hxx index 10a77970a7..7a48c1686f 100644 --- a/src/XCAFDoc/XCAFDoc_NoteBalloon.hxx +++ b/src/XCAFDoc/XCAFDoc_NoteBalloon.hxx @@ -1,6 +1,4 @@ -// Created on: 2017-08-10 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -18,9 +16,6 @@ #include -class XCAFDoc_NoteBalloon; -DEFINE_STANDARD_HANDLE(XCAFDoc_NoteBalloon, XCAFDoc_NoteComment) - //! A comment note attribute. //! Contains a textual comment. class XCAFDoc_NoteBalloon : public XCAFDoc_NoteComment @@ -29,6 +24,7 @@ public: DEFINE_STANDARD_RTTIEXT(XCAFDoc_NoteBalloon, XCAFDoc_NoteComment) + //! Returns default attribute GUID Standard_EXPORT static const Standard_GUID& GetID(); //! Finds a reference attribute on the given label and returns it, if it is found @@ -55,4 +51,6 @@ public: }; +DEFINE_STANDARD_HANDLE(XCAFDoc_NoteBalloon, XCAFDoc_NoteComment) + #endif // _XCAFDoc_NoteBalloon_HeaderFile diff --git a/src/XCAFDoc/XCAFDoc_NoteBinData.cxx b/src/XCAFDoc/XCAFDoc_NoteBinData.cxx index beb638f83d..c8bb3e3f98 100644 --- a/src/XCAFDoc/XCAFDoc_NoteBinData.cxx +++ b/src/XCAFDoc/XCAFDoc_NoteBinData.cxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-13 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -20,13 +18,21 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_NoteBinData, XCAFDoc_Note) -const Standard_GUID& +// ======================================================================= +// function : GetID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NoteBinData::GetID() { static Standard_GUID s_ID("E9055501-F0FC-4864-BE4B-284FDA7DDEAC"); return s_ID; } +// ======================================================================= +// function : Get +// purpose : +// ======================================================================= Handle(XCAFDoc_NoteBinData) XCAFDoc_NoteBinData::Get(const TDF_Label& theLabel) { @@ -35,7 +41,11 @@ XCAFDoc_NoteBinData::Get(const TDF_Label& theLabel) return aThis; } -Handle(XCAFDoc_NoteBinData) +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +Handle(XCAFDoc_NoteBinData) XCAFDoc_NoteBinData::Set(const TDF_Label& theLabel, const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, @@ -56,7 +66,11 @@ XCAFDoc_NoteBinData::Set(const TDF_Label& theLabel, return aNoteBinData; } -Handle(XCAFDoc_NoteBinData) +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +Handle(XCAFDoc_NoteBinData) XCAFDoc_NoteBinData::Set(const TDF_Label& theLabel, const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, @@ -75,11 +89,19 @@ XCAFDoc_NoteBinData::Set(const TDF_Label& theLabel, return aNoteBinData; } +// ======================================================================= +// function : XCAFDoc_NoteBinData +// purpose : +// ======================================================================= XCAFDoc_NoteBinData::XCAFDoc_NoteBinData() { } -Standard_Boolean +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NoteBinData::Set(const TCollection_ExtendedString& theTitle, const TCollection_AsciiString& theMIMEtype, OSD_File& theFile) @@ -104,7 +126,11 @@ XCAFDoc_NoteBinData::Set(const TCollection_ExtendedString& theTitle, return Standard_True; } -void +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +void XCAFDoc_NoteBinData::Set(const TCollection_ExtendedString& theTitle, const TCollection_AsciiString& theMIMEtype, const Handle(TColStd_HArray1OfByte)& theData) @@ -116,43 +142,31 @@ XCAFDoc_NoteBinData::Set(const TCollection_ExtendedString& theTitle, myMIMEtype = theMIMEtype; } -const TCollection_ExtendedString& -XCAFDoc_NoteBinData::Title() const -{ - return myTitle; -} - -const TCollection_AsciiString& -XCAFDoc_NoteBinData::MIMEtype() const -{ - return myMIMEtype; -} - -Standard_Integer -XCAFDoc_NoteBinData::Size() const -{ - return (!myData.IsNull() ? myData->Length() : 0); -} - -const Handle(TColStd_HArray1OfByte)& -XCAFDoc_NoteBinData::Data() const -{ - return myData; -} - -const +// ======================================================================= +// function : ID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NoteBinData::ID() const { return GetID(); } -Handle(TDF_Attribute) +// ======================================================================= +// function : NewEmpty +// purpose : +// ======================================================================= +Handle(TDF_Attribute) XCAFDoc_NoteBinData::NewEmpty() const { return new XCAFDoc_NoteBinData(); } -void +// ======================================================================= +// function : Restore +// purpose : +// ======================================================================= +void XCAFDoc_NoteBinData::Restore(const Handle(TDF_Attribute)& theAttr) { XCAFDoc_Note::Restore(theAttr); @@ -166,7 +180,11 @@ XCAFDoc_NoteBinData::Restore(const Handle(TDF_Attribute)& theAttr) } } -void +// ======================================================================= +// function : Paste +// purpose : +// ======================================================================= +void XCAFDoc_NoteBinData::Paste(const Handle(TDF_Attribute)& theAttrInto, const Handle(TDF_RelocationTable)& theRT) const { @@ -177,7 +195,11 @@ XCAFDoc_NoteBinData::Paste(const Handle(TDF_Attribute)& theAttrInto, aMine->Set(myTitle, myMIMEtype, myData); } -Standard_OStream& +// ======================================================================= +// function : Dump +// purpose : +// ======================================================================= +Standard_OStream& XCAFDoc_NoteBinData::Dump(Standard_OStream& theOS) const { XCAFDoc_Note::Dump(theOS); diff --git a/src/XCAFDoc/XCAFDoc_NoteBinData.hxx b/src/XCAFDoc/XCAFDoc_NoteBinData.hxx index dc902be3c8..1ae51c522c 100644 --- a/src/XCAFDoc/XCAFDoc_NoteBinData.hxx +++ b/src/XCAFDoc/XCAFDoc_NoteBinData.hxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-13 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -23,15 +21,13 @@ class OSD_File; -class XCAFDoc_NoteBinData; -DEFINE_STANDARD_HANDLE(XCAFDoc_NoteBinData, XCAFDoc_Note) - class XCAFDoc_NoteBinData : public XCAFDoc_Note { public: DEFINE_STANDARD_RTTIEXT(XCAFDoc_NoteBinData, XCAFDoc_Note) + //! Returns default attribute GUID Standard_EXPORT static const Standard_GUID& GetID(); //! Finds a binary data attribute on the given label and returns it, if it is found @@ -97,16 +93,16 @@ public: //! @} //! Returns the note title. - Standard_EXPORT const TCollection_ExtendedString& Title() const; + const TCollection_ExtendedString& Title() const { return myTitle; } //! Returns data MIME type. - Standard_EXPORT const TCollection_AsciiString& MIMEtype() const; + const TCollection_AsciiString& MIMEtype() const { return myMIMEtype; } //! Size of data in bytes. - Standard_EXPORT Standard_Integer Size() const; + Standard_Integer Size() const { return (!myData.IsNull() ? myData->Length() : 0); } //! Returns byte data array. - Standard_EXPORT const Handle(TColStd_HArray1OfByte)& Data() const; + const Handle(TColStd_HArray1OfByte)& Data() const { return myData; } public: @@ -126,4 +122,6 @@ protected: }; +DEFINE_STANDARD_HANDLE(XCAFDoc_NoteBinData, XCAFDoc_Note) + #endif // _XCAFDoc_NoteBinData_HeaderFile diff --git a/src/XCAFDoc/XCAFDoc_NoteComment.cxx b/src/XCAFDoc/XCAFDoc_NoteComment.cxx index b88f721bb4..1d1cb99e42 100644 --- a/src/XCAFDoc/XCAFDoc_NoteComment.cxx +++ b/src/XCAFDoc/XCAFDoc_NoteComment.cxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-13 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -19,14 +17,22 @@ IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_NoteComment, XCAFDoc_Note) -const Standard_GUID& +// ======================================================================= +// function : GetID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NoteComment::GetID() { static Standard_GUID s_ID("FDEA4C52-0F54-484c-B590-579E18F7B5D4"); return s_ID; } -Handle(XCAFDoc_NoteComment) +// ======================================================================= +// function : Get +// purpose : +// ======================================================================= +Handle(XCAFDoc_NoteComment) XCAFDoc_NoteComment::Get(const TDF_Label& theLabel) { Handle(XCAFDoc_NoteComment) aThis; @@ -34,7 +40,11 @@ XCAFDoc_NoteComment::Get(const TDF_Label& theLabel) return aThis; } -Handle(XCAFDoc_NoteComment) +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +Handle(XCAFDoc_NoteComment) XCAFDoc_NoteComment::Set(const TDF_Label& theLabel, const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, @@ -51,11 +61,19 @@ XCAFDoc_NoteComment::Set(const TDF_Label& theLabel, return aNoteComment; } +// ======================================================================= +// function : XCAFDoc_NoteComment +// purpose : +// ======================================================================= XCAFDoc_NoteComment::XCAFDoc_NoteComment() { } -void +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +void XCAFDoc_NoteComment::Set(const TCollection_ExtendedString& theComment) { Backup(); @@ -63,25 +81,31 @@ XCAFDoc_NoteComment::Set(const TCollection_ExtendedString& theComment) myComment = theComment; } -const TCollection_ExtendedString& -XCAFDoc_NoteComment::Comment() const -{ - return myComment; -} - -const Standard_GUID& +// ======================================================================= +// function : ID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NoteComment::ID() const { return GetID(); } -Handle(TDF_Attribute) +// ======================================================================= +// function : NewEmpty +// purpose : +// ======================================================================= +Handle(TDF_Attribute) XCAFDoc_NoteComment::NewEmpty() const { return new XCAFDoc_NoteComment(); } -void +// ======================================================================= +// function : Restore +// purpose : +// ======================================================================= +void XCAFDoc_NoteComment::Restore(const Handle(TDF_Attribute)& theAttr) { XCAFDoc_Note::Restore(theAttr); @@ -91,7 +115,11 @@ XCAFDoc_NoteComment::Restore(const Handle(TDF_Attribute)& theAttr) myComment = aMine->myComment; } -void +// ======================================================================= +// function : Paste +// purpose : +// ======================================================================= +void XCAFDoc_NoteComment::Paste(const Handle(TDF_Attribute)& theAttrInto, const Handle(TDF_RelocationTable)& theRT) const { @@ -102,7 +130,11 @@ XCAFDoc_NoteComment::Paste(const Handle(TDF_Attribute)& theAttrInto, aMine->Set(myComment); } -Standard_OStream& +// ======================================================================= +// function : Dump +// purpose : +// ======================================================================= +Standard_OStream& XCAFDoc_NoteComment::Dump(Standard_OStream& theOS) const { XCAFDoc_Note::Dump(theOS); diff --git a/src/XCAFDoc/XCAFDoc_NoteComment.hxx b/src/XCAFDoc/XCAFDoc_NoteComment.hxx index 8232750698..53386d06b6 100644 --- a/src/XCAFDoc/XCAFDoc_NoteComment.hxx +++ b/src/XCAFDoc/XCAFDoc_NoteComment.hxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-13 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -18,9 +16,6 @@ #include -class XCAFDoc_NoteComment; -DEFINE_STANDARD_HANDLE(XCAFDoc_NoteComment, XCAFDoc_Note) - //! A comment note attribute. //! Contains a textual comment. class XCAFDoc_NoteComment : public XCAFDoc_Note @@ -29,6 +24,7 @@ public: DEFINE_STANDARD_RTTIEXT(XCAFDoc_NoteComment, XCAFDoc_Note) + //! Returns default attribute GUID Standard_EXPORT static const Standard_GUID& GetID(); //! Finds a reference attribute on the given label and returns it, if it is found @@ -51,7 +47,7 @@ public: Standard_EXPORT void Set(const TCollection_ExtendedString& theComment); //! Returns the comment text. - Standard_EXPORT const TCollection_ExtendedString& Comment() const; + const TCollection_ExtendedString& Comment() const { return myComment; } public: @@ -69,4 +65,6 @@ protected: }; +DEFINE_STANDARD_HANDLE(XCAFDoc_NoteComment, XCAFDoc_Note) + #endif // _XCAFDoc_NoteComment_HeaderFile diff --git a/src/XCAFDoc/XCAFDoc_NotesTool.cxx b/src/XCAFDoc/XCAFDoc_NotesTool.cxx index 96e8674643..fe971ac8eb 100644 --- a/src/XCAFDoc/XCAFDoc_NotesTool.cxx +++ b/src/XCAFDoc/XCAFDoc_NotesTool.cxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-10 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -48,14 +46,22 @@ enum NotesTool_RootLabels NotesTool_AnnotatedItemsRoot }; -const Standard_GUID& +// ======================================================================= +// function : GetID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NotesTool::GetID() { static Standard_GUID s_ID("8F8174B1-6125-47a0-B357-61BD2D89380C"); return s_ID; } -Handle(XCAFDoc_NotesTool) +// ======================================================================= +// function : Set +// purpose : +// ======================================================================= +Handle(XCAFDoc_NotesTool) XCAFDoc_NotesTool::Set(const TDF_Label& theLabel) { Handle(XCAFDoc_NotesTool) aTool; @@ -67,22 +73,38 @@ XCAFDoc_NotesTool::Set(const TDF_Label& theLabel) return aTool; } +// ======================================================================= +// function : XCAFDoc_NotesTool +// purpose : +// ======================================================================= XCAFDoc_NotesTool::XCAFDoc_NotesTool() { } -TDF_Label +// ======================================================================= +// function : GetNotesLabel +// purpose : +// ======================================================================= +TDF_Label XCAFDoc_NotesTool::GetNotesLabel() const { return Label().FindChild(NotesTool_NotesRoot); } +// ======================================================================= +// function : GetAnnotatedItemsLabel +// purpose : +// ======================================================================= TDF_Label XCAFDoc_NotesTool::GetAnnotatedItemsLabel() const { return Label().FindChild(NotesTool_AnnotatedItemsRoot); } -Standard_Integer +// ======================================================================= +// function : NbNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::NbNotes() const { Standard_Integer nbNotes = 0; @@ -95,7 +117,11 @@ XCAFDoc_NotesTool::NbNotes() const return nbNotes; } -Standard_Integer +// ======================================================================= +// function : NbAnnotatedItems +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::NbAnnotatedItems() const { Standard_Integer nbItems = 0; @@ -106,7 +132,11 @@ XCAFDoc_NotesTool::NbAnnotatedItems() const return nbItems; } -void +// ======================================================================= +// function : GetNotes +// purpose : +// ======================================================================= +void XCAFDoc_NotesTool::GetNotes(TDF_LabelSequence& theNoteLabels) const { for (TDF_ChildIterator anIter(GetNotesLabel()); anIter.More(); anIter.Next()) @@ -117,7 +147,11 @@ XCAFDoc_NotesTool::GetNotes(TDF_LabelSequence& theNoteLabels) const } } -void +// ======================================================================= +// function : GetAnnotatedItems +// purpose : +// ======================================================================= +void XCAFDoc_NotesTool::GetAnnotatedItems(TDF_LabelSequence& theItemLabels) const { for (TDF_ChildIDIterator anIter(GetAnnotatedItemsLabel(), XCAFDoc_AssemblyItemRef::GetID()); anIter.More(); anIter.Next()) @@ -126,19 +160,31 @@ XCAFDoc_NotesTool::GetAnnotatedItems(TDF_LabelSequence& theItemLabels) const } } -Standard_Boolean +// ======================================================================= +// function : IsAnnotatedItem +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::IsAnnotatedItem(const XCAFDoc_AssemblyItemId& theItemId) const { return !FindAnnotatedItem(theItemId).IsNull(); } -Standard_Boolean +// ======================================================================= +// function : IsAnnotatedItem +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::IsAnnotatedItem(const TDF_Label& theItemLabel) const { return IsAnnotatedItem(labeledItem(theItemLabel)); } -TDF_Label +// ======================================================================= +// function : FindAnnotatedItem +// purpose : +// ======================================================================= +TDF_Label XCAFDoc_NotesTool::FindAnnotatedItem(const XCAFDoc_AssemblyItemId& theItemId) const { for (TDF_ChildIDIterator anIter(GetAnnotatedItemsLabel(), XCAFDoc_AssemblyItemRef::GetID()); anIter.More(); anIter.Next()) @@ -150,13 +196,21 @@ XCAFDoc_NotesTool::FindAnnotatedItem(const XCAFDoc_AssemblyItemId& theItemId) co return TDF_Label(); } -TDF_Label +// ======================================================================= +// function : FindAnnotatedItem +// purpose : +// ======================================================================= +TDF_Label XCAFDoc_NotesTool::FindAnnotatedItem(const TDF_Label& theItemLabel) const { return FindAnnotatedItem(labeledItem(theItemLabel)); } -TDF_Label +// ======================================================================= +// function : FindAnnotatedItemAttr +// purpose : +// ======================================================================= +TDF_Label XCAFDoc_NotesTool::FindAnnotatedItemAttr(const XCAFDoc_AssemblyItemId& theItemId, const Standard_GUID& theGUID) const { @@ -170,6 +224,10 @@ XCAFDoc_NotesTool::FindAnnotatedItemAttr(const XCAFDoc_AssemblyItemId& theItemId return TDF_Label(); } +// ======================================================================= +// function : FindAnnotatedItemAttr +// purpose : +// ======================================================================= TDF_Label XCAFDoc_NotesTool::FindAnnotatedItemAttr(const TDF_Label& theItemLabel, const Standard_GUID& theGUID) const @@ -177,7 +235,11 @@ XCAFDoc_NotesTool::FindAnnotatedItemAttr(const TDF_Label& theItemLabel, return FindAnnotatedItemAttr(labeledItem(theItemLabel), theGUID); } -TDF_Label +// ======================================================================= +// function : FindAnnotatedItemSubshape +// purpose : +// ======================================================================= +TDF_Label XCAFDoc_NotesTool::FindAnnotatedItemSubshape(const XCAFDoc_AssemblyItemId& theItemId, Standard_Integer theSubshapeIndex) const { @@ -191,14 +253,22 @@ XCAFDoc_NotesTool::FindAnnotatedItemSubshape(const XCAFDoc_AssemblyItemId& theIt return TDF_Label(); } -TDF_Label +// ======================================================================= +// function : FindAnnotatedItemSubshape +// purpose : +// ======================================================================= +TDF_Label XCAFDoc_NotesTool::FindAnnotatedItemSubshape(const TDF_Label& theItemLabel, Standard_Integer theSubshapeIndex) const { return FindAnnotatedItemSubshape(labeledItem(theItemLabel), theSubshapeIndex); } -Handle(XCAFDoc_Note) +// ======================================================================= +// function : CreateComment +// purpose : +// ======================================================================= +Handle(XCAFDoc_Note) XCAFDoc_NotesTool::CreateComment(const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, const TCollection_ExtendedString& theComment) @@ -209,7 +279,11 @@ XCAFDoc_NotesTool::CreateComment(const TCollection_ExtendedString& theUserName, return XCAFDoc_NoteComment::Set(aNoteLabel, theUserName, theTimeStamp, theComment); } -Handle(XCAFDoc_Note) +// ======================================================================= +// function : CreateBalloon +// purpose : +// ======================================================================= +Handle(XCAFDoc_Note) XCAFDoc_NotesTool::CreateBalloon(const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, const TCollection_ExtendedString& theComment) @@ -220,7 +294,11 @@ XCAFDoc_NotesTool::CreateBalloon(const TCollection_ExtendedString& theUserName, return XCAFDoc_NoteBalloon::Set(aNoteLabel, theUserName, theTimeStamp, theComment); } -Handle(XCAFDoc_Note) +// ======================================================================= +// function : CreateBinData +// purpose : +// ======================================================================= +Handle(XCAFDoc_Note) XCAFDoc_NotesTool::CreateBinData(const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, const TCollection_ExtendedString& theTitle, @@ -233,7 +311,11 @@ XCAFDoc_NotesTool::CreateBinData(const TCollection_ExtendedString& theUserName, return XCAFDoc_NoteBinData::Set(aNoteLabel, theUserName, theTimeStamp, theTitle, theMIMEtype, theFile); } -Handle(XCAFDoc_Note) +// ======================================================================= +// function : CreateBinData +// purpose : +// ======================================================================= +Handle(XCAFDoc_Note) XCAFDoc_NotesTool::CreateBinData(const TCollection_ExtendedString& theUserName, const TCollection_ExtendedString& theTimeStamp, const TCollection_ExtendedString& theTitle, @@ -246,6 +328,10 @@ XCAFDoc_NotesTool::CreateBinData(const TCollection_ExtendedString& theUserNam return XCAFDoc_NoteBinData::Set(aNoteLabel, theUserName, theTimeStamp, theTitle, theMIMEtype, theData); } +// ======================================================================= +// function : GetNotes +// purpose : +// ======================================================================= Standard_Integer XCAFDoc_NotesTool::GetNotes(const XCAFDoc_AssemblyItemId& theItemId, TDF_LabelSequence& theNoteLabels) const @@ -268,13 +354,21 @@ XCAFDoc_NotesTool::GetNotes(const XCAFDoc_AssemblyItemId& theItemId, return theNoteLabels.Length(); } -Standard_Integer +// ======================================================================= +// function : GetNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::GetNotes(const TDF_Label& theItemLabel, TDF_LabelSequence& theNoteLabels) const { return GetNotes(labeledItem(theItemLabel), theNoteLabels); } +// ======================================================================= +// function : GetAttrNotes +// purpose : +// ======================================================================= Standard_Integer XCAFDoc_NotesTool::GetAttrNotes(const XCAFDoc_AssemblyItemId& theItemId, const Standard_GUID& theGUID, @@ -298,7 +392,11 @@ XCAFDoc_NotesTool::GetAttrNotes(const XCAFDoc_AssemblyItemId& theItemId, return theNoteLabels.Length(); } -Standard_Integer +// ======================================================================= +// function : GetAttrNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::GetAttrNotes(const TDF_Label& theItemLabel, const Standard_GUID& theGUID, TDF_LabelSequence& theNoteLabels) const @@ -306,6 +404,10 @@ XCAFDoc_NotesTool::GetAttrNotes(const TDF_Label& theItemLabel, return GetAttrNotes(labeledItem(theItemLabel), theGUID, theNoteLabels); } +// ======================================================================= +// function : GetSubshapeNotes +// purpose : +// ======================================================================= Standard_Integer XCAFDoc_NotesTool::GetSubshapeNotes(const XCAFDoc_AssemblyItemId& theItemId, Standard_Integer theSubshapeIndex, @@ -329,6 +431,10 @@ XCAFDoc_NotesTool::GetSubshapeNotes(const XCAFDoc_AssemblyItemId& theItemId, return theNoteLabels.Length(); } +// ======================================================================= +// function : AddNote +// purpose : +// ======================================================================= Handle(XCAFDoc_AssemblyItemRef) XCAFDoc_NotesTool::AddNote(const TDF_Label& theNoteLabel, const XCAFDoc_AssemblyItemId& theItemId) @@ -376,14 +482,22 @@ XCAFDoc_NotesTool::AddNote(const TDF_Label& theNoteLabel, return anItemRef; } -Handle(XCAFDoc_AssemblyItemRef) +// ======================================================================= +// function : AddNote +// purpose : +// ======================================================================= +Handle(XCAFDoc_AssemblyItemRef) XCAFDoc_NotesTool::AddNote(const TDF_Label& theNoteLabel, const TDF_Label& theItemLabel) { return AddNote(theNoteLabel, labeledItem(theItemLabel)); } -Handle(XCAFDoc_AssemblyItemRef) +// ======================================================================= +// function : AddNoteToAttr +// purpose : +// ======================================================================= +Handle(XCAFDoc_AssemblyItemRef) XCAFDoc_NotesTool::AddNoteToAttr(const TDF_Label& theNoteLabel, const XCAFDoc_AssemblyItemId& theItemId, const Standard_GUID& theGUID) @@ -433,7 +547,11 @@ XCAFDoc_NotesTool::AddNoteToAttr(const TDF_Label& theNoteLabel, return anItemRef; } -Handle(XCAFDoc_AssemblyItemRef) +// ======================================================================= +// function : AddNoteToAttr +// purpose : +// ======================================================================= +Handle(XCAFDoc_AssemblyItemRef) XCAFDoc_NotesTool::AddNoteToAttr(const TDF_Label& theNoteLabel, const TDF_Label& theItemLabel, const Standard_GUID& theGUID) @@ -441,7 +559,11 @@ XCAFDoc_NotesTool::AddNoteToAttr(const TDF_Label& theNoteLabel, return AddNoteToAttr(theNoteLabel, labeledItem(theItemLabel), theGUID); } -Handle(XCAFDoc_AssemblyItemRef) +// ======================================================================= +// function : AddNoteToSubshape +// purpose : +// ======================================================================= +Handle(XCAFDoc_AssemblyItemRef) XCAFDoc_NotesTool::AddNoteToSubshape(const TDF_Label& theNoteLabel, const XCAFDoc_AssemblyItemId& theItemId, Standard_Integer theSubshapeIndex) @@ -491,7 +613,11 @@ XCAFDoc_NotesTool::AddNoteToSubshape(const TDF_Label& theNoteLabel, return anItemRef; } -Handle(XCAFDoc_AssemblyItemRef) +// ======================================================================= +// function : AddNoteToSubshape +// purpose : +// ======================================================================= +Handle(XCAFDoc_AssemblyItemRef) XCAFDoc_NotesTool::AddNoteToSubshape(const TDF_Label& theNoteLabel, const TDF_Label& theItemLabel, Standard_Integer theSubshapeIndex) @@ -499,7 +625,11 @@ XCAFDoc_NotesTool::AddNoteToSubshape(const TDF_Label& theNoteLabel, return AddNoteToSubshape(theNoteLabel, labeledItem(theItemLabel), theSubshapeIndex); } -Standard_Boolean +// ======================================================================= +// function : RemoveNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveNote(const TDF_Label& theNoteLabel, const XCAFDoc_AssemblyItemId& theItemId, Standard_Boolean theDelIfOrphan) @@ -531,7 +661,11 @@ XCAFDoc_NotesTool::RemoveNote(const TDF_Label& theNoteLabel, return Standard_True; } -Standard_Boolean +// ======================================================================= +// function : RemoveNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveNote(const TDF_Label& theNoteLabel, const TDF_Label& theItemLabel, Standard_Boolean theDelIfOrphan) @@ -539,7 +673,11 @@ XCAFDoc_NotesTool::RemoveNote(const TDF_Label& theNoteLabel, return RemoveNote(theNoteLabel, labeledItem(theItemLabel), theDelIfOrphan); } -Standard_Boolean +// ======================================================================= +// function : RemoveSubshapeNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveSubshapeNote(const TDF_Label& theNoteLabel, const XCAFDoc_AssemblyItemId& theItemId, Standard_Integer theSubshapeIndex, @@ -572,7 +710,11 @@ XCAFDoc_NotesTool::RemoveSubshapeNote(const TDF_Label& theNoteLabel return Standard_True; } -Standard_Boolean +// ======================================================================= +// function : RemoveSubshapeNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveSubshapeNote(const TDF_Label& theNoteLabel, const TDF_Label& theItemLabel, Standard_Integer theSubshapeIndex, @@ -581,7 +723,11 @@ XCAFDoc_NotesTool::RemoveSubshapeNote(const TDF_Label& theNoteLabel, return RemoveSubshapeNote(theNoteLabel, labeledItem(theItemLabel), theSubshapeIndex, theDelIfOrphan); } -Standard_Boolean +// ======================================================================= +// function : RemoveAttrNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAttrNote(const TDF_Label& theNoteLabel, const XCAFDoc_AssemblyItemId& theItemId, const Standard_GUID& theGUID, @@ -614,7 +760,11 @@ XCAFDoc_NotesTool::RemoveAttrNote(const TDF_Label& theNoteLabel, return Standard_True; } -Standard_Boolean +// ======================================================================= +// function : RemoveAttrNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAttrNote(const TDF_Label& theNoteLabel, const TDF_Label& theItemLabel, const Standard_GUID& theGUID, @@ -623,7 +773,11 @@ XCAFDoc_NotesTool::RemoveAttrNote(const TDF_Label& theNoteLabel, return RemoveAttrNote(theNoteLabel, labeledItem(theItemLabel), theGUID, theDelIfOrphan); } -Standard_Boolean +// ======================================================================= +// function : RemoveAllNotes +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAllNotes(const XCAFDoc_AssemblyItemId& theItemId, Standard_Boolean theDelIfOrphan) { @@ -652,14 +806,22 @@ XCAFDoc_NotesTool::RemoveAllNotes(const XCAFDoc_AssemblyItemId& theItemId, return Standard_True; } -Standard_Boolean +// ======================================================================= +// function : RemoveAllNotes +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAllNotes(const TDF_Label& theItemLabel, Standard_Boolean theDelIfOrphan) { return RemoveAllNotes(labeledItem(theItemLabel), theDelIfOrphan); } -Standard_Boolean +// ======================================================================= +// function : RemoveAllSubshapeNotes +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAllSubshapeNotes(const XCAFDoc_AssemblyItemId& theItemId, Standard_Integer theSubshapeIndex, Standard_Boolean theDelIfOrphan) @@ -689,7 +851,11 @@ XCAFDoc_NotesTool::RemoveAllSubshapeNotes(const XCAFDoc_AssemblyItemId& theItemI return Standard_True; } -Standard_Boolean +// ======================================================================= +// function : RemoveAllAttrNotes +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAllAttrNotes(const XCAFDoc_AssemblyItemId& theItemId, const Standard_GUID& theGUID, Standard_Boolean theDelIfOrphan) @@ -719,7 +885,11 @@ XCAFDoc_NotesTool::RemoveAllAttrNotes(const XCAFDoc_AssemblyItemId& theItemId, return Standard_True; } -Standard_Boolean +// ======================================================================= +// function : RemoveAllAttrNotes +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::RemoveAllAttrNotes(const TDF_Label& theItemLabel, const Standard_GUID& theGUID, Standard_Boolean theDelIfOrphan) @@ -727,7 +897,11 @@ XCAFDoc_NotesTool::RemoveAllAttrNotes(const TDF_Label& theItemLabel, return RemoveAllAttrNotes(labeledItem(theItemLabel), theGUID, theDelIfOrphan); } -Standard_Boolean +// ======================================================================= +// function : DeleteNote +// purpose : +// ======================================================================= +Standard_Boolean XCAFDoc_NotesTool::DeleteNote(const TDF_Label& theNoteLabel) { Handle(XCAFDoc_Note) aNote = XCAFDoc_Note::Get(theNoteLabel); @@ -750,7 +924,11 @@ XCAFDoc_NotesTool::DeleteNote(const TDF_Label& theNoteLabel) return Standard_False; } -Standard_Integer +// ======================================================================= +// function : DeleteNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::DeleteNotes(TDF_LabelSequence& theNoteLabels) { Standard_Integer nbNotes = 0; @@ -762,7 +940,11 @@ XCAFDoc_NotesTool::DeleteNotes(TDF_LabelSequence& theNoteLabels) return nbNotes; } -Standard_Integer +// ======================================================================= +// function : DeleteAllNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::DeleteAllNotes() { Standard_Integer nbNotes = 0; @@ -774,7 +956,11 @@ XCAFDoc_NotesTool::DeleteAllNotes() return nbNotes; } -Standard_Integer +// ======================================================================= +// function : NbOrphanNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::NbOrphanNotes() const { Standard_Integer nbNotes = 0; @@ -788,7 +974,11 @@ XCAFDoc_NotesTool::NbOrphanNotes() const return nbNotes; } -void +// ======================================================================= +// function : GetOrphanNotes +// purpose : +// ======================================================================= +void XCAFDoc_NotesTool::GetOrphanNotes(TDF_LabelSequence& theNoteLabels) const { for (TDF_ChildIterator anIter(GetNotesLabel()); anIter.More(); anIter.Next()) @@ -800,7 +990,11 @@ XCAFDoc_NotesTool::GetOrphanNotes(TDF_LabelSequence& theNoteLabels) const } } -Standard_Integer +// ======================================================================= +// function : DeleteOrphanNotes +// purpose : +// ======================================================================= +Standard_Integer XCAFDoc_NotesTool::DeleteOrphanNotes() { Standard_Integer nbNotes = 0; @@ -814,30 +1008,50 @@ XCAFDoc_NotesTool::DeleteOrphanNotes() return nbNotes; } -const Standard_GUID& +// ======================================================================= +// function : ID +// purpose : +// ======================================================================= +const Standard_GUID& XCAFDoc_NotesTool::ID() const { return GetID(); } -Handle(TDF_Attribute) +// ======================================================================= +// function : NewEmpty +// purpose : +// ======================================================================= +Handle(TDF_Attribute) XCAFDoc_NotesTool::NewEmpty() const { return new XCAFDoc_NotesTool(); } -void +// ======================================================================= +// function : Restore +// purpose : +// ======================================================================= +void XCAFDoc_NotesTool::Restore(const Handle(TDF_Attribute)& /*theAttr*/) { } -void +// ======================================================================= +// function : Paste +// purpose : +// ======================================================================= +void XCAFDoc_NotesTool::Paste(const Handle(TDF_Attribute)& /*theAttrInto*/, const Handle(TDF_RelocationTable)& /*theRT*/) const { } -Standard_OStream& +// ======================================================================= +// function : Dump +// purpose : +// ======================================================================= +Standard_OStream& XCAFDoc_NotesTool::Dump(Standard_OStream& theOS) const { theOS diff --git a/src/XCAFDoc/XCAFDoc_NotesTool.hxx b/src/XCAFDoc/XCAFDoc_NotesTool.hxx index b3cf26beeb..7480d134fd 100644 --- a/src/XCAFDoc/XCAFDoc_NotesTool.hxx +++ b/src/XCAFDoc/XCAFDoc_NotesTool.hxx @@ -1,6 +1,4 @@ -// Created on: 2017-02-10 -// Created by: Sergey NIKONOV -// Copyright (c) 2000-2017 OPEN CASCADE SAS +// Copyright (c) 2017-2018 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // @@ -31,9 +29,6 @@ class XCAFDoc_Note; class XCAFDoc_AssemblyItemId; class XCAFDoc_AssemblyItemRef; -class XCAFDoc_NotesTool; -DEFINE_STANDARD_HANDLE(XCAFDoc_NotesTool, TDF_Attribute) - //! A tool to annotate items in the hierarchical product structure. //! There are two basic entities, which operates the notes tool: notes //! and annotated items. A note is a user defined data structure derived @@ -84,6 +79,7 @@ public: DEFINE_STANDARD_RTTIEXT(XCAFDoc_NotesTool, TDF_Attribute) + //! Returns default attribute GUID Standard_EXPORT static const Standard_GUID& GetID(); //! Create (if not exist) a notes tool from XCAFDoc on theLabel. @@ -516,4 +512,6 @@ public: }; +DEFINE_STANDARD_HANDLE(XCAFDoc_NotesTool, TDF_Attribute) + #endif // _XCAFDoc_NotesTool_HeaderFile diff --git a/src/XCAFNoteObjects/FILES b/src/XCAFNoteObjects/FILES new file mode 100644 index 0000000000..b3f904a074 --- /dev/null +++ b/src/XCAFNoteObjects/FILES @@ -0,0 +1,3 @@ +FILES +XCAFNoteObjects_NoteObject.cxx +XCAFNoteObjects_NoteObject.hxx diff --git a/src/XCAFNoteObjects/XCAFNoteObjects_NoteObject.cxx b/src/XCAFNoteObjects/XCAFNoteObjects_NoteObject.cxx new file mode 100644 index 0000000000..0b8b4b1bc5 --- /dev/null +++ b/src/XCAFNoteObjects/XCAFNoteObjects_NoteObject.cxx @@ -0,0 +1,93 @@ +// Copyright (c) 2018 OPEN CASCADE SAS +// +// This file is part of Open CASCADE Technology software library. +// +// This library is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License version 2.1 as published +// by the Free Software Foundation, with special exception defined in the file +// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT +// distribution for complete text of the license and disclaimer of any warranty. +// +// Alternatively, this file may be used under the terms of Open CASCADE +// commercial license or contractual agreement. + +#include + +IMPLEMENT_STANDARD_RTTIEXT(XCAFNoteObjects_NoteObject, Standard_Transient) + +//======================================================================= +//function : XCAFDimTolObjects_DimensionObject +//purpose : +//======================================================================= +XCAFNoteObjects_NoteObject::XCAFNoteObjects_NoteObject() +: myHasPlane (Standard_False), + myHasPnt (Standard_False), + myHasPntTxt(Standard_False) +{ +} + +//======================================================================= +//function : XCAFDimTolObjects_DimensionObject +//purpose : +//======================================================================= +XCAFNoteObjects_NoteObject::XCAFNoteObjects_NoteObject (const Handle(XCAFNoteObjects_NoteObject)& theObj) +: myPlane (theObj->myPlane), + myPnt (theObj->myPnt), + myPntTxt (theObj->myPntTxt), + myPresentation (theObj->myPresentation), + myHasPlane (theObj->myHasPlane), + myHasPnt (theObj->myHasPnt), + myHasPntTxt (theObj->myHasPntTxt) +{ +} + +//======================================================================= +//function : SetPlane +//purpose : +//======================================================================= +void XCAFNoteObjects_NoteObject::SetPlane (const gp_Ax2& thePlane) +{ + myPlane = thePlane; + myHasPlane = Standard_True; +} + +//======================================================================= +//function : SetPoint +//purpose : +//======================================================================= +void XCAFNoteObjects_NoteObject::SetPoint (const gp_Pnt& thePnt) +{ + myPnt = thePnt; + myHasPnt = Standard_True; +} + +//======================================================================= +//function : SetPointText +//purpose : +//======================================================================= +void XCAFNoteObjects_NoteObject::SetPointText (const gp_Pnt& thePnt) +{ + myPntTxt = thePnt; + myHasPntTxt = Standard_True; +} + +//======================================================================= +//function : SetPresentation +//purpose : +//======================================================================= +void XCAFNoteObjects_NoteObject::SetPresentation (const TopoDS_Shape& thePresentation) +{ + myPresentation = thePresentation; +} + +//======================================================================= +//function : Reset +//purpose : +//======================================================================= +void XCAFNoteObjects_NoteObject::Reset() +{ + myHasPlane = Standard_False; + myHasPnt = Standard_False; + myHasPntTxt = Standard_False; + myPresentation.Nullify(); +} diff --git a/src/XCAFNoteObjects/XCAFNoteObjects_NoteObject.hxx b/src/XCAFNoteObjects/XCAFNoteObjects_NoteObject.hxx new file mode 100644 index 0000000000..1039ca022b --- /dev/null +++ b/src/XCAFNoteObjects/XCAFNoteObjects_NoteObject.hxx @@ -0,0 +1,86 @@ +// Copyright (c) 2018 OPEN CASCADE SAS +// +// This file is part of Open CASCADE Technology software library. +// +// This library is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License version 2.1 as published +// by the Free Software Foundation, with special exception defined in the file +// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT +// distribution for complete text of the license and disclaimer of any warranty. +// +// Alternatively, this file may be used under the terms of Open CASCADE +// commercial license or contractual agreement. + +#ifndef _XCAFNoteObjects_NoteObject_HeaderFile +#define _XCAFNoteObjects_NoteObject_HeaderFile + +#include +#include +#include +#include +#include +#include + +//! object to store note auxiliary data +class XCAFNoteObjects_NoteObject : public Standard_Transient +{ + DEFINE_STANDARD_RTTIEXT(XCAFNoteObjects_NoteObject, Standard_Transient) +public: + + //! Empty object + Standard_EXPORT XCAFNoteObjects_NoteObject(); + + //! Copy constructor. + Standard_EXPORT XCAFNoteObjects_NoteObject (const Handle(XCAFNoteObjects_NoteObject)& theObj); + + //! Returns True if plane is specified + Standard_Boolean HasPlane() const { return myHasPlane; } + + //! Returns a right-handed coordinate system of the plane + const gp_Ax2& GetPlane() const { return myPlane; } + + //! Sets a right-handed coordinate system of the plane + Standard_EXPORT void SetPlane (const gp_Ax2& thePlane); + + //! Returns True if the attachment point on the annotated object is specified + Standard_Boolean HasPoint() const { return myHasPnt; } + + //! Returns the attachment point on the annotated object + const gp_Pnt& GetPoint() const { return myPnt; } + + //! Sets the anchor point on the annotated object + Standard_EXPORT void SetPoint (const gp_Pnt& thePnt); + + //! Returns True if the text position is specified + Standard_Boolean HasPointText() const { return myHasPntTxt; } + + //! Returns the text position + const gp_Pnt& GetPointText() const { return myPntTxt; } + + //! Sets the text position + Standard_EXPORT void SetPointText (const gp_Pnt& thePnt); + + //! Returns a tesselated annotation if specified + const TopoDS_Shape& GetPresentation() const { return myPresentation; } + + //! Sets a tesselated annotation + Standard_EXPORT void SetPresentation (const TopoDS_Shape& thePresentation); + + //! Resets data to the state after calling the default constructor + Standard_EXPORT void Reset(); + +private: + + gp_Ax2 myPlane; + gp_Pnt myPnt; + gp_Pnt myPntTxt; + TopoDS_Shape myPresentation; + Standard_Boolean myHasPlane; + Standard_Boolean myHasPnt; + Standard_Boolean myHasPntTxt; + +}; + +DEFINE_STANDARD_HANDLE(XCAFNoteObjects_NoteObject, Standard_Transient) + +#endif // _XCAFNoteObjects_NoteObject_HeaderFile diff --git a/src/XDEDRAW/XDEDRAW_Notes.cxx b/src/XDEDRAW/XDEDRAW_Notes.cxx index 05fc1e75f6..42a90f4d89 100644 --- a/src/XDEDRAW/XDEDRAW_Notes.cxx +++ b/src/XDEDRAW/XDEDRAW_Notes.cxx @@ -1264,6 +1264,37 @@ noteDump(Draw_Interpretor& di, Standard_Integer argc, const char** argv) } } + Handle(XCAFNoteObjects_NoteObject) aNoteObj = aNote->GetObject(); + if (!aNoteObj.IsNull()) + { + di << "text point : "; + if (aNoteObj->HasPointText()) + { + const gp_Pnt& aP = aNoteObj->GetPointText(); + di << "[ " << aP.X() << " " << aP.Y() << " " << aP.Z() << " ]\n"; + } + else + di << " not specified\n"; + di << "plane : "; + if (aNoteObj->HasPlane()) + { + const gp_Ax2& anAx = aNoteObj->GetPlane(); + const gp_Pnt& aP = anAx.Location(); + di << "P : [ " << aP.X() << " " << aP.Y() << " " << aP.Z() << " ]"; + const gp_Dir& aN = anAx.Direction(); + di << "N : [ " << aN.X() << " " << aN.Y() << " " << aN.Z() << " ]"; + } + di << "attachment point : "; + if (aNoteObj->HasPoint()) + { + const gp_Pnt& aP = aNoteObj->GetPoint(); + di << "[ " << aP.X() << " " << aP.Y() << " " << aP.Z() << " ]\n"; + } + else + di << " not specified\n"; + di << "presentation : " << (aNoteObj->GetPresentation().IsNull() ? "no" : "specified"); + } + return 0; }