许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Bentley二次开发:外部EXE程序通过COM方式启动MicroStation(不打开界面)

Bentley二次开发:外部EXE程序通过COM方式启动MicroStation(不打开界面)

阅读数 6
点赞 0
article_banner

Bentley 二次开发:外部 EXE 通过 COM 启动 MicroStation(无界面)

在 Bentley MicroStation CONNECT Edition 中,可以通过 COM Automation​ 方式,由外部 EXE 程序启动 MicroStation 引擎,用于后台处理(如批量转换、批注、检查等),并且不显示用户界面(Headless / Invisible)

以下是实现的关键步骤(以 C# 为例):


1️⃣ 引用 MicroStation COM 库

  • 在 Visual Studio 中创建 Console App (.NET Framework)​ 或 Windows Application。
  • 添加 COM 引用: 在“引用”→“添加引用”→“COM”页签中,找到并勾选: MicroStationDGN Bentley.Interop.MicroStationDGN
  • 确认目标框架为 .NET Framework 4.x(与 MicroStation 版本匹配)。

2️⃣ 使用 COM 启动 MicroStation 实例(不可见)

using Bentley.Interop.MicroStationDGN;
using System;

class Program
{
    static void Main(string[] args)
    {
        Application app = null;
        try
        {
            // 通过 COM 创建 MicroStation 实例
            app = (Application)System.Activator.CreateInstance(
                Type.GetTypeFromProgID("MicroStationDGN.Application"));

            // 关键:设置为不可见(无界面)
            app.Visible = false;

            // 可选:禁止显示启动画面、对话框
            app.SilentMode = true;

            // 打开 DGN 文件(后台处理)
            string dgnPath = @"C:\Test\example.dgn";
            app.OpenDesignFile(dgnPath, false, MicroStationDGN.MsdV7Action.MsdV7ActionOpen);

            // TODO: 在此进行二次开发操作
            // 例如:遍历元素、修改属性、导出数据等

            // 保存并关闭
            app.SaveDesignFile();
            app.CloseDesignFile();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
        finally
        {
            // 退出 MicroStation COM 实例
            if (app != null)
            {
                app.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
            }
        }
    }
}

3️⃣ 关键点说明

  • ProgID:MicroStationDGN.Application是 MicroStation CONNECT Edition 的 COM 入口。
  • Visible = false:让主窗口不显示,实现“无界面”运行。
  • SilentMode = true:抑制启动画面、提示框等 UI。
  • OpenDesignFile:打开 DGN 文件,路径必须是绝对路径。
  • 异常处理:COM 调用易抛异常,务必用 try-catch-finally 包裹。
  • 资源释放:使用 Marshal.ReleaseComObject释放 COM 对象,避免残留进程。

4️⃣ 注意事项

  • 版本匹配:EXE 编译的目标平台(x64/x86)必须与 MicroStation 版本一致(CE 版多为 64 位)。
  • 权限:确保运行 EXE 的用户有权限访问 MicroStation 安装目录和目标 DGN 文件。
  • 并发启动:同一时间只能有一个 COM 控制的 MicroStation 实例对同一个文件进行操作。
  • 日志输出:建议将关键步骤和异常写入日志文件,便于排查后台运行问题。


如果你需要,我可以帮你补充一段针对“批量转换 DGN 到 DWG”或“遍历元素提取属性”的后台处理示例代码,直接集成到上述启动框架中。免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空