[精品]CAD批量處理工具


 CAD批量處理工具是基於AutoCAD二次開發的批處理插件。將程序加載到CAD中,使用自定義的Lisp代碼就可對多個文檔進行批量操作。

1.文件說明

CAD批量處理工具批處理程序包含兩個文件:一是基於VBA的程序,二是基於Lisp的程序。

2.安裝運行

(1)將程序拷入CAD安裝路徑下的Support文件夾下,如E:\Program Files\AutoCAD 2007\Support;

(2)運行CAD,在命令行中鍵入"APPLOAD",在彈出的選擇對話框中選擇上一步中Support文件下的.lsp,點擊"加載",關閉對話框;

(3)如果加載成功,命令行中輸出"已成功加載.lsp",輸入命令BAT即可運行程序。程序主界面如下:

注意:如果需要CAD啟動時即自動加載此工具,需要修改CAD安裝路徑E:\Program Files\AutoCAD 2007\Support下acad2007.lsp

(arxload"vel.arx")
   (if (not (= (substr (ver) 1 11) "Visual LISP"))
   (load "acad2007doc.lsp");
)
;; Silent load.
(princ)可在代碼中的任何地方用下列常數代替實際值:

  3.工具說明

本程序具體操作流程如下:

(1)【添加文件】或【添目錄】來選擇要進行批量處理的Dwg文件,也可以通過【刪除】和【全清】按鈕來操作清除文件列表中的文件;

(2)單擊【編輯】按鈕,彈出編輯代碼窗口,如圖3-2所示。用戶可編輯、打開、保存代碼,編輯完成后,單擊【關閉】,程序會自動保存編輯內容,並更新顯示在代碼窗口(如果使用腳本語言,請選擇【Script代碼】);

(3)點擊【開始批處理】,程序將對文件列表中的文件分別打開,並按代碼窗口中的代碼操作(如果勾選"處理完成后自動存盤",操作結果文件將覆蓋原始數據)

4.代碼分析

本程序的測試用例是兩幅宗地圖,現在的要求是:

  • 將JZD和JZP層的所有文字字體改為宋體;
  • 將HZ樣式改為txt.shx、hztxt.shx(大字體);
  • 將JZD、JZP和JMD層所有對象顏色改為紅色。

測試代碼為測試用例文件夾下的"宗地圖修改20140820.lsp",現對其中比較關鍵的代碼進行說明:

(1)獲取某層的文字

  1. (setq ss (ssget "x" (list (cons 0 "*TEXT") (cons 8 "JZD"))));

使用了ssget建立選擇要素集,其中"x"代表選擇所有,0和8表示不同的組,*TEXT是過濾選擇文本,JZD要進行選擇的圖層。

(2)新建或更改文本樣式

  1. (command "_STYLE" "ST" "SimSunb.ttf" "0" "1" "" "" "")
  2. (command "_style" "hztxt" "txt.shx,hztxt.shx" 0 0.8 0 "n" "n" "n")

新建樣式使用了_style命令,"ST"表示樣式名稱,"SimSunb.ttf"字體名稱;如果要使用大字體的樣式,字體參數設置為如"txt.shx,hztxt.shx";如果樣式名已存在命令將人修改參數,如果不存在,則會新建立。

(3)將某層的顏色改為指定的顏色

  1. (vla-put-color layer color_no)

調用系統中的函數來修改層顏色,其函數原型如上所示,它在Express Tools中,注意要確保安裝程序安裝了此組件。其中顏色參數使用枚舉值:

常數

描述

vbBlack

0x0

黑色

vbRed

0xFF

紅色

vbGreen

0xFF00

綠色

vbYellow

0xFFFF

黃色

vbBlue

0xFF0000

藍色

vbMagenta

0xFF00FF

紫紅色

vbCyan

0xFFFF00

青色

vbWhite

0xFFFFFF

白色

(4)將層對象中的顏色隨層

  1. (command "_.chprop" "_all" "" "_color" "_bylayer" "")

將圖層的顏色修改,並不能將已有的對象的顏色改掉,需要將圖層對象的顏色設置為隨層。

5.常見問題

(1)打開文件是提示選擇字體

CAD的字體中缺少這種字段,要么使用另一個字體,要么去下載缺失的字體,並放在CAD安裝路徑下的Fonts文件夾下,如E:\Program Files\AutoCAD 2007\Fonts

(2)添加某一個圖形時,不能加載到列表中

本程序的目的是進行批量處理,至少要同時選擇兩個圖形文件才能正確加載到文件列表,如果只選擇一個文件時,則不能正確添加。

(3)運行時報錯,保存文檔時出錯

一般地,在批處理時,都需要勾選"處理完成后自動存盤",但如果處理之前此圖形已打開,保存時就會報錯,所以,在批處理時圖形不會打開。

(4)怎樣驗證操作是否失敗?

驗證操作最主要的方式是通過對比測試案例中的錯誤是否修正,如果執行的代碼,會彈出CAD的幫助窗口,建議在批量處理之前,測試好Lisp代碼。

(5)命令行報錯:沒有定義vlax-get-acad-object

在測試Lisp代碼中,使用了vlax-get-acad-object這個對象,而它是屬性Express Tools中的,所以在安裝軟件時,要選擇安裝Express Tools

(6)單獨測試lisp通過,批處理失敗

只要單獨測試lisp代碼能夠達到目的,批量處理一般能達到目的。需要注意的是,如果lisp代碼中定義了無參的函數,只需將函數里的內容復制到BatchProc的代碼窗口,而無需整個函數;如果lisp代碼中定義了帶參的函數,需要將整個函數復制進去,並將調用的命令復制在后面。

(7)出現異常: 0xC0000005 (訪問沖突)

調用BAT命令出現"出現異常: 0xC0000005 (訪問沖突)", 一般在調用command時候會出現這種情況,只能重裝CAD了。

(8)報錯"info或'info透明調用 ***是否垂直?"

調用系統打印命令(-plot)批量打印宗地圖,在測試機上測試通過,但在客戶機上報錯:"使用命令:info或'info透明調用 ***是否垂直? <N>",只能打印第一個文件。

CAD中,有許多的命令時可以透明使用的,透明命令其實就是可以讓用戶在使用另一個命令時,依然能夠在命令行中輸入這些命令的功能。所以透明命令會經常被用於更改圖形的設置或顯示。當系統完成了透明命令后,就會恢復執行原命令了。

測試機上能通過說明是客戶機環境問題,我嘗試把CASS環境關閉后,即可實現批量打印。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM