You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DOORS 9.5启动时执行带GUI功能的DXL脚本遇阻求助

DOORS 9.5启动时执行带GUI的DXL脚本问题解决方案

问题1:命令行-D参数执行脚本报重复声明错误

原因

命令行启动DOORS时,程序会优先加载内置插件与脚本文件,其中已包含parastyl.inc并声明了AParaStyle_。而交互窗口运行脚本时,DOORS初始化加载已完成,不会重复引入该文件,因此无报错。

解决方案

在test.dxl中添加条件编译判断,避免重复包含头文件:

// 检查AParaStyle_是否已声明,未声明才包含头文件
#ifdef AParaStyle_
#else
#include <parastyl.inc>
#endif

// 将GUI逻辑封装为函数
void runGUIScript() {
    // 编写GUI相关代码,例如创建对话框
    Dialog d = createDialog("启动GUI")
    // ... 其他GUI操作逻辑
}

// 命令行调用时直接执行函数
runGUIScript()

修改命令行参数为:

doors.exe -D "runGUIScript()"

问题2:C#无法找到DOORSCOMLib

原因

DOORS的COM库不会自动关联到C#项目,需手动添加对应类型库,且默认命名空间并非DOORSCOMLib,而是IBM.Rational.Doors。

解决方案

  1. 添加COM引用

    • 打开Visual Studio,右键C#项目 → 「添加」→「引用」
    • 切换到「COM」标签页,找到并勾选「IBM Rational DOORS 9.5 Object Library」(版本与你的DOORS对应)
    • 若找不到该选项,点击「浏览」,导航至DOORS安装目录的bin文件夹(默认路径:C:\Program Files\IBM\Rational\DOORS\9.5\bin),选择doors.tlb文件添加引用
  2. 正确C#代码示例

using IBM.Rational.Doors;

class DOORSStartupRunner
{
    static void Main()
    {
        // 初始化DOORS实例
        DOORS doorsApp = new DOORS();
        // 设置DOORS界面可见
        doorsApp.Visible = true;
        
        // 执行带GUI的DXL脚本
        string dxlContent = @"
            #ifdef AParaStyle_
            #else
            #include <parastyl.inc>
            #endif
            
            void showStartupGUI() {
                Dialog mainDialog = createDialog(""启动界面"")
                button(mainDialog, ""确认"", cancelDialog)
                show(mainDialog)
            }
            
            showStartupGUI()
        ";
        doorsApp.RunDxlScript(dxlContent);
    }
}
  1. 额外注意事项
    • 需以管理员权限运行Visual Studio,避免权限不足导致COM组件无法注册
    • 若COM组件未注册,打开管理员命令提示符,导航至DOORS安装目录bin文件夹,执行:regsvr32 doors.dll完成注册

内容的提问来源于stack exchange,提问作者cdallagnola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:10:33