l 前言
隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)技術(shù)已不僅僅應(yīng)用于科學(xué)計(jì)算,已逐漸發(fā)展成為和許多科學(xué)技術(shù)部門(mén)建立各不相同的計(jì)算機(jī)輔助系統(tǒng)(Computer Aided Design,簡(jiǎn)稱(chēng)CAD)。目前,CAD技術(shù)的應(yīng)用大致可以分為兩大應(yīng)用領(lǐng)域:一類(lèi)是產(chǎn)品設(shè)計(jì),如飛機(jī)、汽車(chē)、船舶、機(jī)械、電子產(chǎn)品;另一類(lèi)是工程設(shè)計(jì),如土木、建筑、水利、礦山、鐵路、石油、化工等各種類(lèi)型的工程。CAD技術(shù)在產(chǎn)品設(shè)計(jì)領(lǐng)域的發(fā)展尤為迅速,已經(jīng)證明在采礦設(shè)計(jì)中引進(jìn)CAD技術(shù)無(wú)論計(jì)算、繪圖,質(zhì)量還是速度都使設(shè)計(jì)工作上一個(gè)臺(tái)階。
但是,目前各設(shè)計(jì)部門(mén)大多只能應(yīng)用AutoCAD軟件包,工程設(shè)計(jì)人員大部分時(shí)間花費(fèi)在繁瑣的計(jì)算、繪圖中,大部分設(shè)計(jì)人員尚不能對(duì)AutoCAD進(jìn)行開(kāi)發(fā),對(duì)引進(jìn)的CAD軟件進(jìn)行修改,編制出一些實(shí)用的小軟件。筆者以開(kāi)發(fā)“測(cè)量繪圖系統(tǒng)”軟件為例,簡(jiǎn)單介紹了AutoLISP在開(kāi)發(fā)測(cè)繪工程CAD方面的應(yīng)用,供工程設(shè)計(jì)人員在AutoCAD二次開(kāi)發(fā)中作為參考。
2 AutoLISP語(yǔ)言簡(jiǎn)介
LISP語(yǔ)言是List Processing language的縮寫(xiě),它產(chǎn)生于20世紀(jì)50年代后期,是一種資格最老的程序設(shè)計(jì)語(yǔ)言之一。AutoLISP是嵌入在AutoCAD內(nèi)部的LISP語(yǔ)言,該語(yǔ)言可以給AutoCAD系統(tǒng)增添以高級(jí)語(yǔ)言編寫(xiě)程序的能力,而且非常適合于圖形的應(yīng)用。
2.1 源程序編輯
AutoLISP程序文件代碼實(shí)際上是以ASCII文本文件的格式存儲(chǔ)的,其文件名的擴(kuò)展名是木.LSP或幸.MNL,因此,AutoLISP的程序文件可以采用任何一種文本編輯軟件來(lái)編寫(xiě),如:EDIT、wPS、WORD等。
2.2 語(yǔ)法結(jié)構(gòu)
AutoLISP語(yǔ)言書(shū)寫(xiě)指令所用的語(yǔ)法結(jié)構(gòu)與普通的口語(yǔ)化語(yǔ)言相比要簡(jiǎn)單得多,但限制卻相當(dāng)嚴(yán)格,幾乎不能有絲毫的疏忽。
2.3 程序加載
盡管AutoLISP代碼可以使用鍵盤(pán)錄入到命令行上,但通常這只是調(diào)試程序的一種輔助手段。對(duì)于實(shí)用的AutoLISP程序,就需要將它編排成一個(gè)文本文件,然后從AutoCAD編輯器環(huán)境把它加載到內(nèi)存,進(jìn)行測(cè)試和排錯(cuò),最后形成一個(gè)可重復(fù)使用的AutoLISP程序。可以使用LOAD函數(shù)在命令行加載,也可在ACAD.LSP文件中定義,以使每次啟動(dòng)AutoCAD時(shí)自動(dòng)加載。
2.4 程序運(yùn)行
如果程序文件中定義了一個(gè)形如C:XXX的函數(shù),那么就能在COMMAND:提示符下通過(guò)鍵入該函數(shù)全名來(lái)運(yùn)行該函數(shù),就像執(zhí)行標(biāo)準(zhǔn)的內(nèi)建式AutoCAD命令一樣。
過(guò)去的AutoCAD版使用的AutoLISP至多只能使用45K內(nèi)存,因此,在使用上常常會(huì)遇到結(jié)點(diǎn)空間不夠的情況,而且運(yùn)行速度很慢,影響處理工作。AutoCAD從R9版起提供了擴(kuò)充AutoLISP功能,可使用計(jì)算機(jī)的全部擴(kuò)充內(nèi)存,最多可達(dá)14M。
擁有比原先大得多的工作空間運(yùn)行AutoLISP大程序,并將騰出45K空間分給AutoCAD作為1/O分頁(yè)存取作業(yè)之用,使內(nèi)存與硬盤(pán)的交換次數(shù)減少而加快處理速度。
3 AutoLISP語(yǔ)言在開(kāi)發(fā)礦山測(cè)繪工程CAD方面的應(yīng)用
AutoLISP語(yǔ)言提供了各種數(shù)據(jù)類(lèi)型、預(yù)定義函數(shù)、特殊功能,可自動(dòng)生成SCR接口文件,利用輸入輸出功能,讀寫(xiě)函數(shù)實(shí)現(xiàn)與高級(jí)語(yǔ)言的數(shù)據(jù)交換。在AutoLISP語(yǔ)言編輯中,增加了AutoCAD繪圖命令,是設(shè)計(jì)和繪圖溶為一體,將求值器、運(yùn)算程序直接裝入源程序,實(shí)現(xiàn)對(duì)當(dāng)前數(shù)據(jù)庫(kù)的直接訪問(wèn)和修改,對(duì)屏幕圖形的適時(shí)修改,實(shí)現(xiàn)交互設(shè)計(jì),為在繪圖領(lǐng)域中應(yīng)用人工智能提供了方便。
AutoCAD從R12版開(kāi)始,引入了可編程對(duì)話(huà)框(Programmable Dialog Box,簡(jiǎn)稱(chēng)PDB),改進(jìn)了圖形用戶(hù)接口(Graphics Users Interface,簡(jiǎn)稱(chēng)GUI),使用戶(hù)能夠更加容易、直觀地進(jìn)行操作。通過(guò)一些簡(jiǎn)單的手段,用戶(hù)便可以創(chuàng)建自己的對(duì)話(huà)框,從而為操作提供了一個(gè)友好的圖形界面。
創(chuàng)建一個(gè)對(duì)話(huà)框至少要兩種不同的語(yǔ)言來(lái)編寫(xiě)兩個(gè)程序段。一個(gè)是對(duì)話(huà)框控制語(yǔ)言(Dialog Cont101Language,簡(jiǎn)稱(chēng)DCL)編制的對(duì)話(huà)框定義程序;另一個(gè)是用AutoLISP語(yǔ)言或ADS編寫(xiě)的對(duì)話(huà)框驅(qū)動(dòng)程序,文中采用的是AutoLISP語(yǔ)言。DCL文件是一個(gè)ASCII文本文件,用來(lái)定義對(duì)話(huà)框中的各種元素及其排列方式,如果用戶(hù)不指定元素的大小,AutoCAD會(huì)根據(jù)各平臺(tái)的現(xiàn)狀為元素設(shè)置一個(gè)缺省的值。對(duì)話(huà)框驅(qū)動(dòng)程序能夠?yàn)閷?duì)話(huà)框提供一個(gè)操作主控制函數(shù),用于啟動(dòng)對(duì)話(huà)框并控制流程的運(yùn)行。以“測(cè)量繪圖系統(tǒng)”軟件開(kāi)發(fā)的部分源程序?yàn)槔瑢?duì)AutoLISP語(yǔ)言在開(kāi)發(fā)中的應(yīng)用以及DCL文件的結(jié)構(gòu)和語(yǔ)法進(jìn)行簡(jiǎn)單陳述。
3.1 對(duì)話(huà)框定義程序
//;;;一一一一一一一一一一一一
//;;;文件名:CLCAD.DCL
//;;;功能:定義測(cè)繪工程CAD主菜單的各種控
件及排列
//;;;時(shí)間:2005年12月
//;;;一一一一一一一一一一一一
clcadss//對(duì)話(huà)框名
:dialog//對(duì)話(huà)框開(kāi)始
fixed—width=true;//指定控件的寬度保持固定
width=45;//指定控件的寬度為45個(gè)字符
alignment=centered;//本簇中控件中心對(duì)齊
//對(duì)話(huà)框的標(biāo)題
label=”測(cè)量繪圖系統(tǒng)(開(kāi)敞式)V1.0”
:boxed.IOW{//定義一個(gè)加框行
children.alignment=centered;//所有子控件中心對(duì)齊
initial.focus=qx"http://光標(biāo)初始定位為“LX”控件
:retirment.butto^a{//定義一個(gè)按鈕
key="Ix”;//該控件標(biāo)識(shí)號(hào)為“Lx”
label=”展點(diǎn)”;//該控件的文本標(biāo)題
}//一個(gè)控件定義結(jié)束
}//加框行定義結(jié)束
:column{//定義一個(gè)空白列
fixed.width=true;//指定控件的寬度保持固定
fixed.height=true;//指定控件的高度保持固定
height=13;//指定控件的高度為45個(gè)字符
}//空白列定義結(jié)束
:text{//定義一個(gè)控件
key="textl”;//該控件標(biāo)識(shí)號(hào)為“textl”
label=”此處顯示出錯(cuò)信息!W該控件的文本標(biāo)題
}//控件定義結(jié)束
ok.cancel.help;//選用標(biāo)準(zhǔn)“OK-取消一幫助”控件
}//對(duì)話(huà)框定義結(jié)束
3.2 對(duì)話(huà)框驅(qū)動(dòng)程序
;;;一一一一一一一一一一一一
;;;文件名:coordin.LSP
;;;功能:調(diào)用測(cè)量繪圖系統(tǒng)主菜單
;;;時(shí)間:2005年12月
;;;一一一一一一一一一一一一
;;;定義一個(gè)函數(shù),函數(shù)名為C:clcad
(defun c:clcad()
;;;JJo載DCL文件
(if;︱if1︳;(and(not dcl-id)(<(setq dcl·id(10addialog”
C:/acadwin/clcad.dcl”))O))(exit));endifl
;;;激活出對(duì)話(huà)框
(if;︱if2︳;(not new—dialog”clcadss”dcl—id))(exit);endif2
(setq what—next 4)
(while(<2 what—next);設(shè)置循環(huán)
(action—tile“l(fā)x”(C:lx)”);接受在lx按鈕上的操作
(action—tile“jkd(C:jkd)”);接受在jkd按鈕上的操作
(action-tile”zhsh””(e:zhsh)”);接受在zhsh按鈕上的操作
(action-tile”ckd””(C:ckd)”);接受在ckd按鈕上的
操作
(action-tile”fd”~(c:fd)”);接受在fd按鈕上的操作
(action-tile“output”(c:output)”);接受在output按鈕上的操作
(action·tile”accept””(done—dialog 1)”);接受在OK按鈕上的操作
(action—tile”help””(done-dialog 3)”);接受在HELP按鈕上的操作
(setq what next(start-dialog));啟動(dòng)對(duì)話(huà)框
(cond
((=what-next 1)
(c:jkdlIshr) 。
(setq what—next 4)
(if(not(new-dialog1"clcadss"dcl—id))(exit)))
((=what.next 3)
(C:help)
(setq what-next 4)
(if(not(new—dialog“clcadss”dcl—id))(exit)))
);cond
);while
(unload·dialog dcl—id);卸載DCL文件
(princ)
);defun;函數(shù)結(jié)束
;;;一一一一一一一
4 結(jié)語(yǔ)
上述源程序僅是“測(cè)量繪圖系統(tǒng)”軟件的主菜單調(diào)用情況,內(nèi)部功能函數(shù)的實(shí)現(xiàn)尚有許多內(nèi)容,在此不一一贅述了。以上為筆者在開(kāi)發(fā)過(guò)程中的點(diǎn)滴體會(huì),僅供工程設(shè)計(jì)人員參考,希望能起到拋磚引玉的作用。
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書(shū)Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國(guó)專(zhuān)業(yè)技術(shù)人員計(jì)算機(jī)應(yīng)用能力考試用書(shū) AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開(kāi)始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開(kāi)始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