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, ...
随机推荐
- C#面试题目整理(一)
1.您在什么情况下会用到虚方法?它与接口有什么不同?当子类需要重新定义父类的一个方法时,父类的方法需要定义为虚方法:在定义接口的时候不能又方法体,但是虚方法可以有方法体,实现时,子类可以不实现父类的虚 ...
- BOM之本地数据存储
JavaScript中本地存储数据常用的,且兼容性较好的有两种方式,cookie和Storage.另外还可以使用location.hash临时存储少量关键信息. 一 location.hash ...
- JAVA设计模式-动态代理(Proxy)源码分析
在文章:JAVA设计模式-动态代理(Proxy)示例及说明中,为动态代理设计模式举了一个小小的例子,那么这篇文章就来分析一下源码的实现. 一,Proxy.newProxyInstance方法 @Cal ...
- C++ 函数模板用法
泛型编程概念:不考虑具体数据类型的编程方式: 函数模板: 1.提供一种特殊的函数可用不同类型进行调用: 2.与普通函数很相似,区别是类型可被参数化: template <typename T&g ...
- SpringBootSecurity学习(10)网页版登录之记住我功能
场景 很多登录都有记住我这个功能,在用户登陆一次以后,系统会记住用户一段时间,在这段时间,用户不用反复登陆就可以使用我们的系统.记住用户功能的基本原理如下图: 用户登录的时候,请求发送给过滤器User ...
- java-newInstance()和new()
public <T> T genericMethod(Class<T> tClass)throws InstantiationException , IllegalAccess ...
- SpringBootSecurity学习(11)网页版登录之URL动态权限
动态权限 前面讨论用户登录认证的时候,根据用户名查询用户会将用户拥有的角色一起查询出来,自动实现判断当前登录用户拥有哪些角色.可以说用户与角色之间的动态配置和判断security做的非常不错.不过在配 ...
- Flask基础(14)-->自定义过滤器
Flask基础(13)-->自定义过滤器 什么是过滤器? 过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 P ...
- 03-body标签中的部分标签
一.字体标签 标题标签h1-h6 h1定义最大的标题,h6定义最小的标题,一般一个页面中h1只能出现一次,尽量标题不要超过三级.h标签具有align属性,属性值分别是:left.center.righ ...
- 只要听说过电脑的人都能看懂的网上pdf全书获取项目
作者:周奇 最近我要获取<概统>的教材自学防挂科(线代已死),于是我看到 htt链ps:/链/max链.book接118接.com接/html/2018/0407/160495927.sh ...