含末尾单引号的IFC文件在Autodesk Forge转换失败的原因问询
问题:IFC属性值末尾带单引号导致Model Derivative API转换失败
- 使用的API:
POST /modelderivative/v2/designdata/job - 目标属性值:
EL-G35211AN/6-SP/L''
IFC文件中包含目标属性值的行数据:
#2340 = IFCFLOWTERMINAL('32hCanqHP0QAQmHARnRsKT', #2341, '\X2\30107167660E56685177FF0830E630FC30B630FC90E86750FF093011FF7CFF7DFF83FF9159294E95FF086D45578BFF09\X0\ EL-G35211AN/6-SP/L'', '\X2\6A5F566830FB56685177\X0\. \X2\30E630FC30B630FC90E86750\X0\', $, #2353, #2339, $);
#2346 = IFCLIGHTFIXTURETYPE('2A0TvRw8rCk8EKh4gObqVr', #2341, '\X2\30107167660E56685177FF0830E630FC30B630FC90E86750FF093011FF7CFF7DFF83FF9159294E95FF086D45578BFF09\X0\ EL-G35211AN/6-SP/L'', '\X2\6A5F566830FB56685177\X0\. \X2\30E630FC30B630FC90E86750\X0\', $, $, $, $, $, .NOTDEFINED.);#2390 = IFCPROPERTYSINGLEVALUE('\X2\540D79F0\X0\', '', IFCTEXT('\X2\FF7CFF7DFF83FF9159294E95FF086D45578BFF09\X0\ EL-G35211AN/6-SP/L''), $);
#2378 = IFCPROPERTYLISTVALUE('table_data', '', (IFCTEXT('SPVER,10,\X2\4ED569D866F830D030FC30B830E730F330B330FC30C9\X0\,'), IFCTEXT('CGRYCODE,403000000000000000,\X2\6A5F56685206985E30B330FC30C9\X0\,,'), IFCTEXT('NAME2,\X2\FF7CFF7DFF83FF9159294E95FF086D45578BFF09\X0\,\X2\578B5F0F540D79F0\X0\,'), IFCTEXT('NAME1,EL-G35211AN/6-SP/L'',\X2\30E130FC30AB30FC578B756A\X0\,')), $);
#2390 = IFCPROPERTYSINGLEVALUE('\X2\540D79F0\X0\', '', IFCTEXT('\X2\FF7CFF7DFF83FF9159294E95FF086D45578BFF09\X0\ EL-G35211AN/6-SP/L''), $); #2398 = IFCPROPERTYSINGLEVALUE('\X2\578B756A\X0\', '', IFCTEXT('EL-G35211AN/6-SP/L''), $);
转换返回的manifest错误信息:
{ "urn": "XXXXXXXXXX", "derivatives": [ { "hasThumbnail": "false", "name": "XXXXXXXX.ifc", "progress": "complete", "messages": [ { "type": "error", "code": "Navisworks-Internal", "message": "Error code: 2 - bec9343c395241f266d3b7af86dee70e041d7687d3b4f0f0c0952b04ff3c39eb.ifc could not be opened because the contents are corrupt or it is currently unavailable.\n\nIt is recommended to re-open your model to avoid data loss.\n" }, { "type": "error", "message": "Unrecoverable exit code from extractor: -1073741829", "code": "TranslationWorker-InternalFailure" } ], "outputType": "svf2", "status": "failed" } ], "hasThumbnail": "false", "progress": "complete", "type": "manifest", "region": "US", "version": "1.0", "status": "failed" }
原因分析
问题根源是IFC文件中属性值末尾的单引号未遵循正确的转义规则,导致语法解析错误:
IFC语法明确规定,字符串中的单引号必须用两个连续单引号表示一个实际的单引号。但你提供的IFC行数据中,比如
IFCTEXT('EL-G35211AN/6-SP/L''),末尾的两个单引号会被解析器误判为:一个转义后的单引号(即实际输出一个')加上一个多余的、未闭合的单引号,直接破坏了IFC实体的语法结构。Model Derivative服务底层依赖Navisworks解析IFC文件,当解析器遇到这种语法错误时,会认为文件内容损坏,抛出"无法打开文件"的错误。
错误代码
-1073741829对应Windows系统的STATUS_ACCESS_VIOLATION,说明解析器在处理错误语法时触发了内存访问异常,直接导致转换进程崩溃。
内容的提问来源于stack exchange,提问作者Akitoshi.M
相关产品推荐
相关产品推荐

