From: ika Date: Mon, 18 May 2020 13:21:22 +0000 (+0300) Subject: 0031568: Data Exchange - invalid model produced after STEP import X-Git-Tag: V7_5_0_beta~190 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2FIR-2020-05-22;p=occt.git 0031568: Data Exchange - invalid model produced after STEP import Add protection against reference to reference in STEP import. --- diff --git a/src/STEPCAFControl/STEPCAFControl_Reader.cxx b/src/STEPCAFControl/STEPCAFControl_Reader.cxx index 487c991812..77dcf0de30 100644 --- a/src/STEPCAFControl/STEPCAFControl_Reader.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Reader.cxx @@ -810,7 +810,9 @@ TDF_Label STEPCAFControl_Reader::AddShape(const TopoDS_Shape &S, TDF_Label subL = AddShape(Sub0, STool, NewShapesMap, ShapePDMap, PDFileMap, ShapeLabelMap); if (!subL.IsNull()) { TDF_Label instL = STool->AddComponent(L, subL, it.Value().Location()); - ShapeLabelMap.Bind(it.Value(), instL); + if (!ShapeLabelMap.IsBound(it.Value())) { + ShapeLabelMap.Bind(it.Value(), instL); + } } } if (SHAS.Length() > 0) STool->SetExternRefs(L, SHAS); diff --git a/tests/bugs/step/bug31568 b/tests/bugs/step/bug31568 new file mode 100644 index 0000000000..67eb6a7a14 --- /dev/null +++ b/tests/bugs/step/bug31568 @@ -0,0 +1,13 @@ +puts "=================================================================" +puts "0031568: Data Exchange - invalid model produced after STEP import" +puts "=================================================================" + +pload DCAF + +ReadStep D [locate_data_file bug31568_Konecranes_Sample_3D.stp] +set ref [XGetReferredShape D 0:1:1:41:11] +if {$ref != "0:1:1:23"} { + puts "Error: wrong reference in data model" +} + +Close D