反向工程的问题

前段时间用过AX4.0的反向工程工具,没啥问题,今天却怎么也玩不转,倒是生成了一个Visio文件,但就是没有内容。跟踪了一下代码发现,AX会把反射得到的数据存到一个临时文件里,然后通过Visio COM对象的一个名为UML Background add-on的add-on将该临时文件导入到Visio文件中。导入的动作发生在类
SysVisionAddin的run->loadImportFile方法中,通过
addOn.run( strfmt( #addOnCommand, documentIndex, WinAPI::getShortPathName(importFile.parmImportFileName()) ) );
这行代码将其导入到当前刚创建好的Visio文件中,这跟在Visio中通过宏命令导入文件是一样的,但这个路径不知道咋整的,不支持中文,只要路径中包含中文上面的这个命令就没法执行了。
对这个不熟,不知道怎么改一下就可以让它支持中文路径,暂时的解决办法是:生成Visio文件不要存放到含有中文的路径下,比如含有 桌面 等的路径。

另外如果是Visio2007也不能导出成功,原因出在loadImportFile这个方法调用的getUmlAddOn方法上,这个方法会遍历当前Visio所有的Add-on,找到名称为"UML Background add-ond"的返回,获取Add-on的名称用的是addOn.name()这个方法,这在Visio2003下没有问题,但在Viso2007下,这个方法返回的是中文,在与"UML Background add-ond"比较时就出问题找不到对应的Add-on了。
AX5.0已经修复了这个bug,通过addOn.nameU()获取addon的名称,得到的是英文就没有比较的问题了。

综上所述:
1.Visio的导出路径不能包含中文;
2.如果使用的是Visio2007,将类SysVisioAddin的方法getUmlAddon的addOn.Name()改为addOn.NameU().
原文地址:https://www.cnblogs.com/Farseer1215/p/996327.html