请问老师:是否可以通过代码控制模型导出dwg的过程,是否有对应的接口。比如我希望某个model中的元素导出为一个单独的dwg文件,作为其他model导出的dwg文件的布局参考。或者代码控制哪个model在dwg文件的模型空间,哪个model在dwg文件的布局空间这种。
这个您可能得通过一个临时的外部文件来完成了,就是另外创建一个dgn文件,然后在程序中打开这个dgn文件,如下所示:
DgnFileStatus status; DgnDocument dgnDoc = DgnDocument.CreateForNewFile(out status, "D:\\Test.dgn", "D:\\", -100, "", DgnDocument.OverwriteMode.Always, DgnDocument.CreateOptions.Default); dgnDoc.OnNewFileCreated(); SeedData seedData = new SeedData(Session.Instance.GetActiveDgnFile(), Session.Instance.GetActiveDgnModel().GetModelId(), SeedCopyFlags.AllData, false); DgnFileOwner dgnFileOwner = DgnFile.CreateNew(out status, dgnDoc, DgnFileOpenMode.ReadWrite, seedData, DgnFileFormatType.V8, true); DgnFile dgnFile = dgnFileOwner.DgnFile;
然后将需要导出的元素拷贝到这个dgn文件中,最后调用DgnFile的DoSaveAs保存为Dwg即可。跨Model或者跨Dgn文件拷贝元素需要用ElementCopyContext。以前的帖子讨论过这个接口,您可以搜一下以前的帖子查一下其用法。
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
谢谢老师。是否有通过代码设置导出的dwg的这些参数,比如dwg版本这种
如果您用我上边说的方法去实现导出的话,这些设置都可以自己去控制的,因为元素都是自己程序拷贝的,自己在代码里边可以任意的对拷贝后的元素进行处理。如果您通过keyin命令的方式调用系统现有的导出dwg功能,则可以录制一个宏,查看一下这些选项在修改了具体的值时发送了什么样的keyin命令。不过后者的话,就不能像您说的只导出某个Model。还有一种方法就是用keyin命令的方式导出dwg后,再后台打开这个dwg文件,将多余的model删除掉。