AutoCAD LISP 圖層的性質與群組篩選方法
不想要一個一個手動新增,可以做成巨集或是LISP來快速新增圖層的性質 (Property) 與群組 (Group) 篩選 (Filter) 分類。
方法1:使用指令(-LAYER)
範例1:新增圖層的性質篩選(名稱:凍結圖層,性質:凍結圖層)
1. 輸入指令:-LAYER
輸入選項 [?/建立(M)/設定(S)/新建(N)/更名(R)/打開(ON)/關閉(OFF)/顏色(C)/線型(L)/線粗(LW)/透明度(TR)/材料(MAT)/出圖(P)/凍結(F)/解凍(T)/鎖住(LO)/解鎖(U)/狀態(A)/描述(D)/調和(E)/外部參考(X)]:
2. 輸入:filter (此未顯示在指令選項中,為隱藏)
輸入圖層篩選選項 [新建(N)/設定(S)/更名(R)/編輯(E)/刪除(D)/結束(X)]:
3. 輸入:N (新建)
選取圖層篩選類型 [群組(G)/性質(P)]:
4. 輸入:P (性質)
輸入父系圖層篩選 <全部>:
5. 輸入:直接按下Enter鍵 (此為不在任何分支之下;如果要在已有篩選之子項要輸入此項)
輸入性質篩選定義:
6. 輸入:frozen=="true" (此為凍結圖層)(如果多條件要同時輸入在此處)
輸入圖層篩選的名稱:
7. 輸入:凍結圖層 (此為決定篩選名稱,不能空白或重複名稱)
輸入圖層篩選選項 [新建(N)/設定(S)/更名(R)/編輯(E)/刪除(D)/結束(X)]:
8. 輸入:直接按下Enter鍵結束指令 (如果沒有要繼續輸入)
這樣就新增圖層篩選完成
指令巨集:
^C^C-layer;filter;n;p;;frozen=="true";凍結圖層;;
LISP:
(Command "-layer" "filter" "n" "p" "" "frozen==\"true\"" "凍結圖層" "")
補充性質篩選定義:
名稱:NAME,要篩選的圖層名稱(可用萬用字元)
關閉:OFF,true/false
凍結:frozen,true/false
鎖住:locked,true/false
顏色:COLOR,顏色代號
線型:LINETYPE,線型名稱
線粗:LINEWEIGHT,線粗數值
透明度:TRANSPARENCY,數值
出圖:plottable,true/false
新視埠凍結:NEWVPFROZEN,true/false
視埠顏色:VPCOLOR,顏色代號
視埠線型:VPLINETYPE,線型名稱
視埠線粗:VPLINEWEIGHT,線粗數值
視埠透明度:VPTRANSPARENCY,數值
同一行條件(同時達成):AND 分隔
下一行條件:OR 分隔
範例2:新增圖層的性質篩選(名稱:篩選圖層,性質:圖層+顏色)
篩選條件1:圖層名稱=A-*,顏色=1號色
篩選條件2:圖層名稱=B-*,顏色=2號色
步驟1~5同範例1
6. 輸入:NAME=="A-*" AND COLOR=="1" OR NAME=="B-*" AND COLOR=="2"。
輸入圖層篩選的名稱:
7. 輸入:篩選圖層 (此為決定篩選名稱,不能空白或重複名稱)
輸入圖層篩選選項 [新建(N)/設定(S)/更名(R)/編輯(E)/刪除(D)/結束(X)]:
8. 輸入:直接按下Enter鍵結束指令 (如果沒有要繼續輸入)
這樣就新增圖層篩選完成
指令巨集:
^C^C-layer;filter;n;p;;NAME=="A-*" AND COLOR=="1" OR NAME=="B-*" AND COLOR=="2";篩選圖層;;
LISP:
(Command "-layer" "filter" "n" "p" "" "NAME==\"A-*\" AND COLOR==\"1\" OR NAME==\"B-*\" AND COLOR==\"2\"" "篩選圖層" "")
範例3:新增圖層的群組篩選(名稱:篩選群組,群組:指定名稱)
群組圖層:圖層1、圖層2、圖層3
步驟1~3同範例1
選取圖層篩選類型 [群組(G)/性質(P)]:
4. 輸入:G (群組)
輸入父系圖層篩選 <全部>:
5. 輸入:直接按下Enter鍵 (此為不在任何分支之下;如果要在已有篩選之子項要輸入此項)
輸入要包括的圖層名稱清單:
6. 輸入:圖層1,圖層2,圖層3 (如果多個指定圖層用逗號(,)分隔)
輸入圖層篩選的名稱:
7. 輸入:群組圖層 (此為決定篩選名稱,不能空白或重複名稱)
輸入圖層篩選選項 [新建(N)/設定(S)/更名(R)/編輯(E)/刪除(D)/結束(X)]:
8. 輸入:直接按下Enter鍵結束指令 (如果沒有要繼續輸入)
這樣就新增圖層篩選完成
指令巨集:
^C^C-layer;filter;n;g;;圖層1,圖層2,圖層3;群組圖層;;
LISP:
(Command "-layer" "filter" "n" "g" "" "圖層1,圖層2,圖層3" "群組圖層" "")
範例4:新增圖層的群組篩選(名稱:篩選群組,群組:指定開頭名稱)
群組圖層:圖層開頭A-都加入
步驟1~5同範例3
6. 輸入:圖層1,圖層2,圖層3 (如果多個指定圖層用逗號(,)分隔)
輸入圖層篩選的名稱:
7. 輸入:群組圖層 (此為決定篩選名稱,不能空白或重複名稱)
輸入圖層篩選選項 [新建(N)/設定(S)/更名(R)/編輯(E)/刪除(D)/結束(X)]:
8. 輸入:直接按下Enter鍵結束指令 (如果沒有要繼續輸入)
這樣就新增圖層篩選完成
指令巨集:
^C^C-layer;filter;n;g;;A-*;群組圖層;;
LISP:
(Command "-layer" "filter" "n" "g" "" "A-*" "群組圖層" "")
有空再補其他範例
方法2:使用LISP對字典(DICTIONARY)進行修改
字典 ACAD_LAYERFILTERS:顯示圖層性質篩選
字典 ACLYDICTIONARY:顯示圖層篩選(包含性質和群組篩選)
物件標籤:AcLyLayerFilter 圖層性質篩選
AcLyLayerGroup 圖層群組篩選
圖層篩選的 XRecord 數據:(照順序)
(1 . 篩選名稱)
(1 . 圖層名稱)
(1 . 顏色)
(1 . 線型)
(70 . 圖層狀態(參閱下方說明))
(1 . 線粗)
(1 . 出圖型式)
DXF 70 (圖層狀態)的值為下面選擇的合計:
開啟(1)或關閉(3)
凍結(4)或解凍(12)
視埠凍結(16)或解凍(48)
新視埠凍結(64)或解凍(192)
鎖住(256)或解鎖(768)
出圖(1024)或不出圖(3072)
留言
張貼留言