閑來無事,突然想整理一下發(fā)送命令到AutoCAD的方法,在ARX的幫助里有最常見的兩個(gè)方法:
int acedCommand(int rtype, ... unnamed);
int acedCmd(const struct resbuf * rbp);
這兩個(gè)函數(shù)處理命令的方式差不多,只不過一個(gè)通過鏈表來描述整個(gè)命令,一個(gè)通過不定參數(shù)來描述。
1. acedCommand()[ads_command()]
acedCommand()函數(shù)的參數(shù)是成對處理的。每對參數(shù)中的第一個(gè)表示參數(shù)的類型,第二個(gè)表示其實(shí)際的數(shù)據(jù)。參數(shù)表中的最后一個(gè)必須是單個(gè)參數(shù),其值為0或RTNONE。每個(gè)表示參數(shù)類型的參數(shù)值必須為在adscodes.h文件中定義的結(jié)果類型碼中的一個(gè)(例如RTPOINT)。比如:acedCommand(RTSTR, "ZOOM", RTSTR, "W", RT3DPOINT, p11, RT3DPOINT, p21 ,0);這個(gè)命令執(zhí)行后會根據(jù)p11和p21點(diǎn)所確定的窗口范圍縮放。注意p11和p21是ads_point類型。
2. acedCmd()[ads_cmd()]
注意此函數(shù)有一個(gè)resbuf指針類型的參數(shù)。該 resbuf 指針從何而來?它來自acutBuildList()函數(shù)。該函數(shù)的優(yōu)點(diǎn)就是可以動態(tài)修改命令內(nèi)容,不像acedCommand那樣命令是寫死的,但是缺點(diǎn)就是執(zhí)行效率比acedCommand要差一些,同樣,對于上面那個(gè)功能,我們可以如下調(diào)用:
struct resbuf *cmdlist;
cmdlist = acutBuildList(RTSTR, "ZOOM", RTSTR, "W", RT3DPOINT, p11, RT3DPOINT, p21 ,0);
if (cmdlist == NULL) {
acdbFail("Couldn't create listn");
return BAD;
}
acedCmd(cmdlist);
acutRelRb(cmdlist);
執(zhí)行效果是一樣的。
其實(shí)還有其它方式來執(zhí)行AutoCAD命令,下面介紹另外一種方法:
// 發(fā)送命令給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);
}
這是我寫的一個(gè)函數(shù),通過給AutoCAD發(fā)送消息,來執(zhí)行一些命令。cmd這個(gè)字符串包含的內(nèi)容和acedCommand中的內(nèi)容差不多,比如像發(fā)送一個(gè)redraw命令,可以這樣調(diào)用:
SendCommandToCAD(_T("redraw "));
注意后面要帶一空格。
zoom e命令可以這樣:
SendCommandToCAD(_T("zoom e "));在zoom后面要有空格,e 后面也要有空格。
這里還介紹一種發(fā)送命令的方法:
acedPostCommand,由于這個(gè)函數(shù)Autodesk沒有公布,在使用之前,我們需要先申明一下:
extern Adesk::Boolean acedPostCommand(const char* );
然后,我們發(fā)送Cancel命令為例:
acedPostCommand("CANCELCMD");
嗯,確實(shí)非常簡單,呵呵!
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業(yè)技術(shù)人員計(jì)算機(jī)應(yīng)用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實(shí)例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實(shí)拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計(jì)案例教程中文版AutoCAD 建筑設(shè)計(jì)案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機(jī)械A(chǔ)utoCAD 項(xiàng)目教程 第3版 [繆希偉 主編] 2012年P(guān)DF