【转载】ARX给CAD发送命令的几种方法

  • ads_queueexpr( _T("(command\"_POINT\" \"1,1,0\")") );该函数CAD未公开,使用时提前声明下就可以了。可以参考帮助文件中:Tips and Techniques 。
  • acDocManager->sendStringToExecute(curDoc(), _T("_POINT 2,2,0 "));该函数在Arx帮助中有详细说明。
  • acedCommand(RTSTR, _T("_POINT"), RTSTR,_T("5,5,0"), RTNONE);
  • Windows API 方法

void SendCmdToAcad(ACHAR *cmd)

{

COPYDATASTRUCT cmdMsg;

cmdMsg.dwData = (DWORD)1;

cmdMsg.cbData = (DWORD)(_tcslen(cmd) + 1) * sizeof(ACHAR);

cmdMsg.lpData = cmd;

SendMessage(adsw_acadMainWnd(), WM_COPYDATA, NULL, (LPARAM)&cmdMsg);

}

  • Com 方法

void SendCommandTest(void)

{  

IAcadApplicationPtr pApp = acedGetIDispatch(TRUE);

IAcadDocumentPtr pDoc;

pApp->get_ActiveDocument(&pDoc);

pDoc->SendCommand( _T("_POINT 4,4,0 ") );

}

转载于:https://www.cnblogs.com/lihao102/archive/2013/04/14/3020280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在AutoCAD ARX中注册新命令需要使用acedRegCmds函数,该函数用于注册命令并将其添加到AutoCAD命令列表中,以便用户可以通过命令行或菜单等方式访问新命令。 下面是使用acedRegCmds函数注册新命令的示例代码: ``` #include "acdbabb.h" #include "aced.h" #include "adslib.h" void myCommand() { // 在这里编写新命令的实现代码 } void initApp() { // 注册新命令 acedRegCmds(0, // 命令组号,0表示默认命令组 acdbHostApplicationServices()->findString("MYCOMMAND"), // 命令名 myCommand, // 命令实现函数 ACRX_CMD_MODAL, // 命令类型,ACRX_CMD_MODAL表示模态命令 NULL); // 命令帮助文件名,NULL表示没有帮助文件 } void unloadApp() { // 卸载新命令 acedRegCmds(0, // 命令组号,0表示默认命令组 acdbHostApplicationServices()->findString("MYCOMMAND"), // 命令名 NULL, // 命令实现函数,NULL表示卸载该命令 ACRX_CMD_MODAL, // 命令类型,ACRX_CMD_MODAL表示模态命令 NULL); // 命令帮助文件名,NULL表示没有帮助文件 } // 定义ARX程序的入口点函数 IMPLEMENT_ARX_ENTRYPOINT(MyArxApp) AcRx::AppRetCode MyArxApp(const AcRx::AppMsgCode msg, void* pkt) { switch(msg) { case AcRx::kInitAppMsg: // 进行ARX程序的初始化操作 initApp(); break; case AcRx::kUnloadAppMsg: // 进行ARX程序的卸载操作 unloadApp(); break; default: break; } return AcRx::kRetOK; } ``` 在上面的示例代码中,我们在initApp函数中使用acedRegCmds函数注册新命令,其中第一个参数为命令组号,这里我们使用默认命令组,第二个参数为命令名,这里我们使用字符串"MYCOMMAND"作为命令名,第三个参数为命令实现函数,这里我们使用myCommand函数作为命令实现函数,第四个参数为命令类型,这里我们使用ACRX_CMD_MODAL表示模态命令,最后一个参数为命令帮助文件名,这里我们不需要帮助文件,所以使用NULL表示没有帮助文件。 在unloadApp函数中,我们使用acedRegCmds函数卸载新命令,其中第三个参数为NULL表示卸载该命令

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值