ObjectARX 2025(C++)入门 hello world

最近更新于 2024-08-08 20:00

Table of Contents

环境

AutoCAD 机械版 2025
ObjectARX 2025
Visual Studio 2022

ObjectARX 开发环境配置参考:https://blog.iyatt.com/?p=16480

hello world

通过向导创建一个新项目(参考环境配置篇),目录结构如下
file

添加一个自定义类,分别新建头文件 Hello.hppHello.cpp
file

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 对于开发者来说是直接的入口位置,引用一下自定义的类,分别放置初始化和卸载函数
file

调试运行,测试 hello 命令
file

file

ObjectARX 2025(C++)入门 hello world
Scroll to top