碎碎念

不得不说autocad二次开发的相关资料真的少,大多数还很旧。图书馆里VBA的一本最近出版时间是2006,AutoLisp的2013(还是个十二五规划教材),ObjectARX的书是2014年出的,结果开发的是autocad2010,还配套VS2008,里面的内容也是......惨不忍睹......

不过女朋友设计院的插件在AutoCAD2017上一用就崩也不是个办法(说实话用上2017就再也不想回2011了),只好自己找AutoCAD 2017的官方资料开搞。

首先是技术选型问题,就查找到的资料而言二次开发有三个流派,AutoLisp,VBA(ActiveX), Cpp/C#(.Net + ObjectARX)。AutoLisp不了解,目前主要是解决问题(实现那一用就崩的插件里的一个小功能,功能下文再详细叙述),暂时不打算从头开始撸Lisp。ActiveX的提供(据说)很少,VBA我也不是很熟,作为次要选择。那么首先就先试试ObjectARX的水。

正文

AutoCAD 2017 的官方开发文档地址:

http://help.autodesk.com/view/ACD/2017/CHS/?home=homepage_dev

此外在Develop Center有坑学习资料。网址

http://usa.autodesk.com/adsk/servlet/index?id=1911627&siteID=123112

首先要下载ObjectArx2017的库。另外ARX集成到VS2015开发环境的Wizard不包含在库的安装包中,需要另外单独下载。

ObjectARX2017库下载地址(需要Submit个人信息):

http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=785550

Wizard下载地址:

http://images.autodesk.com/adsk/files/ObjectARXWizards-2017.zip

首先安装ObjectARX库,它让你指定一个解压路径,解压完成后并不会有可执行文件进行进一步安装。这里面的文件根据32位和64位分别用于提供给VS2015来include和link。

其次安装Wizard。装完Wizard之后Visual C++就会出现Autodesk开发的模板。

安装Wizard这里有个坑: 如果直接双击安装,随后VS里工程创建时不会成功的。根据我的排查,得到的安装成功的必要条件为:

1. VS2015必须安装了MFC组件

2. Wizard必须主动以管理员身份安装,方法为已Admin身份启动一个cmd,再由这个cmd去启动Wizard的MSI安装包。(我第一次安装时UAC已设置到最低,msi安装时应该默认已经给了admin的权限,此处非常奇怪)

如果选择不安装Wizard,自己手动创建一个win32 dll项目,也是可以的,主要可以参考”ObjectARX 2017 Trainning”里的CHM文档,按步骤配置可以走通。

要点如下:

1. 创建的项目是Win32 Dll 项目。

2. 修改项目属性中的C/C++子项,Additional Include Directories里添加ObjectARX根目录下的inc/文件夹和inc-win32/(若采用64位编译则是inc-x64/)文件夹。

3. C/C++子项中的Code Generation项里的Runtime Library改为Multi-threaded Dll

4. C/C++中的Preprocessor中把_DEBUG宏去掉。(其实文档里这步已经让我考虑转VBA)

5. 链接器(Linker)中添加附加依赖目录和附加依赖项。此处文档有坑: 附加依赖项是

rxapi.lib; acdb21.lib; acge21.lib; acad.lib; ac1st21.lib; accore.lib;

文档中的文件名是错误的(不存在的)。

得到的配置截图(64位)如下:

至此再敲教程的代码就可以正常运行了。

我的示例代码为:

// objectArxHelloWorld.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "tchar.h"
#include <aced.h>
#include <rxregsvc.h>void initApp();
void unloadApp();void helloWorld();void initApp()
{// register a command with the AutoCAD command mechanismacedRegCmds->addCommand(_T("HELLOWORLD_COMMANDS"),_T("Hello"),_T("Bonjour"),ACRX_CMD_TRANSPARENT,helloWorld);
}void unloadApp()
{acedRegCmds->removeGroup(_T("HELLOWORLD_COMMANDS"));}void helloWorld()
{acutPrintf(_T("\n萌萌哒!"));
}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;}

转载于:https://www.cnblogs.com/aweffr/p/7510544.html

[AutoCAD二次开发][2017]Autocad2017 ObjectARX 开发 环境配置和踩到的坑相关推荐

  1. [转载][AutoCAD二次开发][2017]Autocad2017 ObjectARX 开发 环境配置和踩到的坑

    转自 https://www.cnblogs.com/aweffr/p/7510544.html 其中 链接器(Linker)中添加附加依赖目录和附加依赖项 版本号记得改成自己的版本就好 碎碎念 不得 ...

  2. AutoCAD 开发文档,AutoLISP 教程,.Net AutoCAD开发教程,VB AutoCAD开发教程,ObjectARX 开发指南,VBA AutoCAD开发教程,ActiveX 开发指南

    AutoCAD 开发文档, CAD开发者社区 - AutoCAD二次开发文档,CAD二次开发,CAD插件开发,中文CAD文档 - 中文CAD开发文档,CAD二次开发问题交流,优秀插件分享 AutoLI ...

  3. 基于node.js开发环境下创建及开发vue.js项目的环境配置骤

    基于node.js开发环境下创建开发vue.js项目的环境配置骤如下: 步骤一:安装node.js,安装完后运行node -v命令检安装node的查版本,判断是否安装成功.Npm是node.js包管理 ...

  4. Ubuntu 交叉编译国产开发板香橙派的环境配置

    Ubuntu 交叉编译国产开发板香橙派的环境配置 一.目的 二.准备工具 三.操作步骤 1. ubuntu安装交叉编译工具 2. 建一个demo程序 a.c 3. 编译 4. 检查文件信息 四.开发板 ...

  5. SuperMap iMobile+Android studio开发入门(一)——环境配置

    背景:开发管线的安卓app,功能初步定为三维显示,属性查询和属性修改. (本文属于小白记录贴,会尽量详细,可供有同样需求的人参考,有问题欢迎留言交流.) 使用软件: SuperMap iMobile ...

  6. 【Python3网络爬虫开发实战】 1-开发环境配置

    [摘要] 本章是本书使用的所有库及工具的安装过程讲解,为了使书的条理更加清晰,本书将环境配置的过程统一合并为一章,本章不必逐节阅读,可以在需要的时候进行查阅. 工欲善其事,必先利其器! 编写和运行程序 ...

  7. ThinkPhp5开发实战1:搭建环境配置TP5框架(持续更新收藏关注)

    文章目录 前言 一.下载thinkphp5.0.10和安装本地环境 二.下载H-UI后端模板 三.静态文件引入 四.创建后台页面首页 前言 php框架有助于促进快速应用开发,不仅节省时间,有助于建立更 ...

  8. 第一篇 Windows 8 开发Windows Metro style app环境配置

    目录 1.介绍 2.Windows 8 安装 3.VS 2012安装 4.Windows Metro style配置总结 介绍 离Windows 8正式发布已经只有一个月了,可能在未来的开发中都会用到 ...

  9. pycharm+PyQt5+python最新开发环境配置,踩坑过程详解

    安装工具: Pycharm 专业版2017.3 PyQT5 python3 pyqt5-tools 设置扩展工具的参数找到setting->tools->external tools,点击 ...

最新文章

  1. NumPy 广播的可视化
  2. STM32 电机教程 24 - ST MCLIB实战之无感变绝对式位置传感器
  3. 本地psql连接远程Oracle虚拟机_03
  4. 95-240-050-原理-State-RocksDBStateBackend
  5. java 广告插件_徒手创建一个chrome扩展-屏蔽广告插件
  6. 金融破段子 | 如果早知赚钱概率只有8%,你会不会改变投资策略
  7. 电信商务领航1-1端口映射即虚拟服务器
  8. 为什么要使用SSM框架进行项目开发
  9. leetcode(Array)---11,盛最多水的容器
  10. IDEA如何设置自己喜欢的背景图(超好看的哟)
  11. 行业缩减他却增加!海尔智家研发投入创新高
  12. Excel填充空白的单元格
  13. 【记录】easyexcel导出后打开文件报已损坏
  14. UnRaid虚拟机安装Uos家庭版并由Windows远程桌面访问的成功流程
  15. jQuery-Ajax的使用
  16. Codeforces1509.B. TMT Document
  17. 解决grpc连接报错connectex: No connection could be made because the target machine actively refused it
  18. matlab复函数画图
  19. Asp.net Web Api开发(第二篇)性能:使用Jil提升Json序列化性能
  20. 商城-商品规格管理-商品规格数据结构

热门文章

  1. python 全栈开发,Day48(标准文档流,块级元素和行内元素,浮动,margin的用法,文本属性和字体属性)...
  2. c语言模拟随机投点计算概率,我写的蒲丰投针的程序(用概率学计算π),有问题求教...
  3. Vegas如何使用透明图像作遮罩?
  4. 3DTILES to I3S数据格式转换
  5. 安装 Zend Studio 报错:0x80070666
  6. linux ip段表示,IP地址网段表示法总结
  7. 2年前端(外包经历) 6月部分面试记录 (高级、资深岗位)
  8. 长安大学计算机专业是211嘛,长安大学算名校吗?长安大学在211里什么水平?
  9. 博途v16冗余服务器项目类型,西门子全新博途V16-侧重于标准化和集成功能,降低工程成本...
  10. oracle封面制作,简历个人求职封面电子版模板