From: skl Date: Tue, 23 Oct 2018 04:50:33 +0000 (+0300) Subject: 0030280: Data Exchange - broken VRML output due to unescaped symbols starting comment... X-Git-Tag: V7_4_0_beta~356 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=5ada54fb790c148956349aa2478316a71c3d968a;p=occt.git 0030280: Data Exchange - broken VRML output due to unescaped symbols starting comment block --- 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