AutoCAD2017,VS2015,Win7/Win10
第一步:安装ObjectARX SDK 库
解压 ObjectARX SDK 文件到指定路径:C:\ObjectARX;(避免出错,使用默认路径)
第二步:安装向导程序
-
创建注册表:新建一个 txt 文件,复制以下内容:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Msi.Package\shell\runas]
@="Run as Administrator"
[HKEY_CLASSES_ROOT\Msi.Package\shell\runas\command]
@="msiexec /i \"%1\""
修改文件名为:MSI添加管理员运行.reg;
-
双击运行 【MSI添加管理员运行.reg】;
-
右击 【ObjectARXWizards.msi】,以管理员身份运行;
第三步:手动创建ARX项目
-
创建一个Win32空的dll 项目;
-
创建好项目后,向项目中添加以下文件,并编写以下代码:
stdafx.h
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include "tchar.h"
stdafx.cpp
#include "stdafx.h"
-
接着进行项目配置:
1- [属性]->[配置属性]->[常规]->[目标文件扩展名].dll -> .arx
2- [属性]->[配置属性]->[C/C++]->[常规]->[附加包含目录](头文件路径)
3- [属性]->[配置属性]->[C/C++]->[常规]->[代码生成]->[运行库]多线程DLL(/MD)
4- [属性]->[配置属性]->[链接器]->[常规]->[附加库目录]
5- [属性]->[配置属性]->[链接器]->[输入]->[附加库依赖]
图文对照:
<目标文件扩展名>
<附加包含目录>
<运行库>
<附加库目录>
<附加库依赖>
-
创建 HelloARX.cpp文件并添加以下代码:
#include "stdafx.h"
BOOL APIENTRY DLLMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID ipReserved)
{
return TRUE;
}
这是dll的入口;
-
创建HelloARX.def模块文件并添加以下代码:
LIBRARY HelloARX
DESCRIPTION "First ARX Application."
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
-
创建Arx.cpp文件并添加以下代码:
#include <aced.h>
#include <rxregsvc.h>
#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::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文件了
第四步:解决无法新建MFC基础类
- 找到:C:\Program Files (x86)\Autodesk\ObjectARX 2017 Wizards\ArxWizMFCSupport\HTML\1033 路径下的 default.htm 文件,以记事本的方式打开它;
- 找到第332行
- 代码替换为:
<OBJECT CLASS="itemText" ID="DialogList" ACCESSKEY="d" CLASSID="CLSID:087da97a-e2f4-472a-bb48-0bcdfaa20fb3">
大功告成,右键新建类,选择 ObjectARX 类库时正常!