X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeReference.cpp;h=40ad13ad987acd868549bf29403c4a22167f5fc1;hb=4fc2dc9fdc0c14fab5f2780598eccdc1368d81b9;hp=a6ac5e31acfff3927684c76b6d2b792bbaee3723;hpb=09140d7d346770792453ea606fd2b633a823a1e5;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeReference.cpp b/src/Model/Model_AttributeReference.cpp index a6ac5e31a..40ad13ad9 100644 --- a/src/Model/Model_AttributeReference.cpp +++ b/src/Model/Model_AttributeReference.cpp @@ -28,7 +28,7 @@ void Model_AttributeReference::setValue(ObjectPtr theObject) REMOVE_BACK_REF(aValue); TDF_Label anObjLab; - if (theObject.get() && theObject->data().get() && theObject->data()->isValid()) { + if (theObject.get() && theObject->data()->isValid()) { std::shared_ptr aData = std::dynamic_pointer_cast( theObject->data()); anObjLab = aData->label().Father(); // object label @@ -36,8 +36,6 @@ void Model_AttributeReference::setValue(ObjectPtr theObject) // same document, use reference attribute if (anObjLab.IsNull() || owner()->document() == theObject->document()) { - std::shared_ptr aDoc = - std::dynamic_pointer_cast(owner()->document()); if (anObjLab.IsNull()) { myRef->Set(myRef->Label()); } else { @@ -48,7 +46,9 @@ void Model_AttributeReference::setValue(ObjectPtr theObject) myRef->Label().ForgetAttribute(TDataStd_AsciiString::GetID()); } else { // different document: store the document name (comment) and entry (string): external // if these attributes exist, the link is external: keep reference to access the label - TDataStd_Comment::Set(myRef->Label(), theObject->document()->id().c_str()); + std::ostringstream anIdString; // string with document Id + anIdString<document()->id(); + TDataStd_Comment::Set(myRef->Label(), anIdString.str().c_str()); TCollection_AsciiString anEntry; TDF_Tool::Entry(anObjLab, anEntry); TDataStd_AsciiString::Set(myRef->Label(), anEntry); @@ -66,9 +66,9 @@ ObjectPtr Model_AttributeReference::value() if (isInitialized()) { Handle(TDataStd_Comment) aDocID; if (myRef->Label().FindAttribute(TDataStd_Comment::GetID(), aDocID)) { // external ref - DocumentPtr aRefDoc = - ModelAPI_Session::get()->document(TCollection_AsciiString(aDocID->Get()).ToCString()); - if (aRefDoc) { + int anID = atoi(TCollection_AsciiString(aDocID->Get()).ToCString()); + DocumentPtr aRefDoc = Model_Application::getApplication()->document(anID); + if (aRefDoc.get()) { Handle(TDataStd_AsciiString) anEntry; if (myRef->Label().FindAttribute(TDataStd_AsciiString::GetID(), anEntry)) { std::shared_ptr aDR = std::dynamic_pointer_cast(aRefDoc);