動作宏與LISP插件的實例應用:處理底圖(附代碼)

  • A+
所屬分類:圖文教程

建筑行業設計從業者,特別是建筑專業以外的其他專業,需要在對建筑底圖進行處理后才能進行本專業繪制。處理底圖本身是件很耗費時間的一件事。那么有沒有一種辦法能夠簡化這個步驟,節省些時間。那就再讓我來扒一扒。

簡化畫圖步驟,不外乎兩種方式:錄制動作宏外部插件LISP

那么無論那種方式,我們首先要捋一捋底圖處理都包含什么操作,也即你要無論是錄制還是外部插件的功能需求是什么。

以建筑底圖處理為例說明:就是刪除不必要的標注。包括:尺寸、文字、門窗編號等。另,有些公司有明確要求,為突顯本專業東西,要求將底圖設為顏色灰8。

需求有了,接下來就是進行工具(動作宏和編程)與需求匹配。

需求:刪除不必要標注,改變底圖顏色。

操作:由于尺寸、文字、門窗編號等有單獨圖層,那么通過或關閉、或凍結、或刪除圖層即可實現第一條需求。關閉圖層存在不可靠,因此只考慮凍結和刪除。改變圖層顏色即可實現第二需求。

匹配:錄制宏與外部插件LISP程序都存在選擇集與界面制約。因此,刪除不易實現,選擇凍結圖層。

方法一:將底圖處理過程錄制成動作宏

調出圖層窗口的命令是layer,其命令行命令形式實現是—layer。

以下一個小辦公室的圖紙為例說明。

動作宏與LISP插件的實例應用:處理底圖(附代碼)

錄制前,要明確你都要凍結的圖層名和改變顏色的圖層名。這些需要你根據自己的圖紙進行確認。基本上圖層名大體一樣的,根據你的圖紙,設置一次之后,只要建筑專業設計人員不再擅自改圖層或增加圖層內對你有用的東西,就可以一直用的。也是之后LISP代碼僅且僅需修改的東西。

需要凍結圖層名:

小尺寸標注:PUB_DIM;標高標注:DIM_ELEV;門窗編號:WINDOW_TEXT;軸線:DOTE。

需要設灰8的圖層名:

除凍結外的其他所有圖層:WALL;STAIR;WINDOW;AXIS;散水。

錄制之前,最好把這些圖層復制到一個記事本里,且圖層與圖層之前用英文,分割。記住是英文逗號,記事本會顯示一個點。

動作宏與LISP插件的實例應用:處理底圖(附代碼)

錄制宏過程如下,看動圖。

1.凍結圖層

動作宏與LISP插件的實例應用:處理底圖(附代碼)

2.改變圖層顏色,灰8的真彩色是:128,128,128。不用記,可以在圖層設置顏色處查詢。

動作宏與LISP插件的實例應用:處理底圖(附代碼)

動作宏與LISP插件的實例應用:處理底圖(附代碼)

3.錄制完成,使用。

動作宏與LISP插件的實例應用:處理底圖(附代碼)

如果后邊發現建筑圖層有變化,也無需重新錄制,只要將輸入的圖層處設為“暫停以請求用戶輸入”,直接在使用過程中修改即可。以凍結墻體為例。若是回放最后跳出回放錯誤,單擊繼續回放即可。

動作宏與LISP插件的實例應用:處理底圖(附代碼)

方法二:將底圖處理過程編程,建立LISP程序文檔

簡而言之就是將剛才執行的命令過程,用LISP語言進行編程。

程序如下:

 

DEFUN C:DTCL()?????????????

? (PROMPT "\n處理底圖")?

? (SETVAR "CMDECHO" 0)

? (COMMAND "LAYER" "U" "*" "")

? (VL-LOAD-COM)

? (command "undo" "be")

? (COMMAND "LAYER" "S" "0" "F" "PUB_DIM,WINDOW_TEXT,DIM_ELEV,DOTE" "C" "T" "128,128,128" "WALL,STAIR,WINDOW,AXIS,散水" "")

? (PROMPT "\r處理完畢")

? (command "undo" "e")

? (COMMAND "REGEN")

? (SETVAR "CMDECHO" 1)

? (PRINC)

 

程序說明:

按行說明,前面數字代表行。

1?? 定義底圖處理函數名:DTCL

2?? 輸入命令行顯示信息:處理底圖。即輸出字符串。與C/C++程序中的Print輸入字符串類似。

3?? 是否顯示函數運行回顯。就是layer凍結和設置顏色的過程是否顯示,此處設置為0,意為不顯示過程。此行與(SETVAR "CMDECHO" 1)行可一起刪除,不影響運行。自行查驗區別。

4?? command是lisp函數,layer為cad命令,lisp中調用cad命令,即用command函數。調用layer命令,u是解鎖,*不特指圖層,意為將所有圖層均解鎖。“”回車,結束命令。

5? VL-LOAD-COM是初始化activeX環境,用于隨意調用lisp函數,如無此條,當調用lisp函數時,命令行會提示沒有什么什么函數。類似c++語言中的表頭文件預處理#include<文件名>。

6? 調用cad命令undo,撤銷當前執行的其他命令。

7? 設置當前圖層為0層,凍結圖層PUB_DIM,WINDOW_TEXT,DIM_ELEV,DOTE,設置圖層WALL,STAIR,WINDOW,AXIS,散水顏色為灰8。此條就是將剛才錄制宏使用的命令過程變成了代碼。且多了設置當前層。此行為需要后期修改的位置,凍結圖層及設置顏色圖層有變動,修改此處即可。其他行不用動。

8? 命令行輸出:處理完畢。

9? 呼應第6行。結束。

10 圖紙重生成,re。

11 應第3行。打開回顯。

12 加載完成。

注:本代碼CAD2010及CAD2014版本下均對本文小辦公室例圖進行處理,結果均可行。因本代碼經查閱相關書籍及網絡相關LISP語言后進行編譯,因非計算機相關專業出身,若有不當,請大佬斧正。

代碼使用,如下動圖。

動作宏與LISP插件的實例應用:處理底圖(附代碼)

小結

動作宏與LISP程序在使用上來說,前者容易掌握,后者需要一定語言基礎,且需要熟知LISP函數調用cad函數的語言規則。LISP在對于復雜問題處理上更簡易,畢竟CAD本身就是代碼組成。無論選擇哪種,只要便于畫圖,均可。畢竟我們的遠大理想都是走上人生巔峰,然后成功迎娶白富美。

  • CAD自學網(ID:cadzxw)
  • CAD自學網官方訂閱號,關注我,每天免費獲得各種設計干貨技巧。
  • weinxin
  • 育設學堂(ID:yushexuetang)
  • 育設學堂服務號,關注我,觀看各種設計類軟件及職場辦公視頻教程。
  • weinxin
Trenson Chou

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: