qq_45740402 2021-05-31 00:43 采纳率: 0%
浏览 14

能使用Q t实现对objectarx的多版本开发嘛?

能使用Q t实现对objectarx的多版本开发嘛?,如果可以具体该怎么实现?

  • 写回答

1条回答 默认 最新

  • mahuifa 领域专家: C/C++技术领域 2023-04-09 20:09
    关注

    Qt主要是用于开发跨平台的图形界面应用程序,而ObjectARX是一个用于AutoCAD开发的库,二者并没有直接的关系。不过,如果需要在Qt应用程序中调用ObjectARX的功能,则可以通过在Qt应用程序中嵌入AutoCAD ActiveX控件的方式来实现。
    具体来说,可以在Qt应用程序中创建一个QAxWidget控件,然后将其作为ActiveX控件嵌入到Qt界面中,再调用ObjectARX的API。需要注意的是,由于ObjectARX是与AutoCAD版本相关的,因此需要根据不同的AutoCAD版本来选择不同的ObjectARX库文件。
    以下是一个简单的示例代码,可以在Qt应用程序中调用AutoCAD的COM接口:

    #include <QApplication>
    #include <QAxWidget>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        // 创建QAxWidget控件
        QAxWidget* axWidget = new QAxWidget();
        // 设置ActiveX控件的CLSID(AutoCAD的CLSID为"{E183B7FC-8C13-11D3-BC86-0060B0EC020B}")
        axWidget->setControl("{E183B7FC-8C13-11D3-BC86-0060B0EC020B}");
        // 调用AutoCAD的COM接口
        QVariant result;
        axWidget->dynamicCall("SetVariable(QString, QVariant)", "CMDECHO", true);
        axWidget->dynamicCall("Command(QString)", "LINE");
        axWidget->dynamicCall("Command(QString)", "0,0");
        axWidget->dynamicCall("Command(QString)", "100,100");
        axWidget->dynamicCall("Command(QString)", "QUIT");
        return a.exec();
    }
    

    需要注意的是,Qt应用程序需要使用32位编译器,并且需要将AutoCAD的安全设置中的“加载项”选项打开,才能正常调用AutoCAD的COM接口。

    评论

报告相同问题?