]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Update the ID of the TDF_Attribute while copying. rnv/pv58_2
authorazv <azv@opencascade.com>
Thu, 5 Mar 2020 10:41:03 +0000 (13:41 +0300)
committerazv <azv@opencascade.com>
Thu, 5 Mar 2020 10:41:03 +0000 (13:41 +0300)
src/Model/Model_AttributeSelectionList.cpp
src/Model/Model_Tools.cpp

index 77fb5185364b0c76ddfa450e62645e0a1c884d9b..95a17e9d2e4713dd25844253413fb61bde52c353 100644 (file)
@@ -217,6 +217,8 @@ static void copyAttrs(TDF_Label theSource, TDF_Label theDestination) {
     if (!theDestination.FindAttribute(anAttrIter.Value()->ID(), aTargetAttr)) {
       // create a new attribute if not yet exists in the destination
            aTargetAttr = anAttrIter.Value()->NewEmpty();
+      if (aTargetAttr->ID() != anAttrIter.Value()->ID())
+        aTargetAttr->SetID(anAttrIter.Value()->ID());
       theDestination.AddAttribute(aTargetAttr);
     }
     // for named shape copy exact shapes (in NamedShape Paste method the CopyTool is used)
index 48831807a3496897672b5b6809845bf6b5bc8fd3..04f49fb7ed69aaae4bf0b853c4da3b769995b26c 100644 (file)
@@ -62,6 +62,8 @@ void Model_Tools::copyAttrs(TDF_Label theSource, TDF_Label theDestination,
     if (!theDestination.FindAttribute(anAttrIter.Value()->ID(), aTargetAttr)) {
       // create a new attribute if not yet exists in the destination
            aTargetAttr = anAttrIter.Value()->NewEmpty();
+      if (aTargetAttr->ID() != anAttrIter.Value()->ID())
+        aTargetAttr->SetID(anAttrIter.Value()->ID());
       theDestination.AddAttribute(aTargetAttr);
     }
     // no special relocation, empty map, but self-relocation is on: copy references w/o changes
@@ -126,6 +128,8 @@ void Model_Tools::copyAttrsAndKeepRefsToCoordinates(
     if (!theDestination.FindAttribute(anAttrIter.Value()->ID(), aTargetAttr)) {
       // create a new attribute if not yet exists in the destination
            aTargetAttr = anAttrIter.Value()->NewEmpty();
+      if (aTargetAttr->ID() != anAttrIter.Value()->ID())
+        aTargetAttr->SetID(anAttrIter.Value()->ID());
       theDestination.AddAttribute(aTargetAttr);
     }
     anAttrIter.Value()->Paste(aTargetAttr, theRelocTable);