[精品]CAD批量處理工具

 須要此工具請Q:3567 618 336函數

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

1.文件說明 測試

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

2.安裝運行 spa

(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.lspblog

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

3.工具說明 ip

本程序具體操做流程以下:

(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環境關閉後,便可實現批量打印。

相關文章
相關標籤/搜索