首页 > 其他分享 >Qt ObjectARX 2022

Qt ObjectARX 2022

时间:2023-10-17 11:46:17浏览次数:39  
标签:Qt lib arx x64 ObjectARX 2022 include

QT中的ARX配置

LoadQtDlls.pro

 1 TARGET = QTARXLoadQtDlls
 2 #the sdk include path
 3 INCLUDEPATH += "D:\ObjectARX 2022\inc"
 4 INCLUDEPATH += "D:\ObjectARX 2022\inc-x64"
 5  
 6 #rxapi.lib; acdb21.lib; acge21.lib; acad.lib; ac1st21.lib; accore.lib;
 7 LIBS+= -L"D:\ObjectARX 2022\lib-x64" -lrxapi
 8 LIBS+= -L"D:\ObjectARX 2022\lib-x64" -lacdb24
 9 LIBS+= -L"D:\ObjectARX 2022\lib-x64" -lacge24
10 LIBS+= -L"D:\ObjectARX 2022\lib-x64" -lacad
11 LIBS+= -L"D:\ObjectARX 2022\lib-x64" -lac1st24
12 LIBS+= -L"D:\ObjectARX 2022\lib-x64" -laccore
13  
14 #DEF_FILE
15 DEF_FILE += $$PWD/AcRxDefault.def
16  
17 #use md dll
18 QMAKE_CXXFLAGS += /MD
19  
20 #change .dll to .arx
21 TARGET_EXT = .arx
22  
23 #remove _DEBUG
24 DEFINES -= _DEBUG 
25 DEFINES += _OBJECT_ARX_VERSION_X64_=2022
26  
27 QT       += core
28 QT       += gui
29 QT       += widgets
30 QT       += qml
31  
32 #Qt project template
33 TEMPLATE = lib
34  
35 SOURCES += this_main.cpp \
36     form.cpp
37  
38 RESOURCES += \
39     images.qrc
40  
41 DESTDIR = $$PWD/../../release/Autocad2022
42  
43 FORMS += \
44     form.ui
45  
46 HEADERS += \
47     form.h

ARX入口书写

this_main.cpp

 1 #pragma warning( push)
 2 #pragma warning (disable: 4189 4100 )
 3 #include <Windows.h>
 4 #include <arxHeaders.h>
 5 #pragma warning( pop)
 6  
 7 #include <string_view>
 8  
 9 using namespace std::string_literals;
10  
11 #include <QtWidgets>
12 #include <QtQml>
13 #include<QMessageBox>
14  
15 inline void HellowWorld() {
16     acutPrintf(LR"(Hellow Word!
17 )");
18 }
19 inline void HellowWorldARX() {
20 //    QJSEngine varE;
21 //    varE.evaluate( QString("1+1") );
22     {
23         QMessageBox varBox ;
24         varBox.setText(("Hellow World!"));
25         varBox.exec() ;
26     }
27     auto varDataTime = QDateTime::currentDateTime().toString().toStdWString();
28     varDataTime = LR"(Hellow World!)" + varDataTime ;
29     acutPrintf(varDataTime.c_str());
30 }
31  
32 namespace {
33     namespace _cpp_private {
34 const std::string qtApplicationPath ="123";/*!!!*/
35 //#if _OBJECT_ARX_VERSION_X64_ == 2018
36 //            u8R"(D:\Program Files\AutoCAD 2018\acad.exe)"s;
37 //#else
38 //            u8R"(D:\Program Files\AutoCAD 2022\AutoCAD 2022\acad.exe)";
39 //#endif
40         inline int & getArgc() {
41             static int ans;
42             ans = 1;
43             return ans;
44         }
45         inline char** getArgv() {
46             static char acadpath[] =u8R"(D:\Program Files\AutoCAD 2022\AutoCAD 2022\acad.exe)";
47             static char *argv[] = { nullptr };
48             std::copy(qtApplicationPath.begin(), qtApplicationPath.end(),
49                 static_cast<char*>(acadpath));
50             argv[0] = static_cast<char *>(acadpath);
51             return argv;
52         }
53     }
54 }/*namespace*/
55  
56 extern "C" AcRx::AppRetCode
57 acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) {
58     switch (msg) {
59     case AcRx::kInitAppMsg: {
60         acrxDynamicLinker->unlockApplication(pkt);
61         acrxRegisterAppMDIAware(pkt);
62         /*****************************************/
63         {
64             if (qApp == nullptr) {
65                 /*create the qt applicaton and never destory it*/
66                 auto varQtApplication =
67                     new QApplication(_cpp_private::getArgc(), _cpp_private::getArgv());
68                 (void)varQtApplication;
69             }
70             {
71                 /*force to load images plugins*/
72                 QImage varImage{ QString(":/png/this.png") };
73                 varImage.width();
74                 varImage.height();
75             }
76  
77         }
78         /*****************************************/
79         acedRegCmds->addCommand(
80             L"SSTD_GLOBAL_CMD_GROUP",
81             L"HellowWorld",
82             L"HellowWorld",
83             ACRX_CMD_MODAL,
84             &HellowWorldARX);
85     }break;
86     case AcRx::kUnloadAppMsg: {}break;
87     default:break;
88     }
89     return AcRx::kRetOK;
90 }
91  
92 /********************************/

代码结构

结果展示

 this.png

生成的arx

细节注意

arx同级目录的dll

arx同级目录的dll是qt编译出的,不然无法加载

使用的命令D:\Qt\5.15.2\msvc2019_64>windeployqt.exe C:\Users\yhx\Downloads\ObjectArxAutocad2018Vs2017Qt59-master\ObjectArxAutocad2018Vs2017Qt59-master\release\Autocad2022\QTARXLoadQtDlls.arx

CAD加载arx
使用命令arx

QT项目配置

标签:Qt,lib,arx,x64,ObjectARX,2022,include
From: https://www.cnblogs.com/ybqjymy/p/17769324.html

相关文章

  • Qt OpenGL textures详解
    1.初始化opengl资源 Q_INIT_RESOURCE:textures(资源名称)QSurfaceFormat:定义3d面显示方式如果在vs+qtvstools中无法正常显示3d图形,则需加入以下代码:format.setStenciBufferSize(8);format.setVersion(1,1);版本号根据用户安装的Qt版本来更改2.继承QOpenGLWidget和QOpen......
  • 使用visual studio 2022统计项目代码总行数
    第一步打开项目解决方案,第二步使用快捷键打开查找对话框1)输入:b*[^:b#/]+.*$2)使用正则表达式3)查找范围:整个解决方案4)查找全部......
  • 理解MQTT协议(v3.1.1)
    1.概述MQTT协议概述2.数据包详解ControlPackets即14种MQTT类型的消息的二进制定义,本人按对协议的个人理解分别详述如下:CONNECT连接请求CONNACK连接请求应答PUBLISH发布消息PUBACK发布应答PUBREC发布收到QoS2消息收到PUBREL发布释放QoS2消息收到PUBCOMP......
  • MQTT控制报文格式 -- UNSUBACK – 取消主题订阅应答
    UNSUBACK数据包由服务器发送到客户端以确认收到UNSUBSCRIBE数据包。该数据包不包含Payload,所以剩余长度为2,即2字节的可变包头长度。1.固定包头FixedheaderBit76543210byte1MQTTControlPackettype(11)Reserved 1......
  • MQTT控制报文格式 -- PINGREQ – ping请求
    PINGREQ数据包从客户端发送到服务器。它可用于:在没有任何其他控制数据包从客户端发送到服务器的情况下,向服务器指示客户端处于活动状态。请求服务器响应以确认其处于活动状态。测试网络以指示网络连接处于活动状态。该数据包不需要可变包头,没有Payload部分其固定包头格式......
  • MQTT控制报文格式 -- UNSUBSCRIBE– 客户端取消订阅请求
    客户端向服务器发送取消订阅数据包,以取消订阅主题。1.固定包头FixedheaderBit76543210byte1MQTTControlPackettype(10)Reserved 10100010byte2RemainingLength2.可变包头Variab......
  • MQTT控制报文格式 -- SUBACK – 订阅应答
    SUBACK数据包由服务器发送到客户端以确认SUBSCRIBE数据包的接收和处理。SUBACK数据包包含返回代码列表,指定在SUBSCRIBE请求的每个订阅中授予的最大QoS级别1.固定包头Fixedheader固定包头的剩余长度=可变包头(2字节)+Payload长度Bit765432......
  • CLion 中 使用MSVC工具链构建QT项目时出现 ninja: build stopped: subcommand failed.
    两个方法:把构建方式改为Release;或者在CMakeList.txt中把一下行给注释了。 解释一下:这段代码的意思是:如果是MSVC工具链,且处在Debug模式下,把需要的库名加个后缀“d”。......
  • qt读取摄像头
    Qt中实时调取摄像头(利用OpenCV)_opencv获取网络摄像头qt_Loading_create的博客-CSDN博客C++版本#include<opencv2/opencv.hpp>#include"mainwindow.h"usingnamespacestd;usingnamespacecv;#undefmainintmain(){Matimage;VideoCapturecap(0);//c......
  • [刷题笔记] CSP-J 2022 T4 上升点列
    Description在一个二维平面内,给定\(n\)个整数点\((x_i,y_i)\),此外你还可以自由添加\(k\)个整数点。你在自由添加\(k\)个点后,还需要从\(n+k\)个点中选出若干个整数点并组成一个序列,使得序列中任意相邻两点间的欧几里得距离恰好为\(1\)而且横坐标、纵坐标值均单调不......