我将OpenRail Designer 2021 升级到了OpenRail Designer Ultimate for China CONNECT Edition x64 (SES) Update 11 (Chinese (Simplified)),发现在我新建一个空白文件,还未添加任何元素时ConsensusConnectionEdit.GetActive().GetGeometryModel() 返回值为null,con.GetAllGeometricModels().Count = 0。
当我在新文件中添加一条直线后,再运行我编写的程序就没有异常了。这样的问题是,我编写的插件需要从空白文件中直接绘制图形,并没有必要先手动绘制一个图形再运行插件。
新版API中增加了一个GetOrCreateGeometricModel方法,请直接将您的ConsensusConnectionEdit.GetActive().GetGeometryModel() 改成ConsensusConnectionEdit.GetActive().GetOrCreateGeometricModel() 试一下。
更换成了GetOrCreateGeometricModel(),还是有问题,空白文件必须手动建一个Geometry Element才能获取到GeometryModel(),否则返回值仍然为null。
哦,我明白您问题出在哪里了。一般使用ORD软件时创建新文件要用ORD中提供的种子,比如:C:\ProgramData\Bentley\OpenRailUltimateChina CE 10.10\Configuration\WorkSpaces\CN_公路\WorkSets\Highway-Metric\dgn\road.dgn,用这样的种子创建的新文件就不会出现这个情况。如果用那些来自MS平台的种子文件创建的DGN文件就会导致这个问题。
我联系了ORD的开发组,得到的反馈是,ORD10中已经解决了该问题,但到ORD11反而又出现了。属于Regression Bug。只能等到下一个版本解决了。目前您只能要么创建新文件时选择正确的种子文件,要么是在代码中先判断一下返回的这个gm是否为null,为null的话用代码创建一个GeometryElement来克服它。非常抱歉!
Answer Verified By: peng li
创建新文件用的是ORD中提供的种子,也是有这个问题的。