2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)
- 本项目使用手动创建,意为不使用SDK模板。
- 从Visual Studio的“文件”下拉菜单中,选择“新建”->“项目...”。
- 在出现的“新建项目”对话框的“项目类型:”树中,单击“ Visual C ++”节点。
- 在模板列表中选择“ Windows桌面向导”。
- 在项目名称编辑框中输入所需的项目名称,例如“ Step01”,然后确定
- 确定后弹出对话框,从应用程序类型下拉选项中选择动态链接库。
项目创建成功之后,开始配置项目属性。右键点击解决方案,选择属性。依次配置下面内容:
“ C / C ++”->“常规”:
在“附加包含目录”中,添加ObjectARX SDK的头文件路径。
将“警告等级”设置为“ 1级”。
调试信息格式选择 程序数据库(/Zi)
“ C / C ++”->“代码生成”:
在“运行库”中,选择“多线程DLL(/MD)”。
“ C / C ++”->“预处理器”:
删除宏_DEBUG。
“ 配置属性”->“常规”:
平台工具集选择Visual Studio 2017 (v141)
目标文件扩展名修改为 .arx
配置类型 改为 动态库.dll
“链接器”->“输入”:
“附加依赖项”中,添加以下库:
rxapi.lib
acdb23.lib
acge23.lib
acad.lib
ac1st23.lib
accore.lib
“模块定义文件” 添加 ArxProject.def
“链接器”->“常规”:
“输出文件” 修改为 $(OutDir)AdskStep01_2020.arx
“附加库目录” 中添加SDK的库文件夹路径(存放Lib文件的文件夹)
配置完毕,现在我们添加一个 .cpp文件到项目中。名字任意。注意,以后所有的SDK都代指ObjectARX 2020版。
#include "stdafx.h"
#include "tchar.h"
#include <aced.h> //这是SDK里的头文件
#include <rxregsvc.h>//这是SDK里的头文件 //这是编程框架需要的函数,加载程序时调用,类似构造函数。里面调用了CAD API,向CAD注册了一个新指令
void initApp()
{
acedRegCmds->addCommand(_T("HELLOWORLD_COMMANDS"), _T("Hello"),_T("Bonjour"), ACRX_CMD_TRANSPARENT,helloWorld);
} //这是编程框架需要的函数,卸载程序时调用,类似析构函数
void unloadApp()
{
acedRegCmds->removeGroup(_T("HELLOWORLD_COMMANDS"));
} //这是我们自己的函数,acutPrintf是SDK里的输出函数,类似C语言的printf。
void helloWorld()
{
acutPrintf(_T("\nHello World!"));
} //这是CAD调用插件的入口函数,类似于程序的main函数。
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg)
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt);
acrxRegisterAppMDIAware(pkt);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
default:
break;
}
return AcRx::kRetOK;
}
最后,添加def文件
快捷键Ctrl + Shift + A
- 在“添加新项目”对话框中,选择项目“ Def File(.def)”。
- 在“名称:”编辑框中输入“ ArxProject”。然后打开,输入以下内容
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
现在生成项目,应该是0警告,0错误,得到一个arx文件。
ARX文件的机制类似于DLL文件,加载到CAD程序中,然后通过CAD的命令来调用,所以没有main函数。
整个程序的中心思想是,设计自己的函数,然后把这个函数通过回调函数注册给CAD程序,打开CAD去调用自己的函数。
下一节我们来执行ARX文件。
2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)的更多相关文章
- 简单创建一个SpringCloud2021.0.3项目(二)
目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上一篇教程 3. 创建公共模块Common 4. 网关Gateway 1. 创建Security 2. Security登陆配置 3 ...
- 1,下载和部署开发环境--AutoCAD二次开发
环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(二)
[MyEclipse最新版下载] 二.创建一个Session EJB – Part 1 MyEclipse中的EJB 2.x开发使用了EJB向导和集成XDoclet支持的组合. 每个EJB由三个基本部 ...
- iOS开发项目之二 [ App appicon与启动图]
*appicon尺寸 *不是所有的appicon都是需要配置 *尽量不要透明--(透明的话,会在桌面显示成背景黑色) 1 如果没有配置5s的启动图,回去往下找,找到4s之后,会把界面以4s启动图的大小 ...
- 手动创建Maven项目并建立两个项目之间的依赖关系
用命令行快速建立maven项目 -> mvn:archetype:generate -> 直接回车或者自己输入你想生成的 -> groupId ->artifactId -&g ...
- 简单创建一个SpringCloud2021.0.3项目(一)
目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 新建父模块和注册中心 1. 新建父模块 2. 新建注册中心Eureka 3. 新建配置中心Config 4. 新建两个业务服务 1. ...
- 简单创建一个SpringCloud2021.0.3项目(四)
目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上三篇教程 3. 日志处理 1. 创建日志公共模块 2. Eureka引入日志模块 4. 到此的功能代码 5. 注册中心换成naco ...
- 简单创建一个SpringCloud2021.0.3项目(三)
目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上俩篇教程 3. Gateway集成sentinel,网关层做熔断降级 1. 超时熔断降级 2. 异常熔断 3. 集成sentine ...
- myeclipse中使用gradle开发项目
gradle可以直接使用maven的代码库,并且支持编程,可以说是maven的加强版.今天我们学习下,如何在MyEclipse下使用gradle开发项目.我们的开发环境:myeclipse 2015, ...
随机推荐
- 10 (OC)* Coretext
CoreText实现 看上图,我们可以知道,一个View包括CTFrame,CTFrame中间包括许多行CTLine,而一个CTLine中包括许多CTRun 我们主要说说CTLine和CTRun ...
- 神奇的 SQL 之谓词 → 难理解的 EXISTS
前言 开心一刻 我要飞的更高,飞的更高,啊! 谓词 SQL 中的谓词指的是:返回值是逻辑值的函数.我们知道函数的返回值有可能是数字.字符串或者日期等等,但谓词的返回值全部是逻辑值(TRUE/FALSE ...
- 转:怎么用Sql语句获取一个数据库中的所有表的名字
用sql获取数据库中所有的表名的方法:1.oracle下:select table_name from all_tables;2.MySQL下:select table_name from infor ...
- windows下虚拟环境virtualenv的简单操作
使用豆瓣源安装(推荐) [推荐] python3.X安装和pip安装方法 pip install -i https://pypi.douban.com/simple XXX 1.安装virtualen ...
- C# 事件 Event
一.事件是什么 微软的定义:和委托类似,事件是后期绑定机制. 实际上,事件是建立在对委托的语言支持之上的.事件是对象用于(向系统中的所有相关组件)广播已发生事情的一种方式. 任何其他组件都可以订阅事件 ...
- Spring 梳理 - filter、interceptor、aop实现与区别 -第一篇
前言 项目中我们经常需要对RESTful api进行拦截,主流实现方法有filter.interceptor.aop,先说一下他们各自的实现. Filter AnimalFilter实现javax.s ...
- Python基础(十三)
今日主要内容 闭包 装饰器初识 标准装饰器 一.闭包 (一)什么是闭包 闭包:内层函数调用外层函数的变量就是闭包(不能是全局变量) def func1(): a = 10 def func2(): p ...
- Linux 文件复制命令cp
文件复制命令cp 命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [option] source1 source2 source3 ... ...
- (三)分布式数据库tidb-隔离级别详解
tidb隔离级别详解: 1.TiDB 支持的隔离级别是 Snapshot Isolation(SI),它和 Repeatable Read(RR) 隔离级别基本等价,详细情况如下: ● TiDB 的 ...
- 判断日期是否为法定节假日的API接口与示例函数
需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: http://tool.bitefu.net/jiari/ http ...