AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--
手动创建ObjectARX应用程序非常麻烦,在此步骤中,将介绍ObjectARX向导。
在这里,我们将使用ObjectARX向导创建我们的ObjectARX应用程序。
本节的程序的需求是,接收CAD用户的输入。
首先,打开VS2017,新建项目
在左边的树形目录里依次选择 Visual C++ --> Autodesk
然后在窗口中间选择 ARX/DBX Project For AutoCAD 2020
点击确定

这里可能遇到一些状况导致点击确定后无法进入下一步,
有可能是本教程开头介绍的部件没有完全安装,或者安装过程中路径选择错误,或者安装向导的时候没有使用管理员权限导致的。
如果前面的准备工作一切就绪,那么确定后会弹出这样的窗口来

窗口第一行可输入的内容是注册开发人员符号(RDS),
如果你有的话,就输入你的符号,
如果你不知道这是什么的话,请忽略,这个不影响我们开发程序,只是个标识符。
其它选项我们暂时不需要,可以直接点击完成(Finish)。
当你看到这个场景的时候,恭喜你,编程模板(框架)已经准备好了,我们要写自己的业务和逻辑进去了。

因为ARX开发的方式是,将自己的函数注册给库,指定调用命令就完成了。
CAD加载我们的程序后,用你事先指定的命令,就可以调用对应的函数了。
重点来了,在创建我们自己的函数之前,我们先学习模板里预留给我们的函数。
在acrxEntryPoint.cpp 77行左右,你应该能看到这个函数
static void ADSKMyGroupMyCommand () {
// Put your command code here
}
这就是一个可以被注册为CAD指令的函数。
函数名其实是两部分组成的,前半段为ADSKMyGroup,后半段为MyCommand。
前半段的意义类似于名字空间,默认是你的RDS符号+MyGroup,实际上可以是任何合法的字符
后半段才是真正的函数名,是你想给函数取的名字。
比如你可以取一个函数名为 static void CloudTestInput(){ }
请注意,修辞是static,返回值是void,参数为空,都是固定的,不能变。
虽然现在函数内部是空的,没有关系,最后一步再来写函数内容,先看文件最下面,找到这一句
ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject1App, ADSKMyGroup, MyCommand, MyCommandLocal, ACRX_CMD_MODAL, NULL)
这是将函数注册为CAD指令的方法。
一共有6个参数。
参数1:程序标识符,使用默认值
参数2:注册函数的前半段名字,也就是刚才说的名字空间
参数3:注册函数的后半段名字,真正意义的函数名
参数3:CAD指令。这是你创建的CAD指令,当在CAD中输入这条指令时就会调用对应的函数。
参数4:模式,暂时使用默认值。
参数5:默认NULL
生成程序,会得到一个后缀为ARX的文件,这就是我们的CAD插件。不过现在这个插件没有任何功能。
我们现在来写函数内容,让这个插件拥有接收用户输入的功能。
注意,ARX要求生成过程中0警告0错误,哪怕有一个警告也会阻止生成成功。
所以,拿出强迫症精神,做ARX开发,一个警告都不能有。
我们给刚才的函数内部添加如下内容:
static void ADSKMyGroupMyCommand() {
wchar_t temp[32];
wmemset(temp, 0, 32);
acutPrintf(_T("这是我的第一个ARX插件\n")); //输出
acedGetString(0,_T("请问你的名字是:"),temp); //输入
acutPrintf(_T("你好,%s\n"),temp); //输出
}
简介一下acedGetString函数,这是接受输入的函数,有很多重载方式,当前使用的方式有三个参数。
参数1:若为0,空格和回车都会使字符串输入结束,若非0,空格不会使字符串输入结束,需要回车才会结束。
参数2:输出字符串的部分
参数3,接收字符串的缓存
生成新的ARX吧,然后依照第三节的内容加载ARX并且执行这条指令。
指令是你自己创建的,本例中为 MyCommandLocal。
执行效果如下:

你可以依照上面的格式,自己在acrxEntryPoint.cpp文件的类中添加新的函数
然后添加一条新的注册指令。
就像这样
static void BIMCloudHello() {
wchar_t temp[32];
wmemset(temp, 0, 32);
acutPrintf(_T("这是我的第一个ARX插件\n")); //输出
acedGetString(0,_T("请问你的名字是:"),temp); //输入
acutPrintf(_T("你好,%s\n"),temp); //输出
}
ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject1App, BIMCloud, Hello, myhello, ACRX_CMD_MODAL, NULL)
然后在CAD中执行myhello指令,就可以调用这个函数了。记得,新函数要添加在acrxEntryPoint文件的类当中,作为一个类成员函数。
你应该已经注意到,整个过程中没有添加任何头文件,
因为创建模板的时候,ARX向导已经帮我们添加好了,所以非常方便,直接就可以写业务逻辑了。
但是你用到Unicode字符的话,就需要自己添加
#include "tchar.h"
AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--的更多相关文章
- AutoCAD二次开发(2020版)--4,使用ARX向导创建编程模板(框架)--
手动创建ObjectARX应用程序非常麻烦,在此步骤中,将介绍ObjectARX向导. 在这里,我们将使用ObjectARX向导创建我们的ObjectARX应用程序. 本节的程序的需求是,接收CAD用 ...
- 2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)
本项目使用手动创建,意为不使用SDK模板. 从Visual Studio的“文件”下拉菜单中,选择“新建”->“项目...”. 在出现的“新建项目”对话框的“项目类型:”树中,单击“ Visua ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(二)
[MyEclipse最新版下载] 二.创建一个Session EJB – Part 1 MyEclipse中的EJB 2.x开发使用了EJB向导和集成XDoclet支持的组合. 每个EJB由三个基本部 ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(三)
MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 三.配置XDoclet支持的项目 默认情况下,MyEclipse EJB项目未配置使用XDoclet功能. ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(一)
[MyEclipse最新版下载] 一.创建一个EJB项目 1. 选择File>New Project,选择EJB Project,然后单击Next. 2. 在Project name字段中输入f ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(五)
MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 六.部署到JBoss服务器 1. 右键单击Servers视图,然后选择New>Server,选择您安 ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 四.运行XDoclet代码生成 通常每次更改XDoclet EJB配置.应用程序服务器设置或修改任何EJB ...
- AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)
AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...
- AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像
AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下
- 1、AutoCAD ObjectARX开发版本对照表
ObjectARX开发版本对照表 序号 CAD版本 版本号 二进制兼容 .net框架 ObjectARX开发环境 VC版本号 MAC OS平台 WINDOWS平台 VC版本 _MSC_VER 1 R1 ...
随机推荐
- java file I/O流
一.File的简介:(java.io包) 生活中的文件: (1)文件的作用:持久化(瞬时状态的对立面状态) (1)文件的定义:一堆数据的集合 (2)文件存储的位置:磁盘,硬盘,软盘,U盘等等 计算机中 ...
- 纯分享:将MySql的建表DDL转为PostgreSql的DDL
背景 现在信创是搞得如火如荼,在这个浪潮下,数据库也是从之前熟悉的Mysql换到了某国产数据库. 该数据库我倒是想吐槽吐槽,它是基于Postgre 9.x的基础上改的,至于改了啥,我也没去详细了解,当 ...
- 修复linux系统更新后Conky无法启动的问题
kali系统更新后的版本为 ~$uname -a Linux 4rk 5.9.0-kali5-amd64 #1 SMP Debian 5.9.15-1kali1 (2020-12-18) x86_64 ...
- Azure Data Factory(八)数据集验证之服务主体(Service Principal)
一,引言 如下图所示,今天我们接着上一篇内容,继续讲解 Azure Data Factory 中的数据集连接服务的认证方式:Service Principal 关于 Service Principal ...
- 研发效能|DevOps 是运维还是开发?
DevOps 到底是 Dev还是Ops?答:属于研发工程师序列,偏向研发域,而不是运维域. DevOps是研发工程师 DevOps 主要服务的对象就是所有产研团队的人员,与产研团队打交道比较多,相互配 ...
- DevOps平台建设的关键点是什么?
关键还是在人 找到一个「吃过猪肉,见过猪跑的」,你问他什么是猪,他自然比「没吃过猪肉,没见过猪跑的人」更了解猪.海豚海豚,你知道猪是什么样么?它都没上过陆地,这辈子都没见过猪,它哪知道猪是什么样. 有 ...
- ProcessingJS
ProcessingJS 图形 rect(x, y, w, h)(在新窗口中打开) ellipse(x, y, w, h) triangle(x1, y1, x2, y2, x3, y3) line( ...
- Frog 3 题解
Frog 3 题目大意 题意都这么明确了还要这个干什么. 存在 \(n\) 个点,每个点有一个属性 \(h_i\),\(h_i\) 单增,从点 \(i\) 移动到点 \(j(j>i)\) 的代价 ...
- VS Code C# 开发工具包正式发布
前言 微软于本月正式发布Visual Studio Code C#开发工具包,此前该开发套件已经以预览版的形式在6月份问世.经过4个月的测试和调整,微软修复了350多个问题,其中大部分是用户反馈导致的 ...
- FWT & FMT(位运算卷积)学习笔记
它们两个的全名叫 快速沃尔什变换(FWT) 和 快速莫比乌斯变换(FMT),用来在 \(O(n\log n)\) 时间复杂度内求位运算卷积. 因为 FMT 能解决的问题是 FWT 的子集,所以这里不讲 ...