⑴ 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);锁定
)
)
)
)
)