mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
0029888: [Regression] Data Exchange - XCAFDoc_Editor::Expand() removes names
XCAFDoc_Editor::Expand function avoids expanding references to assemblies.
This commit is contained in:
parent
4680b22c2c
commit
8cbf1f8d41
@ -49,11 +49,15 @@ Standard_Boolean XCAFDoc_Editor::Expand (const TDF_Label& Doc, const TDF_Label&
|
||||
Standard_Boolean isAutoNaming = aShapeTool->AutoNaming();
|
||||
aShapeTool->SetAutoNaming(Standard_False);
|
||||
|
||||
TopoDS_Shape aS = aShapeTool->GetShape(Shape);
|
||||
if (aShapeTool->Expand(Shape))
|
||||
TDF_Label aCompoundPartL = Shape;
|
||||
if (aShapeTool->IsReference(Shape))
|
||||
aShapeTool->GetReferredShape(aCompoundPartL, aCompoundPartL);
|
||||
|
||||
TopoDS_Shape aS = aShapeTool->GetShape(aCompoundPartL);
|
||||
if (aShapeTool->Expand(aCompoundPartL))
|
||||
{
|
||||
//move attributes
|
||||
TDF_ChildIterator anIter(Shape, Standard_True);
|
||||
TDF_ChildIterator anIter(aCompoundPartL, Standard_True);
|
||||
for(; anIter.More(); anIter.Next())
|
||||
{
|
||||
TDF_Label aChild = anIter.Value();
|
||||
@ -104,7 +108,7 @@ Standard_Boolean XCAFDoc_Editor::Expand (const TDF_Label& Doc, const TDF_Label&
|
||||
//if assembly contains compound, expand it recursively(if flag recursively is true)
|
||||
if(recursively)
|
||||
{
|
||||
anIter.Initialize(Shape);
|
||||
anIter.Initialize(aCompoundPartL);
|
||||
for(; anIter.More(); anIter.Next())
|
||||
{
|
||||
TDF_Label aChild = anIter.Value();
|
||||
|
22
tests/bugs/xde/bug29888_1
Normal file
22
tests/bugs/xde/bug29888_1
Normal file
@ -0,0 +1,22 @@
|
||||
puts "=========="
|
||||
puts "OCC29888"
|
||||
puts "=========="
|
||||
puts ""
|
||||
#########################################
|
||||
# XCAFDoc_Editor::Expand() removes names
|
||||
#########################################
|
||||
pload ALL
|
||||
|
||||
XOpen [locate_data_file bug29888.xbf] D
|
||||
|
||||
set isBAD 1
|
||||
|
||||
if {[catch {XExpand D 0} result]} {
|
||||
set isBAD 0
|
||||
}
|
||||
|
||||
if {$isBAD} {
|
||||
puts "Error: expand unexpandable shape type"
|
||||
}
|
||||
|
||||
Close D
|
32
tests/bugs/xde/bug29888_2
Normal file
32
tests/bugs/xde/bug29888_2
Normal file
@ -0,0 +1,32 @@
|
||||
puts "=========="
|
||||
puts "OCC29888"
|
||||
puts "=========="
|
||||
puts ""
|
||||
#########################################
|
||||
# XCAFDoc_Editor::Expand() removes names
|
||||
#########################################
|
||||
pload ALL
|
||||
|
||||
XOpen [locate_data_file bug29888_part.xbf] D
|
||||
|
||||
XExpand D 0
|
||||
|
||||
set name_ref [GetName D 0:1:1:2:4]
|
||||
set name_part [GetName D 0:1:1:6]
|
||||
if {$name_ref != $name_part || $name_ref != "LanternPole_Body"} {
|
||||
puts "Error: name has been lost"
|
||||
}
|
||||
|
||||
set name_ref [GetName D 0:1:1:2:5]
|
||||
set name_part [GetName D 0:1:1:7]
|
||||
if {$name_ref != $name_part || $name_ref != "LanternPole_Chain"} {
|
||||
puts "Error: name has been lost"
|
||||
}
|
||||
|
||||
set name_ref [GetName D 0:1:1:2:6]
|
||||
set name_part [GetName D 0:1:1:8]
|
||||
if {$name_ref != $name_part || $name_ref != "LanternPole_Lantern"} {
|
||||
puts "Error: name has been lost"
|
||||
}
|
||||
|
||||
Close D
|
Loading…
x
Reference in New Issue
Block a user