[精品]CAD批量处理工具
CAD批量處理工具是基于AutoCAD二次開發(fā)的批處理插件。將程序加載到CAD中,使用自定義的Lisp代碼就可對多個(gè)文檔進(jìn)行批量操作。
1.文件說明
CAD批量處理工具批處理程序包含兩個(gè)文件:一是基于VBA的程序,二是基于Lisp的程序。
2.安裝運(yùn)行
(1)將程序拷入CAD安裝路徑下的Support文件夾下,如E:Program FilesAutoCAD 2007Support;
(2)運(yùn)行CAD,在命令行中鍵入"APPLOAD",在彈出的選擇對話框中選擇上一步中Support文件下的.lsp,點(diǎn)擊"加載",關(guān)閉對話框;
(3)如果加載成功,命令行中輸出"已成功加載.lsp",輸入命令BAT即可運(yùn)行程序。程序主界面如下:
注意:如果需要CAD啟動(dòng)時(shí)即自動(dòng)加載此工具,需要修改CAD安裝路徑E:Program FilesAutoCAD 2007Support下acad2007.lsp
(arxload"vel.arx") (if (not (= (substr (ver) 1 11) "Visual LISP")) (load "acad2007doc.lsp"); ) ;; Silent load. (princ)可在代碼中的任何地方用下列常數(shù)代替實(shí)際值:
3.工具說明
本程序具體操作流程如下:
(1)【添加文件】或【添目錄】來選擇要進(jìn)行批量處理的Dwg文件,也可以通過【刪除】和【全清】按鈕來操作清除文件列表中的文件;
(2)單擊【編輯】按鈕,彈出編輯代碼窗口,如圖3-2所示。用戶可編輯、打開、保存代碼,編輯完成后,單擊【關(guān)閉】,程序會(huì)自動(dòng)保存編輯內(nèi)容,并更新顯示在代碼窗口(如果使用腳本語言,請選擇【Script代碼】);
(3)點(diǎn)擊【開始批處理】,程序?qū)ξ募斜碇械奈募謩e打開,并按代碼窗口中的代碼操作(如果勾選"處理完成后自動(dòng)存盤",操作結(jié)果文件將覆蓋原始數(shù)據(jù))
4.代碼分析
本程序的測試用例是兩幅宗地圖,現(xiàn)在的要求是:
將JZD和JZP層的所有文字字體改為宋體;
將HZ樣式改為txt.shx、hztxt.shx(大字體);
將JZD、JZP和JMD層所有對象顏色改為紅色。
測試代碼為測試用例文件夾下的"宗地圖修改20140820.lsp",現(xiàn)對其中比較關(guān)鍵的代碼進(jìn)行說明:
(1)獲取某層的文字
(setq ss (ssget "x" (list (cons 0 "*TEXT") (cons 8 "JZD"))));
使用了ssget建立選擇要素集,其中"x"代表選擇所有,0和8表示不同的組,*TEXT是過濾選擇文本,JZD要進(jìn)行選擇的圖層。
(2)新建或更改文本樣式
(command "_STYLE" "ST" "SimSunb.ttf" "0" "1" "" "" "")
(command "_style" "hztxt" "txt.shx,hztxt.shx" 0 0.8 0 "n" "n" "n")
新建樣式使用了_style命令,"ST"表示樣式名稱,"SimSunb.ttf"字體名稱;如果要使用大字體的樣式,字體參數(shù)設(shè)置為如"txt.shx,hztxt.shx";如果樣式名已存在命令將人修改參數(shù),如果不存在,則會(huì)新建立。
(3)將某層的顏色改為指定的顏色
(vla-put-color layer color_no)
調(diào)用系統(tǒng)中的函數(shù)來修改層顏色,其函數(shù)原型如上所示,它在Express Tools中,注意要確保安裝程序安裝了此組件。其中顏色參數(shù)使用枚舉值:
|
常數(shù) |
值 |
描述 |
|
vbBlack |
0x0 |
黑色 |
|
vbRed |
0xFF |
紅色 |
|
vbGreen |
0xFF00 |
綠色 |
|
vbYellow |
0xFFFF |
黃色 |
|
vbBlue |
0xFF0000 |
藍(lán)色 |
|
vbMagenta |
0xFF00FF |
紫紅色 |
|
vbCyan |
0xFFFF00 |
青色 |
|
vbWhite |
0xFFFFFF |
白色 |
(4)將層對象中的顏色隨層
(command "_.chprop" "_all" "" "_color" "_bylayer" "")
將圖層的顏色修改,并不能將已有的對象的顏色改掉,需要將圖層對象的顏色設(shè)置為隨層。
5.常見問題
(1)打開文件是提示選擇字體
CAD的字體中缺少這種字段,要么使用另一個(gè)字體,要么去下載缺失的字體,并放在CAD安裝路徑下的Fonts文件夾下,如E:Program FilesAutoCAD 2007Fonts
(2)添加某一個(gè)圖形時(shí),不能加載到列表中
本程序的目的是進(jìn)行批量處理,至少要同時(shí)選擇兩個(gè)圖形文件才能正確加載到文件列表,如果只選擇一個(gè)文件時(shí),則不能正確添加。
(3)運(yùn)行時(shí)報(bào)錯(cuò),保存文檔時(shí)出錯(cuò)
一般地,在批處理時(shí),都需要勾選"處理完成后自動(dòng)存盤",但如果處理之前此圖形已打開,保存時(shí)就會(huì)報(bào)錯(cuò),所以,在批處理時(shí)圖形不會(huì)打開。
(4)怎樣驗(yàn)證操作是否失敗?
驗(yàn)證操作最主要的方式是通過對比測試案例中的錯(cuò)誤是否修正,如果執(zhí)行的代碼,會(huì)彈出CAD的幫助窗口,建議在批量處理之前,測試好Lisp代碼。
(5)命令行報(bào)錯(cuò):沒有定義vlax-get-acad-object
在測試Lisp代碼中,使用了vlax-get-acad-object這個(gè)對象,而它是屬性Express Tools中的,所以在安裝軟件時(shí),要選擇安裝Express Tools
(6)單獨(dú)測試lisp通過,批處理失敗
只要單獨(dú)測試lisp代碼能夠達(dá)到目的,批量處理一般能達(dá)到目的。需要注意的是,如果lisp代碼中定義了無參的函數(shù),只需將函數(shù)里的內(nèi)容復(fù)制到BatchProc的代碼窗口,而無需整個(gè)函數(shù);如果lisp代碼中定義了帶參的函數(shù),需要將整個(gè)函數(shù)復(fù)制進(jìn)去,并將調(diào)用的命令復(fù)制在后面。
(7)出現(xiàn)異常: 0xC0000005 (訪問沖突)
調(diào)用BAT命令出現(xiàn)"出現(xiàn)異常: 0xC0000005 (訪問沖突)", 一般在調(diào)用command時(shí)候會(huì)出現(xiàn)這種情況,只能重裝CAD了。
(8)報(bào)錯(cuò)"info或'info透明調(diào)用 ***是否垂直?"
調(diào)用系統(tǒng)打印命令(-plot)批量打印宗地圖,在測試機(jī)上測試通過,但在客戶機(jī)上報(bào)錯(cuò):"使用命令:info或'info透明調(diào)用 ***是否垂直? <N>",只能打印第一個(gè)文件。
CAD中,有許多的命令時(shí)可以透明使用的,透明命令其實(shí)就是可以讓用戶在使用另一個(gè)命令時(shí),依然能夠在命令行中輸入這些命令的功能。所以透明命令會(huì)經(jīng)常被用于更改圖形的設(shè)置或顯示。當(dāng)系統(tǒng)完成了透明命令后,就會(huì)恢復(fù)執(zhí)行原命令了。
測試機(jī)上能通過說明是客戶機(jī)環(huán)境問題,我嘗試把CASS環(huán)境關(guān)閉后,即可實(shí)現(xiàn)批量打印。
總結(jié)
以上是生活随笔為你收集整理的[精品]CAD批量处理工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows版python3.7安装卸
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?