码迷,mamicode.com
首页 > 其他好文 > 详细

发送命令

时间:2017-12-10 17:40:12      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:point   queue   acdb   注意   发送   文件中   doc   layer   idt   

p11, RT3DPOINT, p21 ,0); 

if (cmdlist == NULL) { 

 

 

 

 

 

acdbFail("Couldn‘t create list\n"); 

 

return BAD; 

 

 

acedCmd(cmdlist); 

 

acutRelRb(cmdlist); 

 

执行效果是一样的。

 

 

 

 

 

其实还有其它方式来执行

AutoCAD

命令,下面介绍另外一种方

法:

 

 

 3

 // 

发送命令给

AutoCAD 

void YgxAcadUtil::SendCommandToCAD(CString cmd) 

 

 

 

 

cmd.Format("%s", cmd); 

 

 

 

 

COPYDATASTRUCT cmdMsg; 

 

 

 

 

cmdMsg.dwData = (DWORD)1; 

 

 

 

 

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

 

 

 

 

cmdMsg.lpData = cmd.GetBuffer(cmd.GetLength()+1)  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SendMessage(adsw_acadMainWnd(),WM_COPYDATA, 

(WPARAM)adsw_acadMainWnd(), (LPARAM)&cmdMsg); 

 

这是我写的一个函数,

通过给

AutoCAD

发送消息,

来执行一些命令。

cmd

这个字符串包含的内容和

acedCommand

中的内容差不多,比如

像发送一个

redraw

命令,可以这样调用:

 

SendCommandToCAD(_T("redraw ")); 

注意后面要带一空格。

 

zoom e

命令可以这样:

 

SendCommandToCAD(_T("zoom e "));

zoom

后面要有空格,

后面

也要有空格。

 

 

 

 

这里还介绍一种发送命令的方法:

 

 

acedPostCommand

,由于这个函数

Autodesk

没有公布,在使用

之前,我们需要先申明一下:

 

extern Adesk::Boolean acedPostCommand(const char* ); 

 

然后,我们发送

Cancel

命令为例:

 

acedPostCommand("CANCELCMD"); 

ads_queueexpr( _T("(command\"_POINT\" \"1,1,0\")") );

函数

CAD

未公开,

使用时提前声明下就可以了。

可以参考帮助文件中:

Tips and Techniques 

 

acDocManager->sendStringToExecute(curDoc(), 

_T("_POINT 

2,2,0 "));

该函数在

Arx

帮助中有详细说明

发送命令

标签:point   queue   acdb   注意   发送   文件中   doc   layer   idt   

原文地址:http://www.cnblogs.com/xzh1993/p/8017429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!