• 本项目使用手动创建,意为不使用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

  1. 在“添加新项目”对话框中,选择项目“ Def File(.def)”。
  2. 在“名称:”编辑框中输入“ ArxProject”。然后打开,输入以下内容
    EXPORTS
    acrxEntryPoint PRIVATE
    acrxGetApiVersion PRIVATE

 现在生成项目,应该是0警告,0错误,得到一个arx文件。

 ARX文件的机制类似于DLL文件,加载到CAD程序中,然后通过CAD的命令来调用,所以没有main函数。

 整个程序的中心思想是,设计自己的函数,然后把这个函数通过回调函数注册给CAD程序,打开CAD去调用自己的函数。  

  下一节我们来执行ARX文件。

2,手动创建CAD二次开发项目--AutoCAD二次开发(2020版)的更多相关文章

  1. 简单创建一个SpringCloud2021.0.3项目(二)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上一篇教程 3. 创建公共模块Common 4. 网关Gateway 1. 创建Security 2. Security登陆配置 3 ...

  2. 1,下载和部署开发环境--AutoCAD二次开发

    环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...

  3. 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(二)

    [MyEclipse最新版下载] 二.创建一个Session EJB – Part 1 MyEclipse中的EJB 2.x开发使用了EJB向导和集成XDoclet支持的组合. 每个EJB由三个基本部 ...

  4. iOS开发项目之二 [ App appicon与启动图]

    *appicon尺寸 *不是所有的appicon都是需要配置 *尽量不要透明--(透明的话,会在桌面显示成背景黑色) 1 如果没有配置5s的启动图,回去往下找,找到4s之后,会把界面以4s启动图的大小 ...

  5. 手动创建Maven项目并建立两个项目之间的依赖关系

    用命令行快速建立maven项目 -> mvn:archetype:generate -> 直接回车或者自己输入你想生成的 -> groupId ->artifactId -&g ...

  6. 简单创建一个SpringCloud2021.0.3项目(一)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 新建父模块和注册中心 1. 新建父模块 2. 新建注册中心Eureka 3. 新建配置中心Config 4. 新建两个业务服务 1. ...

  7. 简单创建一个SpringCloud2021.0.3项目(四)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上三篇教程 3. 日志处理 1. 创建日志公共模块 2. Eureka引入日志模块 4. 到此的功能代码 5. 注册中心换成naco ...

  8. 简单创建一个SpringCloud2021.0.3项目(三)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上俩篇教程 3. Gateway集成sentinel,网关层做熔断降级 1. 超时熔断降级 2. 异常熔断 3. 集成sentine ...

  9. myeclipse中使用gradle开发项目

    gradle可以直接使用maven的代码库,并且支持编程,可以说是maven的加强版.今天我们学习下,如何在MyEclipse下使用gradle开发项目.我们的开发环境:myeclipse 2015, ...

随机推荐

  1. Win10家庭版安装Docker

    1.下载Docker Toolbox 下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 2.安装Docker ...

  2. 实操:Could not autowire No beans of 'FastDFS Client' type found 的解决方法

    前言: 今天接手了同事之前做的一个小项目,里面涉及到了 FastDFS 的使用.但是当我在本地运行项目的时候,却报了 Could not autowire No beans of 'FastDFS C ...

  3. [Advanced Python] 16 - Google style guide for programming

    Ref: Python 风格指南 - 内容目录 这里主要记录一下值得注意的地方. Python语言规范 Lint:vsCode自带 导入:完整路径 异常 Ref: [Python] 07 - Stat ...

  4. PMP全真模拟题真题試題含答案解析 2019年下半年PMP考試适用 PMP中文文对照试题 【香港台灣地區PMP考試也可用】

    PMP全真模拟题真题试题 含答案解析 2019年下半年PMP考试适用 PMP中文文对照试题 [香港台灣地區PMP考試也可用]PMP全真模擬題真題試題 含答案解析 2019年下半年PMP考試适用 PMP ...

  5. 利用Python制作二维码

    利用简单的Python代码制作二维码 一.制作工具 安装Python环境 + PyCharm编译器. 二.电脑系统 本人win10 + Python3.7.0 + PyCharm. 三.写代码前先下载 ...

  6. electron教程(二): http服务器, ws服务器, 进程管理

    我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(二): http服务器, ws服务器, 进程管理 electron教程(三): 使 ...

  7. Spring boot 官网学习笔记 - Using Spring Boot without the Parent POM,但是还要使用Parent POM提供的便利

    If you do not want to use the spring-boot-starter-parent, you can still keep the benefit of the depe ...

  8. js校验对象是否全部为空

    function judgeIsNotBlank(obj) { var bool = true; var arr = Object.keys(obj); ; for(var key in obj){ ...

  9. 02-head标签

    head中的标签不会展示在浏览器上,他会将页面的一些额外信息告诉服务器.head标签中包含如下标签: <title>:指定整个网页的标题,在浏览器最上方显示 <meta>:提供 ...

  10. 2019-ccpc秦皇岛现场赛

    https://www.cnblogs.com/31415926535x/p/11625462.html 昨天和队友模拟了下今年秦皇岛的区域赛,,,(我全程在演 题目链接 D - Decimal 签到 ...