最近进行CAD二次开发的研究,发觉网上看起来像是很多资料但是实用的不多,而且有些资料还特别的旧。在本篇文件中,我将最近自己的学习跟大家分享一下。另外还会附上简单的资料。
环境:Win10 VS2015 AutoCAD2017 ObjectARX 这里需要自己提前安装好VS2015和AutoCAD,这个比较简单自己百度一下就好,所以不做介绍。
另外需要准备的资料:Autodesk_ObjectARX_2017_Win_64_and_32_Bit.sfx.exe
ObjectARXWizards-2017.zip
官方下载路径:https://www.autodesk.com/developer-network/platform-technologies/autocad
1.双击将==Autodesk_ObjectARX_2017_Win_64_and_32_Bit.sfx.exe==文件解压到直接喜欢放置的路径下;
2.解压ObjectARXWizards-2017.zip文件,得到==ObjectARXWizards.msi==文件。这里需要注意下,如果直接双击.msi文件安装,在使用VS2015时会出现使用Autodesk向导创建项目时不成功的情况。
不过有解决办法的。在安装.msi文件之后,找到文件Autodesk.arx-2017.props 然后找到并修改 ”C:\ObjectARX 为C:\Autodesk\Autodesk_ObjectARX_2017_Win_64_and_32_Bit
C:\Autodesk\Autodesk_ObjectARX_2017_Win_64_and_32_Bit就是你的ObjectARX SDK包解压的位置。除了修改文件还有一个方法是将 Autodesk_ObjectARX_2017_Win_64_and_32_Bit.sfx.exe解压得到的文件拷贝到C:\ObjectARX\中。
讲过上面的操作,可以看到下面一样的截图:
这个ObjectARXWizards.msi我是安装到默认路径下。
打开VS点新建项目可以看到:
经过上面的操作,就是把开发环境搭好了。
这一步先介绍手动创建项目的过程。
1.创建一个win32空的dll项目:
2.创建好项目后,先向项目中添加文件:
stdafx.h stdafx.cpp
在stdafx.h stdfx.cpp的文件中分别输入下面代码:
stdafx.h
#pragma once
#define WIN32_LEAN_AND_MEAN
#include
#include "tchar.h"
===============================================
stdfx.cpp
#include "stdafx.h"
3.接着需要进行项目的配置:
属性->配置属性->常规->目标文件扩展名 由.dll->.arx;
属性->配置属性->C/C+±>常规->附加包含目录:
前面配置的ObjectARX的头文件路径,我电脑这里是(注意我建的是64位的):
属性->配置属性->C/C+±>常规->代码生成->运行库 选 多线程DLL/MD
属性->配置属性->链接器->常规->附加库目录:
属性->配置属性->链接器->输入->附加库依赖:
rxapi.lib,acdb21.lib,acge21.lib,acad.lib,ac1st21.lib,accore.lib
这个比较简单,不附图了。
配置到这里就完成了。
4.这里继续创建文件以及添加简单的代码:
4.1创建HelloARX.cpp文件并添加如下代码:
#include "stdafx.h"
BOOL APIENTRY DLLMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
return TRUE;
}
这是dll的入口。
4.2创建HelloARX.def模块文件并添加如下代码:
LIBRARY HelloARX
DESCRIPTION "First ARX Application"
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
#include
#include
#include "stdafx.h"
void InitApp();
void UnloadApp();
void HelloWorld();
void InitApp()
{
acedRegCmds->addCommand(L"HelloArx", L"Hello", L"Hello", ACRX_CMD_MODAL, HelloWorld);
}
void UnloadApp()
{
acedRegCmds->removeGroup(L"HelloArx");
}
void HelloWorld()
{
acutPrintf(L"\nHello World!");
}
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) {
switch (msg)
{
case AcRx::kNullMsg:
break;
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt);
acrxRegisterAppMDIAware(pkt);
InitApp();
break;
case AcRx::kUnloadAppMsg:
UnloadApp();
break;
case AcRx::kLoadDwgMsg:
break;
case AcRx::kUnloadDwgMsg:
break;
case AcRx::kInvkSubrMsg:
break;
case AcRx::kCfgMsg:
break;
case AcRx::kEndMsg:
break;
case AcRx::kQuitMsg:
break;
case AcRx::kSaveMsg:
break;
case AcRx::kDependencyMsg:
break;
case AcRx::kNoDependencyMsg:
break;
case AcRx::kOleUnloadAppMsg:
break;
case AcRx::kPreQuitMsg:
break;
case AcRx::kInitDialogMsg:
break;
case AcRx::kEndDialogMsg:
break;
case AcRx::kSuspendMsg:
break;
case AcRx::kInitTabGroupMsg:
break;
case AcRx::kEndTabGroupMsg:
break;
default:
break;
}
return AcRx::kRetOK;
}
到这里可以生成HelloARX.arx文件了。
启动AutoCAD2017加载,我们自己生成的插件。将插件直接拖放进CAD或者使用appload命令加载即可。加载完后,在命令行输入hello,即可看到Hello World!打印出来,到这里可以确认我们的项目创建成功了。
这里是手动创建的过程,如果使用向导比这个过程更简单的,这里先不进行介绍了。
如有错误欢迎指正谢谢!
另外这里附上本次创建项目的包提供参考(如果需要使用我的项目,则需要将库的头文件路径以及库路径修改为本地电脑的)。
项目模板链接:https://download.csdn.net/download/qq_32396555/11201373
书籍资料参考链接:https://download.csdn.net/download/qq_32396555/11201381
官方参考资料:Autodesk_ObjectARX_2017_Win_64_and_32_Bit.sfx.exe这个解压后有个docs文件夹,文件夹下的arxdoc.chm双击打开它,可以看到官方的介绍。创建环境的的以及查看API。