From 5ada54fb790c148956349aa2478316a71c3d968a Mon Sep 17 00:00:00 2001 From: skl Date: Tue, 23 Oct 2018 07:50:33 +0300 Subject: [PATCH] 0030280: Data Exchange - broken VRML output due to unescaped symbols starting comment block --- src/VrmlData/VrmlData_ShapeConvert.cxx | 14 +++++++++++--- tests/bugs/xde/bug30280 | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 tests/bugs/xde/bug30280 diff --git a/src/VrmlData/VrmlData_ShapeConvert.cxx b/src/VrmlData/VrmlData_ShapeConvert.cxx index 60d5b16d9c..177295e53c 100644 --- a/src/VrmlData/VrmlData_ShapeConvert.cxx +++ b/src/VrmlData/VrmlData_ShapeConvert.cxx @@ -262,11 +262,14 @@ void VrmlData_ShapeConvert::Convert (const Standard_Boolean theExtractFaces, myRelMap = NCollection_DataMap (100, anAlloc); NCollection_List::Iterator anIter (myShapes); - for (; anIter.More(); anIter.Next()) { - + for (; anIter.More(); anIter.Next()) + { ShapeData& aData = anIter.ChangeValue(); + TCollection_AsciiString aGrName = aData.Name; + aGrName.ChangeAll(' ', '_'); + aGrName.ChangeAll('#', '_'); Handle(VrmlData_Group) aGroup = - new VrmlData_Group (myScene, aData.Name.ToCString()); + new VrmlData_Group (myScene, aGrName.ToCString()); myScene.AddNode (aGroup); for(i = 0; i < 2; ++i) { @@ -622,6 +625,8 @@ void VrmlData_ShapeConvert::addShape (const Handle(VrmlData_Group)& theParent, if (!aNameAttribute.IsNull()) { TCollection_AsciiString aName = aNameAttribute->Get(); + aName.ChangeAll(' ', '_'); + aName.ChangeAll('#', '_'); aGroup = new VrmlData_Group(myScene, aName.ToCString()); } else @@ -647,6 +652,7 @@ void VrmlData_ShapeConvert::addShape (const Handle(VrmlData_Group)& theParent, { TCollection_AsciiString aName = aNameAttribute->Get(); aName.ChangeAll(' ', '_'); + aName.ChangeAll('#', '_'); aShapeNode = new VrmlData_ShapeNode(myScene, aName.ToCString()); } else @@ -785,6 +791,8 @@ void VrmlData_ShapeConvert::addAssembly (const Handle(VrmlData_Group)& theParent if (!aNameAttribute.IsNull()) { TCollection_AsciiString aName = aNameAttribute->Get(); + aName.ChangeAll(' ', '_'); + aName.ChangeAll('#', '_'); anAssembly = new VrmlData_Group(myScene, aName.ToCString()); } else diff --git a/tests/bugs/xde/bug30280 b/tests/bugs/xde/bug30280 new file mode 100644 index 0000000000..4b8d21960b --- /dev/null +++ b/tests/bugs/xde/bug30280 @@ -0,0 +1,16 @@ +puts "=========" +puts "OCC30280" +puts "=========" +puts "" +###################################################################################### +# Data Exchange - broken VRML output due to unescaped symbols starting comment block +###################################################################################### + +set filename bug30280_vmt02 +XOpen [locate_data_file $filename.xbf] D + +file delete -force ${imagedir}/$filename.wrl +WriteVrml D ${imagedir}/$filename.wrl +loadvrml a ${imagedir}/$filename.wrl + +checkview -display a -3d -path ${imagedir}/${test_image}.png -- 2.39.5