ACED_ARXCOMMAND_ENTRY_AUTO用法示例
时间: 2023-08-01 15:09:13 浏览: 47
以下是一个使用 ACED_ARXCOMMAND_ENTRY_AUTO 宏注册命令的示例:
```cpp
#include "acedCmdNF.h"
#include "acdb.h"
#include "adslib.h"
void myCommandFunction()
{
// 实现命令的代码
}
void initApp()
{
acedRegCmds->addCommand("MYGROUP", "MYCOMMAND", "MYCOMMAND", ACRX_CMD_MODAL, myCommandFunction);
}
void unloadApp()
{
acedRegCmds->removeGroup("MYGROUP");
}
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* ptr)
{
switch (msg)
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(ptr);
acrxRegisterAppMDIAware(ptr);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
}
return AcRx::kRetOK;
}
ACED_ARXCOMMAND_ENTRY_AUTO(acedCmdNF, MyGroup, MyCommand, MyCommand, ACRX_CMD_MODAL, myCommandFunction, AcDbDatabase::kDwgAcadVer);
```
以上代码中,我们使用 ACED_ARXCOMMAND_ENTRY_AUTO 宏注册了一个名为 "MyCommand" 的命令,它所属的命令组为 "MyGroup",在命令行输入或者 Lisp 中调用的命令名为 "MYCOMMAND"。它的实现函数为 myCommandFunction,命令标志为 ACRX_CMD_MODAL,表示该命令是一个模态命令。命令所涉及的数据库对象为 AcDbDatabase::kDwgAcadVer,表示该命令在所有 AutoCAD 版本中都有效。
同时,我们在 acrxEntryPoint 函数中调用了 initApp 和 unloadApp 函数,用于在应用程序加载和卸载时注册和注销命令。