From 0911d065ffd96f8c01d31a8ecf960f5542a9a38b Mon Sep 17 00:00:00 2001 From: gka Date: Tue, 10 May 2016 20:02:50 +0300 Subject: [PATCH] 0027169: Suspitious behavior of importing names during STEP import In order to avoid using empty strings in the names of the assemblies in the XCAF document after reading step file for cases when description or name is defined by only 1 space character method TCollection_AsciiString::Length() was replaced on the method TCollection_AsciiString::UsefullLength(). Test case for issue CR27169 Eliminating warning --- src/STEPCAFControl/STEPCAFControl_Reader.cxx | 9 ++-- tests/bugs/xde/bug27169 | 47 ++++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 tests/bugs/xde/bug27169 diff --git a/src/STEPCAFControl/STEPCAFControl_Reader.cxx b/src/STEPCAFControl/STEPCAFControl_Reader.cxx index 46533472ee..439873f12a 100644 --- a/src/STEPCAFControl/STEPCAFControl_Reader.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Reader.cxx @@ -1164,8 +1164,8 @@ Standard_Boolean STEPCAFControl_Reader::ReadNames (const Handle(XSControl_WorkSe Handle(StepBasic_ProductDefinitionRelationship) PDR = PDS->Definition().ProductDefinitionRelationship(); if ( PDR.IsNull() ) continue; if ( PDR->HasDescription() && - PDR->Description()->Length() >0 ) name = PDR->Description(); - else if ( !PDR->Name().IsNull() && PDR->Name()->Length() >0 ) name = PDR->Name(); + PDR->Description()->UsefullLength() >0 ) name = PDR->Description(); + else if ( !PDR->Name().IsNull() && PDR->Name()->UsefullLength() >0 ) name = PDR->Name(); else if ( !PDR->Id().IsNull()) name = PDR->Id(); else name = new TCollection_HAsciiString; } @@ -2861,8 +2861,9 @@ static TDF_Label createGDTObjectInXCAF(const Handle(Standard_Transient)& theEnt, else { if(aGISU.IsNull()) continue; - for (Standard_Integer i = 1; i <= aGISU->NbIdentifiedItem(); i++) { - aSeqRI.Append(aGISU->IdentifiedItemValue(i)); + Standard_Integer j =1; + for ( ; j <= aGISU->NbIdentifiedItem(); j++) { + aSeqRI.Append(aGISU->IdentifiedItemValue(j)); } } } diff --git a/tests/bugs/xde/bug27169 b/tests/bugs/xde/bug27169 new file mode 100644 index 0000000000..319bb69eda --- /dev/null +++ b/tests/bugs/xde/bug27169 @@ -0,0 +1,47 @@ +puts "==========" +puts "OCC27169" +puts "==========" +puts "" +######################################################################## +# Suspitious behavior of importing names during STEP import +######################################################################## + +pload DCAF + +ReadStep D [locate_data_file bug27169_robot01.step] + +set label_1 0:1:1:1:1 +set label_2 0:1:1:1:2 +set label_3 0:1:1:1:3 +set label_4 0:1:1:1:4 + +set Name_1 [GetName D ${label_1}] +set Name_2 [GetName D ${label_2}] +set Name_3 [GetName D ${label_3}] +set Name_4 [GetName D ${label_4}] + +puts "Name_1='${Name_1}'" +puts "Name_2='${Name_2}'" +puts "Name_3='${Name_3}'" +puts "Name_4='${Name_4}'" + +if (![regexp {NAUO1} ${Name_1}]) { + puts "Error: Name of entitie ${label_1} is bad" +} else { + puts "OK: Name of entitie ${label_1} is good" +} +if (![regexp {NAUO2} ${Name_2}]) { + puts "Error: Name of entitie ${label_2} is bad" +} else { + puts "OK: Name of entitie ${label_2} is good" +} +if (![regexp {NAUO3} ${Name_3}]) { + puts "Error: Name of entitie ${label_3} is bad" +} else { + puts "OK: Name of entitie ${label_3} is good" +} +if (![regexp {NAUO4} ${Name_4}]) { + puts "Error: Name of entitie ${label_4} is bad" +} else { + puts "OK: Name of entitie ${label_4} is good" +}