服務(wù)熱線
0755-26825352
摘要:AutoCAD R12版新增加了BHATCH命令來補(bǔ)充和加強(qiáng)HATCH命令功能。
關(guān)鍵詞:AutoCAD R12 命令 應(yīng)用
Auto中填充陰影線圖案(PAT文件)是一項(xiàng)十分有用的功能,在各種圖形中都可能用到。我們?cè)陂_發(fā)工程地質(zhì)時(shí),經(jīng)常要在圖面上的指定區(qū)域內(nèi)填充巖性花紋圖案,而且填充區(qū)域不規(guī)則。在Auto低版本中,填充花紋命令僅有一條HATCH,使用HATCH時(shí),需選擇圍成閉合區(qū)域的有關(guān)實(shí)體,若實(shí)體選擇不全則會(huì)使填充出現(xiàn)混亂,特別是當(dāng)填充區(qū)域由若干線、弧、園等實(shí)體交叉組合而成時(shí),就要沿閉合區(qū)域的各點(diǎn)繪制一條PLINE線,然后以這條線作為填充邊界線,在填充完成以后還要將這條線刪除,比較麻煩。
Auto R12版新增加了BHATCH命令來補(bǔ)充和加強(qiáng)HATCH命令功能。BHATCH命令以窗口交互方式執(zhí)行,它將自動(dòng)以多義線來定義邊界,然后忽略全部或部份不是邊界的區(qū)域,完成填充后自行刪除多義線,還可以使邊界內(nèi)的圖形和文字避開填充圖案。簡言之,填充時(shí)只需要用鼠標(biāo)器點(diǎn)取閉合區(qū)域內(nèi)一點(diǎn)就可完成填充。為了更方便地使用HATCH和BHATCH這兩個(gè)命令,在R12版中還新增加了一條命令BPOLY。使用BPOLY可迅速生成一封閉曲線的邊界,即通過點(diǎn)取封閉區(qū)域內(nèi)任意一點(diǎn)形成本區(qū)域的邊界線,根據(jù)返回的邊界線可使用HATCH填充花紋圖案,也可使用AREA來計(jì)算封閉區(qū)域的面積和周長。有關(guān)這兩條命令的操作,可參閱Auto R12的使用說明書,通過簡單的練習(xí)就可以掌握。本文想就如何在AUTO LSP中調(diào)用這兩個(gè)命令進(jìn)行編程的問題做一簡單介紹。
BHATCH和BPOLY命令不同于一般的Auto命令,它們是用ADS應(yīng)用程序開發(fā)的,如果想在圖形編輯狀態(tài)下或在AUTO LISP中使用這兩個(gè)命令, 就要在Auto初始化時(shí)加載名為AAPP的ADS程序,方法是在當(dāng)前搜索路徑上是否有A.ADS文件,這是一個(gè)純文本的ASCII碼文件,在這個(gè)文件中如有一行為AAPP,那么在進(jìn)入A圖形時(shí)自動(dòng)加載AAPP,在Auto的Command:提示符下調(diào)用AUTO LISP函數(shù)(ADS),將得到當(dāng)前已加載的全部ADS應(yīng)用程序的信息。如已加載AAPP,在“Command:”就可以使用BPOLY和BHATCH。
在AUTO LISP語言中,不能像調(diào)用一般命令那樣用(COMMAND “命令”)來調(diào)用BPOLY和BHATCH,而是用(C:BPOLY 點(diǎn))、(C:BHATCH 點(diǎn))來調(diào)用,執(zhí)行(C:BHATCH 點(diǎn))之前要通過SETVAR對(duì)幾個(gè)系統(tǒng)變量進(jìn)行設(shè)置,HPANG是圖案填充角度,HPNAME是圖案填充名稱,HPSCALE是圖案填充比例系數(shù)。以下是一個(gè)簡單的填充花紋圖案的LISP程序:
程序1清單:
(setq yf$ (getstring (strcat "花紋代號(hào): "))) ;輸入花紋代號(hào)
(setq bl (getreal "\n比例<1>:")) ;輸入比例
(if (= bl nil) (setq bl 1.0)) ;比例約定值為1
(setq ang (getreal "\n角度<0>:")) ;輸入角度
(if (= ang nil) (setq ang 0.0)) ;角度約定值為0
(setq pt (getpoint "\n選擇區(qū)域內(nèi)任意一點(diǎn):")) ;輸入?yún)^(qū)域內(nèi)任意一點(diǎn)坐標(biāo)
(setvar "hpang" ang) ;設(shè)置填充角度為ang
(setvar "hpscale" bl) ;設(shè)置填充比例為bl
(setvar "hpname" yf$) ;設(shè)置填充花紋為yf$
(while pt ;PT為真時(shí)執(zhí)行循環(huán)體內(nèi)程序,否則退出
(c:bhatch pt)
(setq pt (getpoint "\n選擇區(qū)域內(nèi)任意一點(diǎn):")) ;輸入?yún)^(qū)域內(nèi)任意一點(diǎn)坐標(biāo)繼續(xù)填充
);while pt
用程序1填充花紋時(shí),選定點(diǎn)周圍不能形成一個(gè)閉和區(qū)域時(shí),除未填充外也不顯示任何信息,因此需要增加一個(gè)判斷,用程序2來實(shí)現(xiàn)。
程序2清單:
(setq yf$ (getstring (strcat "花紋代號(hào): "))) ;輸入花紋代號(hào)
(setq bl (getreal "\n比例<1>:")) ;輸入比例
(if (= bl nil) (setq bl 1.0)) ;比例約定值為1
(setq ang (getreal "\n角度<0>:")) ;輸入角度
(if (= ang nil) (setq ang 0.0)) ;角度約定值為0
(setq pt (getpoint "\n選擇區(qū)域內(nèi)任意一點(diǎn):")) ;輸入?yún)^(qū)域內(nèi)任意一點(diǎn)坐標(biāo)
(while pt ;PT為真時(shí)執(zhí)行循環(huán)體內(nèi)程序,否則退出
(setq e (c:bpoly pt)) ;得到PT點(diǎn)所在的邊界線,
(if e ;如邊界線存在就填充,否則不填充
(progn
(command "hatch" yf$ bl ang e "") ;填充花紋
(command "erase" e "") ;刪除邊界線
(princ "\n填充完畢") ;打印填充完畢
);progn
(princ "\n邊界線不存在,不能填充")
);if
(setq pt (getpoint "\n選擇區(qū)域內(nèi)任意一點(diǎn):")) ;輸入?yún)^(qū)域內(nèi)任意一點(diǎn)坐標(biāo)繼續(xù)填充
);while pt
為了更加方便實(shí)用,可以編制花紋圖案的圖標(biāo)菜單,當(dāng)提示輸入花紋圖案時(shí),激活圖標(biāo)菜單。我們?cè)趯?shí)際運(yùn)用時(shí),從BPOLY返回的邊界實(shí)體的各點(diǎn)坐標(biāo)中計(jì)算出一個(gè)范圍,該范圍內(nèi)的文本實(shí)體同時(shí)選中,使這些文本避開陰影線圖案。
以上兩個(gè)小程序所實(shí)現(xiàn)的功能與BPOLY和BHATCH相同,其實(shí)際意義不在于此,而是想通過以上介紹,能夠?qū)⑵鋺?yīng)用到解決更為復(fù)雜的情況上,例如我們?cè)诘刭|(zhì)開發(fā)中,使用上述方法解決了復(fù)雜的不規(guī)則區(qū)域自動(dòng)填充多種花紋圖案的程序,編寫了對(duì)花紋圖案的編輯命令,即對(duì)已經(jīng)繪制到圖形中的花紋進(jìn)行編輯修改(篇幅所限源程序不列出) 。這里僅簡介使用方法,在運(yùn)行本程序之前,所編輯花紋的區(qū)域已經(jīng)存在。
在Command提示符下用LOAD 加載本程序,計(jì)算機(jī)提示:
I.選目標(biāo) T.改花紋代號(hào) A.比例角度 C.改顏色 P.改邊界 X.結(jié)束<X>:
選項(xiàng)I: 選定要編輯的花紋圖案,只需用鼠標(biāo)點(diǎn)取花紋圖案上的一點(diǎn)即可;
選項(xiàng)T: 修改花紋圖案的代號(hào),輸入新的花紋代號(hào);
選項(xiàng)A: 修改花紋圖案的比例角度,輸入新的比例和角度;
選項(xiàng)C: 修改花紋圖案的顏色,輸入新的顏色號(hào);
選項(xiàng)P: 是修改花紋圖案的邊界線,提示選擇欲修改的邊界線,然后是一個(gè)類似PEDIT的多義線頂點(diǎn)編輯命令,可將頂點(diǎn)位置移動(dòng)或者刪除,待新的邊界線修改完成以后,圖面上的花紋圖案立即按新的邊界更新。需注意的一點(diǎn)是在修改邊界線之前選擇花紋圖案實(shí)體時(shí),一定要使選擇點(diǎn)位于新的邊界線之內(nèi),否則圖案將填充在新邊界線之外。
以前繪制到圖形中的花紋圖案,如果發(fā)現(xiàn)代號(hào)、角度、比例、顏色、邊界線等不滿意時(shí),就要將其刪除再重新繪制,而且還不能保證重新繪制的花紋圖案完全正確,使用本程序就可以隨心所欲地非常方便地對(duì)花紋進(jìn)行編輯修改,直到滿意為止。
在繪制工程地質(zhì)剖面圖時(shí),巖層產(chǎn)狀在剖面拐點(diǎn)處的視傾角將發(fā)生變化,填充花紋時(shí)在拐點(diǎn)兩側(cè)應(yīng)該使用不同的視傾角,而且在拐點(diǎn)處花紋應(yīng)該連結(jié)正確。我們使用了以上兩個(gè)命令編寫了一個(gè)LISP程序,比較好的解決了這個(gè)問題,繪制的圖形如上圖所示。繪制褶皺構(gòu)造的地質(zhì)剖面圖,也可使用本程序。