在C++代码中有个函数mdlSystem_compressDgnFile()可以压缩当前打开的文件。
我的需求是在后台代码中拿到一个dgnFile类型的对象,如何不在前台打开就调用压缩命令对其进行压缩呢?
霄男 宿 said:如何不在前台打开就调用压缩命令对其进行压缩呢?
您可以参照下文在后台处理一批DGN文件而不让用户看到操作界面。这种工作模式下每个打开的文件还是被作为当前文件看待的。
[MSCE C#]通过COM技术实现MSCE的自动化
在这种COM编程对象模型中,可以通过发送键入命令Compress Design Confirm来实现。
这种方法所有的操作都需要通过Bentley.Interop.MicroStationDGN类来操作吧?因为我还要对文件进行大量的其他操作,我对Bentley.Interop.MicroStationDGN;类不太熟悉,好多功能找不到对应的接口。。。不过同样感谢提供的方法。
如果对Inerop编程对象模型不熟悉的话,你可以用你熟悉的对象模型写一个DLL程序,仅通过Inerop加载你的程序来执行即可。
这个听起来是个好主意啊~是不是就类似通过Inerop来调用KeyIn执行我的dll一样?我的dll会弹出进度条窗口,这不影响吧?
同样的问题还得请教您一下,采用mdlSystem_compressDgnFile()方法压缩文件并没有传递设置参数,但实际上通过软件操时,是可以设置具体压缩某些内容,然后再执行压缩的,可以通过代码来实现吗?我想设置压缩单元头和空文本
霄男 宿 said:是不是就类似通过Inerop来调用KeyIn执行我的dll一样?
是的。通过Interop发送命令MDL LOAD yourDLL;YourKeyin
霄男 宿 said:我的dll会弹出进度条窗口,这不影响吧?
应该不影响,这种调用方式仅仅是让MS在后台运行,MS还是被正常启动了。
霄男 宿 said:可以通过代码来实现吗?我想设置压缩单元头和空文本
没有找到代码设置compression Options的功能,不过MS提供有一个配置变量MS_COMPRESS_OPTIONS,它可以用来设置默认的压缩选项。其实,将所有选项都勾选反而是我们最常用的方法。似乎没有太大必要详细区分压缩哪个,不压缩哪个。