通过代码导入 AAA.01.00.ecschema.xml,并构造一个EC实例数据赋予到一个Element中,在Element中可以读取到对应的EcInstance,但是在属性面板中却看不到此元素的对应EC属性。经过测试,需要将此 AAA.01.00.ecschema.xml 放到 \OpenRoadsDesigner\ECSchemas\Dgn\ 文件夹下,然后再打开此 DgnFile,就可以在属性面板中看到 对应 Element 下的 EC属性了。
但是有些情况下好像又没有这样的限制。
请问一下,将 AAA.01.00.ecschema.xml 放到 \OpenRoadsDesigner\ECSchemas\Dgn\ 中是不是在属性面板中显示的常规要求,如何实现 EC属性在面板中的自由显示而不用考虑 AAA.01.00.ecschema.xml 的位置。
您可以将该xml文件放到ord目录下,然后通过您的代码去加载该xml文件。
其实,还是建议用ITEM TYPES 技术去做元素的自定义属性。
也就是说,xml文件加载后挂接到某Element上,其Schema定义并没有保存到DgnFile中,而是在外部的xml文件中?还是说只是控制其在属性面板中的显示问题?
如果必须要将xml文件放到指定的位置,能否放到自定义的位置,然后通过配置变量去指定到对应位置,来实现属性面板中的正常显示加载。
您需要将schema加载到dgn文件里,这样才能显示。其实,您可以用代码加载schema文件,具体放哪里,你可以自己定。
下面代码是通过xml文件去加载schmea文件,其中schemaFile变量就是schema文件的完整路径,您可以测试下。:
SchemaReadStatus status; status = DgnECManager::GetManager().ReadSchemaFromXmlFile(s_schema, schemaFile.c_str(), dgnfile); if (!status) SchemaImportStatus importStatus = DgnECManager::GetManager().ImportSchema(*s_schema, *dgnfile, false); DgnECManager::GetManager().UpdateSchema(*s_schema, *dgnfile, false);