AutoCAD二次开发(2020版)--4,使用ARX向导创建编程模板(框架)--

手动创建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"

有任何问题可以留言。

原文地址:https://www.cnblogs.com/F_Shadow/p/11995966.html

时间: 2024-08-05 21:18:15

AutoCAD二次开发(2020版)--4,使用ARX向导创建编程模板(框架)--的相关文章

1,下载和部署开发环境--AutoCAD二次开发(2020版)

教程说明: 本教程为2019年10月开始编撰,使用CAD官方最新版本的软件和库.对旧版本仍有参考价值. 本教程中使用的各种软件版本为官方指定匹配版本. 本教程需要你拥有编程基础,对于普通编程常识不再敷述.当然,你可以留言提问. 环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx-license-downl

AutoCAD二次开发——AutoCAD.NET API开发环境搭建

AutoCAD二次开发--AutoCAD.NET API开发环境搭建 AutoCAD二次开发--AutoCAD.NET API开发环境搭建 AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(COM),1997年VBA,1998年Visual Lisp,2006年.net API(DLL). 趋势和方向:AutoCAD.net API(AutoCAD20

.NET AutoCAD二次开发之路(一、基础篇)

学习AutoCAD二次开发已经有一段时间了,磕磕碰碰,十分的艰辛枯燥.但回想一下还是会有些小激动,嘿嘿!最近这段时间一直都有这么个想法,就是将我学习CAD二次开发的过程用文字的方式记录下来,形成系列,并定期更新.主要内容就是记录自己每天学习过程中所碰见的问题和感悟,并总结今天所学到的内容.目的一是激励自己坚持下去,看着自己一步一步的提高,多有成就感.还有就是和大家积极沟通,希望能够指正我的错误,减少我的弯路.再者就是望能给后面学习的人一点点借鉴经验,好吧其实还有点装B的心里.废话不多说就进入今天

AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)

AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. docs帮助文件 inc引用的头文件 lib引用的库文件 redistrib其他引用的库文件 samples例子 utils其他东西 打开utils 上面几个是头文件和库文件 ObjARXWiz这个文件夹是向导(2012以后的版本就没有了,要去官网单独下载,不和开发包在一起) 打开后如下 直接双击安装

.NET AutoCAD二次开发之路(一、直线篇)

我以前只有一点VB的基础,C语言也只是看过,学这个CAD二次开发,也是借工作之余研究下,我到现在已经从事机械行业5年了,中国的工业设计环境区别太大,各行各业的技术现状也不尽相同,但有一点是可以肯定的,那就是自动化,国外都在工业4.0了,我们还在互联网+,哎太out了,我也赶紧进修下,要不就淘汰了.所以我选择了CAD二次开发,主要还是跟专业接近,希望能越学越精吧,未来就让未来的我去面对! 今天主要总结下直线的创建,要想能在CAD中生成直线或者其他图形,都必须遵循几个步骤,那就是: 1.获取当前图形

AutoCAD二次开发

AutoCAD本身是功能强大.可配置性极高的软件,并且由于AutoCAD良好的软件架构,AutoCAD的二次开发能力也极强,几乎所有可见的软件功能都能在SDK内找到封装好的接口,由于AutoCAD SDK的向后兼容性极好,写出的程序几乎不用修改就可以适用于所有版本的AutoCAD. AutoCAD的第一代开发工具是AutoLISP,是AutoCAD定制的LISP语言,至今仍然是一个活跃的LISP分支,第二代开发工具是基于C语言的ADS,目前来看几乎被淘汰了,也是被AutoDesk公司标记为dep

承接 AutoCAD 二次开发 项目

本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的话可以提供发票. 有需求的可以 [email protected] 联系开发事宜.

AutoCAD二次开发(2020版)--3,执行ARX文件--

上一节中我们在initApp()函数中,将helloWorld()函数注册给了CAD主程序,注册指令的字符串为“Hello”. void initApp() { acedRegCmds->addCommand(_T("HELLOWORLD_COMMANDS"), _T("Hello"),_T("Bonjour"), ACRX_CMD_TRANSPARENT,helloWorld); } 如果你用过CAD的话会知道在CAD中经常用类似命令行的

C# ObjectArx AutoCAD二次开发(转帖)

http://www.cnblogs.com/houlinbo/p/3325898.html 1.开发基本资料准备 用Vs2010进行Autocad 2010开发,首先下载ObjectArx 2010 SDK. http://download.autodesk.com/akdlm/esd/dlm/objectarx/ObjectARX_2010_Win_64_and_32Bit.exe 2.使用Visual Studio .NET来创建一个新的类库工程 (1)建立类库项目           启