AutoCAD 二次开发之 ObjectARX 环境搭建

2023-11-16

AutoCAD2017,VS2015,Win7/Win10

第一步:安装ObjectARX SDK 库

解压 ObjectARX SDK 文件到指定路径:C:\ObjectARX;(避免出错,使用默认路径)

第二步:安装向导程序

  1. 创建注册表:新建一个 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;在这里插入图片描述
    在这里插入图片描述

  2. 双击运行 【MSI添加管理员运行.reg】;

  3. 右击 【ObjectARXWizards.msi】,以管理员身份运行;

第三步:手动创建ARX项目

  1. 创建一个Win32空的dll 项目;

  2. 创建好项目后,向项目中添加以下文件,并编写以下代码:
    stdafx.h

    #pragma once
    #define WIN32_LEAN_AND_MEAN
    
    #include <Windows.h>
    #include "tchar.h"
    

    stdafx.cpp

    #include "stdafx.h"
    
  3. 接着进行项目配置:
    1- [属性]->[配置属性]->[常规]->[目标文件扩展名].dll -> .arx
    2- [属性]->[配置属性]->[C/C++]->[常规]->[附加包含目录](头文件路径)
    3- [属性]->[配置属性]->[C/C++]->[常规]->[代码生成]->[运行库]多线程DLL(/MD)
    4- [属性]->[配置属性]->[链接器]->[常规]->[附加库目录]
    5- [属性]->[配置属性]->[链接器]->[输入]->[附加库依赖]
    图文对照:
    <目标文件扩展名>在这里插入图片描述
    <附加包含目录>
    在这里插入图片描述在这里插入图片描述
    <运行库>
    在这里插入图片描述
    <附加库目录>
    在这里插入图片描述在这里插入图片描述
    <附加库依赖>
    在这里插入图片描述在这里插入图片描述

  4. 创建 HelloARX.cpp文件并添加以下代码:

    #include "stdafx.h"
    
    BOOL APIENTRY DLLMain(HANDLE hModule,
    	DWORD ul_reason_for_call,
    	LPVOID ipReserved)
    {
    	return TRUE;
    }
    

    这是dll的入口;

  5. 创建HelloARX.def模块文件并添加以下代码:

    LIBRARY HelloARX
    DESCRIPTION "First ARX Application."
    
    EXPORTS
    acrxEntryPoint PRIVATE
    acrxGetApiVersion PRIVATE
    
  6. 创建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基础类

  1. 找到:C:\Program Files (x86)\Autodesk\ObjectARX 2017 Wizards\ArxWizMFCSupport\HTML\1033 路径下的 default.htm 文件,以记事本的方式打开它;
  2. 找到第332行
    在这里插入图片描述
  3. 代码替换为:
<OBJECT CLASS="itemText" ID="DialogList" ACCESSKEY="d" CLASSID="CLSID:087da97a-e2f4-472a-bb48-0bcdfaa20fb3">

大功告成,右键新建类,选择 ObjectARX 类库时正常!
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AutoCAD 二次开发之 ObjectARX 环境搭建 的相关文章

  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触

随机推荐

  • APS高级计划排程 基本概念

    独立需求 独立需求 Independent Demand 是指物料的需求与其它物料的需求无关 即该物料的需求不受其它物料的需求的影响 如订单对完成品的需求 面向库存生产 面向库存生产 MTS Make To Stock 是在接到客户订单之前
  • Android系统开发-入门篇

    参见 视频教程 写给应用开发的 Android Framework 教程 玩转 AOSP 篇之 Android 系统开发工具推荐 掘金 前置条件 android系统源码位于 linux 服务器 ssh 地址假如为 test 172 1 10
  • 字典中三种提取键值信息方法:keys、values、items

    keys 用于获取字典中的所有键 values 用于获取字典中的所有键 items 得到字典中的所有键值对 country China 1 USA 5 all keys country keys all values country val
  • 数据结构-线性表

    线性表的定义 线性表是一个具有n n gt 0 个数据元素的线性关系有限序列 元素的个数为线性表的长度 当n 0时 线性表为空表 用一对空括号表示 当n 0时 线性表可以表示为 a1 a2 a3 an a1为表头元素 an为表尾元素 an
  • 5g信令流程详解_4G和5G互操作流程详解——5G知识分享

    引言 5G的商用部署进程将是一个基于4G系统进行的长期的替换 升级 迭代的过程 而在5G网络部署的前中期阶段 4G系统也是在5G覆盖不完善的情况下 作为保障用户业务连续性体验这一目的的最好补充 因此4G 5G融合组网 以及互操作技术将是各大
  • python+playwright 学习-35.获取页面的完整 HTML 内容

    前言 selenium 里面有个driver page source 可以获取整个html页面的内容 playwright里面也有类似的方法 使用 page content page content 获取html内容 使用示例 from p
  • 解决在typescript里获取axios返回值报错的问题,Property ‘profile‘ does not exist on type ‘AxiosResponse<any>‘

    如果你是用的vuecli创建的项目 那么请在res文件夹下新建axios d ts文件 添加以下内容 eslint disable no undef eslint disable no unused vars import as axios
  • 使用艺术二维码API接口生成个性化二维码(不会代码也可以)

    目录 前言 介绍 一 申请API接口 二 进行二维码信息的配置 配置后 代码会直接生成 1 基础参数 默认参数 2 进行二维码重要信息配置 2 1二维码类型 2 2二维码内容 2 3绘制指令 3 次要部分 3 1二维码组合 3 2预设背景风
  • 如何使用 ChatGP在TTPU(张量处理单元)上训练模型的指令

    推荐 将NSDT场景编辑器加入你的3D工具链 3D工具集 NSDT简石数字孪生 ChatGPT 作为您的专家助手 ChatGPT 可以帮助我们学习新的编程语言 课程 技术和技能 它已成为许多寻求改进工作流程或学习新事物的专业人士的首选工具
  • Linux中的软件管家——yum

    目录 编辑 一 软件安装的方式 二 对yum的介绍 1 yum的作用 2 yum的库 三 yum下载软件的操作 1 yum list 2 yum install 3 yum remove 四 yum源的转换 一 软件安装的方式 软件安装的方
  • MIT新研发的芯片将神经网络功耗降低95%

    内容来源 ATYUN AI平台 近日 麻省理工学院 MIT 的工程师们设计了一种芯片 这种芯片能将神经网络计算的速度提高3到7倍 同时还能将耗电量降低94 95 这大大减少了在芯片存储器和处理器之间来回传输数据的需要 这可能使得我们可以在智
  • 小样本图像分类研究综述

    https kns cnki net kcms2 article abstract v 3uoqIhG8C44YLTlOAiTRKibYlV5Vjs7ioT0BO4yQ4m mOgeS2ml3UDKtyAQtTA0dGC TDvW fPi0
  • 华为OD机试真题 Java 实现【完美走位】【2022.11 Q4】

    题目描述 输入一个长度为4的倍数的字符串 字符串中仅包含WASD四个字母 将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换 如果替换后整个字符串中WASD四个字母出现的频数相同 那么我们称替换后的字符串是 完美走位 求子串的最
  • vue+播放直播视频流(websocket的流文件)

    前言 之前分享的有 rtmp直播流 flv直播流的一些方法 这里分享下 播放 websocket的直流的方法 使用的方法是JSMpeg JSMpeg是JS写的视频 音频解码器 能使用WebGL Canvas2D渲染以及WebAudio声音输
  • Linux14.04下安装网易云音乐和搜狗输入法(太棒了!!!)

    本文转载于 http blog csdn net tao 627 article details 51535294 注 本人比较喜欢挺音乐 一直用的是Linux版本 一直苦苦的用着网页版的网易云音乐 哎呀 反正不太好 不舒服 今天由于其他原
  • React 从零开始学习(一) —— 搭建项目

    React 文档地址 https react docschina org docs create a new react app html 简介 React 是一个用于构建用户界面的 JAVASCRIPT 库 React 主要用于构建 UI
  • 如何通过JAVA代码实现多线程分段下载+断点续传

    多线程下载技术是很常见的一种下载方案 这种方式充分利用了多线程的优势 在同一时间段内通过多个线程发起下载请求 将需要下载的数据分割成多个部分 每一个线程只负责下载其中一个部分 然后将下载后的数据组装成完整的数据文件 这样便大大加快了下载效率
  • matplotlib.pyplot.plot()参数详解

    https matplotlib org api pyplot summary html 在交互环境中查看帮助文档 import matplotlib pyplot as plt help plt plot 以下是对帮助文档重要部分的翻译
  • CloudCompare——计算点云的法向量

    目录 1 Computing normals on a cloud 2 点云法线计算结果 3 反转法线方向 Normals gt Invert 4 With Minimum Spanning Tree 5 With Fast Marchin
  • AutoCAD 二次开发之 ObjectARX 环境搭建

    AutoCAD2017 VS2015 Win7 Win10 第一步 安装ObjectARX SDK 库 解压 ObjectARX SDK 文件到指定路径 C ObjectARX 避免出错 使用默认路径 第二步 安装向导程序 创建注册表 新建