最近更新于 2024-08-08 20:00
环境
AutoCAD 机械版 2025
ObjectARX 2025
Visual Studio 2022
ObjectARX 开发环境配置参考:https://blog.iyatt.com/?p=16480
hello world
通过向导创建一个新项目(参考环境配置篇),目录结构如下
添加一个自定义类,分别新建头文件 Hello.hpp 和 Hello.cpp
Hello.hpp
#pragma once
class Hello
{
public:
/**
* @brief 初始化命令
*/
static void helloInit();
/**
* @brief 卸载
*/
static void helloUnload();
private:
/**
* @brief hello 命令的实现
*/
static void helloWorld();
};
Hello.cpp
#include "StdAfx.h" // 这个头文件已经包含了 ObjectARX 的各种头文件,只需要引用它就行,且需要将它放在第一个引用
#include "Hello.hpp"
void Hello::helloInit()
{
// 注册命令
acedRegCmds->addCommand(
L"helloGroup", // 命令组名
L"hello", // 命令全局名称
L"hello", // 命令本地名称(通过这里指定的命令调用)
ACRX_CMD_MODAL, // 其它命令执行期间,本命令不可执行
Hello::helloWorld // 调用的目标
);
}
void Hello::helloUnload()
{
acedRegCmds->removeGroup(L"helloGroup"); // 卸载命令组
}
void CALLBACK TimerProc(HWND wnd, UINT msg, UINT_PTR event, DWORD time)
{
static int count = 10;
if (count >= 0)
{
acutPrintf(L"%d\n", count);
}
else
{
KillTimer(nullptr, event);
acutPrintf(L"倒计时结束\n");
}
--count;
}
void Hello::helloWorld()
{
acutPrintf(L"开始倒计时:\n"); // 使用和 C 语言的 printf 差不多,用于在 CAD 中打印输出
SetTimer(nullptr, 1, 500, TimerProc); // 设置定时器,0.5s触发一次。ObjectARX 引用了 Windows API,可以使用系统 API 的函数
}
acrxEntryPoint.cpp 对于开发者来说是直接的入口位置,引用一下自定义的类,分别放置初始化和卸载函数
调试运行,测试 hello 命令
ObjectARX 2025(C++)入门 hello world