myExtraId.Clear();
}
+void
+XCAFDoc_AssemblyItemRef::SetItem(const TColStd_ListOfAsciiString& thePath)
+{
+ Backup();
+ myItemId.Init(thePath);
+}
+
+void
+XCAFDoc_AssemblyItemRef::SetItem(const TCollection_AsciiString& theString)
+{
+ Backup();
+ myItemId.Init(theString);
+}
+
+void XCAFDoc_AssemblyItemRef::SetGUID(const Standard_GUID& theAttrGUID)
+{
+ Backup();
+ myExtraRef = ExtraRef_AttrGUID;
+ Standard_Character aGUIDStr[Standard_GUID_SIZE + 1];
+ theAttrGUID.ToCString(aGUIDStr);
+ aGUIDStr[Standard_GUID_SIZE] = '\0';
+ myExtraId.Clear();
+ myExtraId.AssignCat(aGUIDStr);
+}
+
+void
+XCAFDoc_AssemblyItemRef::SetSubshapeIndex(Standard_Integer theSubshapeIndex)
+{
+ Backup();
+ myExtraRef = ExtraRef_SubshapeIndex;
+ myExtraId.Clear();
+ myExtraId.AssignCat(theSubshapeIndex);
+}
+
+void
+XCAFDoc_AssemblyItemRef::ClearExtraRef()
+{
+ Backup();
+ myExtraRef = ExtraRef_None;
+ myExtraId.Clear();
+}
+
const Standard_GUID&
XCAFDoc_AssemblyItemRef::ID() const
{
//! \return a handle to the assembly reference attribute.
Standard_EXPORT Handle(XCAFDoc_AssemblyItemRef) AddNote(const TDF_Label& theNoteLabel,
const XCAFDoc_AssemblyItemId& theItemId);
+ Standard_EXPORT Handle(XCAFDoc_AssemblyItemRef) AddNoteToAttr(const TDF_Label& theNoteLabel,
+ const XCAFDoc_AssemblyItemId& theItemId,
+ const Standard_GUID& theGUID);
+ Standard_EXPORT Handle(XCAFDoc_AssemblyItemRef) AddNoteToSubshape(const TDF_Label& theNoteLabel,
+ const XCAFDoc_AssemblyItemId& theItemId,
+ Standard_Integer theSubshapeIndex);
//! Adds the given note to the labeled item.
//! \param [in] theNoteLabel - note label.
IMPLEMENT_STANDARD_RTTIEXT(XmlMXCAFDoc_AssemblyItemRefDriver, XmlMDF_ADriver)
IMPLEMENT_DOMSTRING(Path, "path")
+IMPLEMENT_DOMSTRING(AttrGUID, "guid")
+IMPLEMENT_DOMSTRING(SubshapeIndex, "subshape_index")
//=======================================================================
//function :
if (aThis.IsNull())
return Standard_False;
- aThis->Set(aPath.GetString());
+ aThis->SetItem(aPath.GetString());
+
+ XmlObjMgt_DOMString anAttrGUID = anElement.getAttribute(::AttrGUID());
+ if (anAttrGUID != NULL)
+ {
+ Standard_GUID aGUID(anAttrGUID.GetString());
+ aThis->SetGUID(aGUID);
+ return Standard_True;
+ }
+
+ XmlObjMgt_DOMString aSubshapeIndex = anElement.getAttribute(::SubshapeIndex());
+ if (aSubshapeIndex != NULL)
+ {
+ Standard_Integer anIndex;
+ if (!aSubshapeIndex.GetInteger(anIndex))
+ return Standard_False;
+
+ aThis->SetSubshapeIndex(anIndex);
+ return Standard_True;
+ }
return Standard_True;
}
{
Handle(XCAFDoc_AssemblyItemRef) aThis = Handle(XCAFDoc_AssemblyItemRef)::DownCast(theSource);
- XmlObjMgt_DOMString aPath(aThis->Get().ToString().ToCString());
-
+ XmlObjMgt_DOMString aPath(aThis->GetItem().ToString().ToCString());
theTarget.Element().setAttribute(::Path(), aPath);
+
+ if (aThis->IsGUID())
+ {
+ Standard_GUID aGUID = aThis->GetGUID();
+ Standard_Character aGUIDStr[Standard_GUID_SIZE + 1];
+ aGUID.ToCString(aGUIDStr);
+ aGUIDStr[Standard_GUID_SIZE] = '\0';
+ XmlObjMgt_DOMString anAttrGUID(aGUIDStr);
+ theTarget.Element().setAttribute(::AttrGUID(), anAttrGUID);
+ }
+ else if (aThis->IsSubshapeIndex())
+ {
+ TCollection_AsciiString aSubshapeIndexStr(aThis->GetSubshapeIndex());
+ XmlObjMgt_DOMString aSubshapeIndex(aSubshapeIndexStr.ToCString());
+ theTarget.Element().setAttribute(::SubshapeIndex(), aSubshapeIndex);
+ }
+
}