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

pythoncad二次开发视频_AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--...相关推荐

  1. python能二次开发cad么_2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)

    本项目使用手动创建,意为不使用SDK模板. 从Visual Studio的"文件"下拉菜单中,选择"新建"->"项目...". 在出现 ...

  2. c#CAD二次开发全套视频目录

    本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...

  3. CAD二次开发技术 好辛苦啊!

    CAD二次开发技术 好辛苦啊! 2011年03月16日 [b]摘[/b][b][/b][b]要[/b][b][/b] 数据结构算法设计和演示(C++)-树和查找是在面向对象思想和技术的指导下,采用面向 ...

  4. 基于C#的中望CAD二次开发学习笔记(1)环境测试

    目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...

  5. Android开发视频教学第一季(1-16集)视频源码下载

    [Android开发视频教学].01_01_Android平台一日 http://android.itmdc.com/forum.php?mod=viewthread&tid=45 [Andr ...

  6. Android开发视频教学第一季(17-34集)视频源码下载

    [Android开发视频教学].01_17_调试程序 http://www.apkbus.com/android-95481-1-1.html [Android开发视频教学]01_18_文件下载  h ...

  7. 开发视频直播软件需要注重哪些功能?

    视频直播给人们的日常生活带来了极大的改变,因此,开发一款视频直播类APP软件,设计的基础是用户的需求,前沿市场信息等.那么,开发视频直播软件需要注重哪些功能呢?下面就跟着摩杜云小杜一起来看看吧! 开发 ...

  8. Unity3D 升级2020版VR开发的一些问题

    Unity3D升级2020版VR开发可能遇到的一些问题 1.Unity3D 2020版VR已经整合到XR中并统一以插件包形式提供 在Unity2020版本以前,打开VR功能是在Player Setti ...

  9. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

最新文章

  1. iOS_“图片浏览选择”功能的编写思路
  2. 基于select模型的TCP服务器
  3. gradle文件不识别_识别Gradle约定
  4. vue在ie9中的兼容问题
  5. 洛谷 P1064 金明的预算方案【有依赖的分组背包】
  6. DateTimePicker控件 1130
  7. VS2017新建HTML项目,VS2017创建项目模板和项模板(方便实用)
  8. The process names are sorted in descending
  9. python有几种_Python常见的几种算法
  10. Js对接口数据归类整理
  11. [转贴]什么计算机语言最有前途
  12. AttributeError: module ‘torch.onnx‘ has no attribute ‘set_training‘
  13. 一元钱一瓶汽水,喝完后两个空瓶能换一瓶汽水,问:你有20元钱,可以喝到几瓶汽水?
  14. python for循环写法_python中多重循环的写法
  15. AI笔记: 数学基础之反函数和6个基本初等函数
  16. PS各个工具的字母快捷键和英文全名
  17. 写给大家看的设计模式 1
  18. 网易的315页面碉堡了,速围观
  19. Adobe XMP SDK编译
  20. Python编程快速入门

热门文章

  1. Struts2从一个action转到另一个action的两种方法
  2. Java中带标签的break,continue
  3. Eclipse与github整合完整版
  4. 惊!MySQL官网巨变,下载被取消
  5. linux日志服务器配置在哪个文件,Linux中日志的基本配置(syslog)
  6. 递归——阶乘加斐波那契数列(简单掌握递归思想的敲门砖)
  7. 476B. Dreamoon and WiFi
  8. java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...
  9. css3 transform matrix 深入理解
  10. mc服务器玩家无限掉线怎么办,服务器频繁掉线 求解