您的位置:首页 > 移动开发 > Objective-C

ARX给CAD发送命令的五种方法

2017-12-17 18:10 429 查看
参考文章地址:http://blog.csdn.net/pangshaohua/article/details/5274137

在其基础上自己做了一些验证,如有不妥之处,还望留言批评指正。

ads_queueexpr( _T("(command/"_POINT/" /"1,1,0/")") );cad2007版本时该函数还未公开,2010版本就有了,在帮助文件中搜索即可,是ads全局函数之一,使用时提前声明下就可以了,例如,extern "C" int ads_queueexpr( ACHAR *)。

acDocManager->sendStringToExecute(curDoc(), _T("_POINT 2,2,0 "));作为下一个命令执行。

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);//acedGetAcadFrame()->m_hWnd

}

Com 方法

void SendCommandTest(void)

{   

  LPDISPATCH pDisp = acedGetAcadWinApp()->GetIDispatch(TRUE);
IAcadApplication *acadApp = NULL;
pDisp->QueryInterface(IID_IAcadApplication,(LPVOID*)&acadApp);
IAcadDocument *pDoc = NULL; 
acadApp->get_ActiveDocument(&pDoc); 
pDoc->SendCommand(_T("_POINT 4,4,0 "));

}

记得添加头文件acadi.h与"acadi_i.c"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ObjectArx AutoCAD