⑴ CAD如何利用lisp單開打開幾個想要的圖層,其餘隱藏
CAD自帶的圖層隔離LAYISO功能比較接近你的需求,或者你用圖層漫遊LAYWALK試試
⑵ 控制圖層小燈泡的lisp語言
用一行語句
(command "layer" "off" "圖層名" "")
就可以關閉圖層,其中的」圖層名「是要關閉的圖層名稱,注意關閉當前層要加多"y"
(command "layer" "off" "圖層名" "y" "")
打開圖層用下面的語句
(command "layer" "on" "圖層名" "")
⑶ CAD lisp代碼圖層控制
(setqchklay(tblsearch"layer""圓圈"))
(if(=chklaynil)(command"layer""n""圓圈""c""3""圓圈"""));;查找圖層,如果沒有,就創建這個圖層,顏色綠色。
⑷ CAD圖層LISP命令待優化
(defunC:XG(/k1kw1objtc1)
(setvar"cmdecho"0)
(setvar"blipmode"0)
(if(nullvlax-mp-object)(vl-load-com))
(if(setqtc1(entsel" 請選擇參考圖層或默認為當前圖層"))
(setqtc1(cdr(assoc8(entget(cartc1)))));選擇的對象為參考圖層
(setqtc1(getvar"clayer"))
)
(if(setqkw1(ssget));選擇對象
(progn
(while(setqk1(ssnamekw10))
(setqkw1(ssdelk1kw1))
(setqobj(vlax-ename->vla-objectk1))
(vla-put-layerobjtc1)
;(vla-put-layerobj"1-A建築牆體");修改對象圖層為"1-A建築牆體"
);while
)
)
(princ)
)
上面的程序是選擇對象的圖層為參考圖層
如果不選擇對象,就默認為當前圖層。
⑸ CAD快速切換圖層LISP代碼問題
(defun YH_chlayer (YH_layer / YH_S)
(if (null (tblsearch "LAYER" YH_layer))
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 YH_layer) ;圖層名稱
'(70 . 0) ;圖層狀態
'(62 . 7) ;圖層顏色
'(6 . "bylayer") ;圖層線型
)
)
)
(setq YH_S (cadr (ssgetfirst)))
(setq ent (ssget)) 就加這一句就行了
(if YH_S
(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
(setvar "clayer" YH_layer)
)
(princ)
)
⑹ CAD里怎麼用LISP調出圖層管理器中的圖層過濾器,並且批量更改過濾出來的圖層顏色、凍結狀態
AcadDoc.layers.Count----得到圖中所有的圖層 的總層數
遍歷所有的層
某一層 LLL=AcadDoc.layers.item i------也就是得到第i層
用--LLL.Name----得到某一層的層名
通過比較 如果該層正是 你想要改顏色的那個 層,那就用 LLL.TureColor ---來設置層的顏色
------------------對了,前提是圖中所有圖元的顏色都是"ByLayer"--也就是「隨層」
⑺ 求一個cad 圖層鎖定和解鎖的lisp命令
在百思論壇上找到的,用AutoCAD2008自帶的Visual LISP編輯器存入,並用載入應用程序運行過,代碼如下
laymod.lsp
;__________________________
;解決R14「bonus」工具的移植
;圖層管理工具
;-------------------------------------------
;圖層對象選擇,將標注歸入dim層,文字歸入txt層
;___________________________________________
(defun C:laymod(/ lm_ssd lm_sst)
(if (not (tblsearch "layer" "DIM"))
(command "-layer" "n" "DIM" "c" "1""DIM"""));endif
(if (not (tblsearch "layer" "TXT"))
(command "-layer" "n" "TXT" "c" "1""TXT"""));endif
(setq lm_ssd (ssget "X" '((0 . "DIMENSION")))
lm_sst (ssget "X" '((-4 . "<or")(0 . "TEXT")(0 . "MTEXT")(-4 . "or>"))));endsetq
(if lm_ssd (command "chprop" lm_ssd "" "la" "DIM"""))
(if lm_sst (command "chprop" lm_sst "" "la" "TXT"""))
);end defun
;-------------------------------------
;圖層孤立顯示,通過選擇對象單顯某圖層
;_____________________________________
(defun C:layiso(/ l9_ss l9_ent l9_lay ii)
(setq l9_ss "" ii 0)
(princ "\n選擇要保留顯示的圖層:")
(setq l9_ss (ssget))
(if l9_ss (command "-layer""off""*""y"""))
(repeat (sslength l9_ss)
(setq l9_ent (entget (ssname l9_ss ii)))
(setq l9_lay (cdr (assoc 8 l9_ent)) ii (1+ ii))
(command "-layer""on" l9_lay "")
);end repeat
);end defun layiso
;--------------------------
;打開所有圖層
;__________________________
(defun C:layon()(command "-layer""on""*"""))
;--------------------------
;解除所有圖層鎖定
;__________________________
(defun C:layul()(command "-layer""u""*"""))
;--------------------------
;解除所有圖層凍結
;__________________________
(defun C:layuk()(command "-layer""t""*"""))
;--------------------------
;通過選擇解除圖層鎖定
;__________________________
(defun C:layulk(/ l9_ss l9_ent l9_lay)
(setq l9_ss (entsel "\n選擇要解鎖的圖層:"))
(while l9_ss
(setq l9_ent (entget (car l9_ss)))
(setq l9_lay (cdr (assoc 8 l9_ent)))
(command "layer""u" l9_lay"")
(setq l9_ss (entsel "\n選擇要解鎖的圖層:"))
);end while
);end defun
;--------------------------
;通過選擇鎖定圖層
;__________________________
(defun C:laylck(/ l9_ss l9_ent l9_lay)
(setq l9_ss (entsel "\n選擇要鎖定的圖層:"))
(while l9_ss
(setq l9_ent (entget (car l9_ss)))
(setq l9_lay (cdr (assoc 8 l9_ent)))
(command "layer""u" l9_lay"")
(setq l9_ss (entsel "\n選擇要鎖定的圖層:"))
);end while
);end defun
;--------------------------
;通過選擇凍結圖層
;_________________
(defun C:layfrz(/ l9_ss l9_ent l9_lay l9_clay ii)
(setq l9_clay (getvar "clayer"))
(princ "\n選取凍結圖層參考對象: ")
(setq l9_ss (ssget))
(setq ii 0)
(command "-layer")
(repeat (sslength l9_ss)
(setq l9_ent (entget (ssname l9_ss ii)))
(setq l9_lay (cdr (assoc 8 l9_ent)))
(command "f" l9_lay)
(setq ii (1+ ii))
);end repeat
(command "")
);end defun layfrz
;--------------------------
;通過選擇隱藏圖層
;__________________________
(defun C:layoff(/ l9_ss l9_ent l9_lay l9_clay ii)
(princ "\n選取隱藏圖層參考對象: ")
(setq l9_ss (ssget))
(setq l9_clay (getvar "clayer"))
(setq ii 0)
(command "-layer")
(repeat (sslength l9_ss)
(setq l9_ent (ssname l9_ss ii))
(setq l9_lay (cdr (assoc 8 (entget l9_ent))))
(if (/= l9_lay l9_clay)
(command "off" l9_lay)(command "off" l9_lay"y")
);end if
(setq ii (1+ ii))
);end repeat
(command "")
);end defun layoff
;--------------------------
(princ "\n---------->> 圖層調整
(laymod)layiso/layon/layuk/layulk/laylck/layfrz/layoff<<----------")
(prin1)
⑻ 求一個cad lisp命令!
;圖層鎖定及解鎖
(defunc:tes(/entlay1)
(vl-load-com)
(while(and(setqent(entsel"
請選擇要鎖定或解鎖的圖元"))(setqlay1(cdr(assoc8(entget(carent))))))
(w1712251lay1)
)
(princ)
)
(defunw1712251(lay1/laylay1)
(vlax-forlay(vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
(if(=(vla-get-namelay)lay1)
(progn
(if(=(vla-get-locklay):vlax-true);如果圖層鎖定
(vla-put-locklay:vlax-false);解鎖
(vla-put-locklay:vlax-true);鎖定
)
)
)
)
)