發表文章

目前顯示的是有「圖層」標籤的文章

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 鎖住:locke...

AutoCAD LISP 列示輸出所有圖層名稱等資訊

圖片
利用函數 tblnext 指定 LAYER 來遍歷所有圖層 利用函數 while 循環到沒有圖層 不過要注意要修改圖層資料需要另外用函數 tblobjname  來得到圖層實體 因為函數 tblnext 只會得到簡短資訊,如下: _$ (tblnext "LAYER" T) ((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous")) 用函數 tblobjname  來得到圖層實體,如下: _$ (tblobjname  "LAYER" "0") <圖元名稱: 240c7544870> 程式碼範例: 1.在命令列顯示所有圖層名稱、顏色號碼、線型名稱 動畫展示 程式碼: (defun c:promptlayers ( / lay layname laycolor layLTYPE) ;;;https://eakyle.blogspot.com/   (prompt "\n圖層名稱,顏色索引,線型名稱") ; 寫入標題列   (while (setq lay (tblnext "LAYER" (not lay))) ; 遍歷所有圖層     (setq layname (cdr (assoc 2 lay))) ; 取得圖層名稱     (setq laycolor (cdr (assoc 62 lay))) ; 取得圖層顏色索引       (setq layLTYPE (cdr (assoc 6 lay))) ;線型名稱     (prompt (strcat "\n" layname "," (itoa laycolor) "," layLTYPE)) ; 寫入圖層資料   );_while   (princ) );_end 2.將所有圖層名稱、顏色號碼、線型名稱輸出到CSV檔 動畫展示 程式碼: (defun c:exportlayers ( / csvpath csvfile lay layname laycolor layLTYPE) ;;;;;;https://eak...

AutoCAD LISP 修改圖塊內物件顏色及圖層

         通常畫機電繪圖的人,收到的建築底圖,通常會把顏色改成8號灰色當底圖色,但圖塊內物件不見得會是依圖層色,這導致改顏色困難。而且圖層多樣時也可以都改成圖層0。          而內建沒有比較快的方式,這時就靠LISP。 1.把圖塊內物件顏色都改成ByLayer(依圖層): (備註:如果圖層被鎖住要記得解鎖) (defun C:ChangeBlockColorByLayer (/ ss e blk doc)   (setq doc (vla-get-activedocument (vlax-get-acad-object)))   (if     (setq ss (ssget ":L" '((0 . "INSERT"))))      (repeat (setq i (sslength ss))        (setq e (vlax-ename->vla-object (ssname ss (setq i (1- i)))))        (setq blk (vla-item (vla-get-blocks doc) (vla-get-Effectivename e)) )        (vlax-for x blk (vla-put-color x 256) )        )      )   (vla-regen doc acAllViewports)   (princ)   ) 2.把圖塊內物件顏色都改成8號色(灰色): (備註:如果圖層被鎖住要記得解鎖) (defun C:ChangeBlockColor8 (/ ss e blk doc)   (setq doc (vla-get-activedocument (vlax-get-acad-object)))   (if    ...

AutoCAD 不選取到鎖定圖層中物件的方法

目前沒有相關 內建指令 或 系統變數 可以使 不選取到鎖定圖層中的物件 。 1.在LISP上可以使用 此方法會選取到 鎖定圖層中的物件 ,但會在選取後把 鎖定圖層中的物件 從選擇集中剃除 (ssget ":L") 達成類似效果(通常配合在使用指令中使用) 要達到選取結束後還有選取效果則是 (sssetfirst nil (ssget ":L")) 缺點是每次都要使用一次 不過可以做成按鈕(在工具列或工具選項板上)來快速使用 或是設定成指令SS(下方程式碼載入後使用) (defun c:ss ( / ss ) (setq ss (ssget ":L" ))  (sssetfirst nil ss ) (princ) );_defun_end 2.外掛插件 使用 Daniel.Balogh 所製作的插件  IgnoreLockedLayerObjects (只能在Windows系統使用) 將壓縮檔內的  IgnoreLockedLayerObjects.bundle  資料夾複製到下面路徑上 設備上的所有使用者: %Programdata%\Autodesk\Applicationplugins 僅當前使用者: %Appdata%\autodesk\Applicationplugins (如果不存在,請在建立上面路徑) 使用方式: 輸入命令: LOCKSELECTION - 鎖定不選取到鎖定圖層中的物件 UNLOCKSELECTION - 恢復選取到鎖定圖層中的物件 下載: AutoCAD 2016/2017 IgnoreLockedLayerObjects.zip AutoCAD 2018/2019 IgnoreLockedLayerObjects.bundle_2018+.zip AutoCAD 2018-2020(修正錯誤) IgnoreLockedLayerObjects.bundle.zip 來源: 原網站連結 相關連結 AutoCAD 如何載入LISP

AutoCAD 解決圖層工具列下拉式清單沒有排序

圖片
 發現只有特定檔案的圖層工具列下拉式清單沒有排序 原因:該檔案的圖層數量超過1000個 解決方式:如果圖層數量超過1000個,設定MAXSORT (系統變數)超過該檔案的圖層數量 該系統變數是設定在對話方塊、下拉式清單和選項板中根據字母順序排序之項目 (例如檔案名稱、圖層名稱、圖塊名稱) 的最大數目。 如果項目 (又稱具名物件) 的總數超過這個值,將無法排序任何項目。 MAXSORT 的值是介於 0 與 32767 之間的整數。