CAD快速切换图层LISP代码问题 50
这个代码用cad加载后能很方便的切换图层,选中图元时,按数字键能快速更改图元图层。
现在遇到的问题是,我用天正打开后,切换图层的功能还在,更改图元图层不行了,求大神指点!!
代码如下:
(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)))
(if YH_S
(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
(setvar "clayer" YH_layer)
)
(princ)
)
(defun c:0 ()
(YH_chlayer "0")
)
(defun c:1 ()
(YH_chlayer "1")
)
(defun c:2 ()
(YH_chlayer "2")
)
(defun c:3 ()
(YH_chlayer "3")
)
(defun c:4 ()
(YH_chlayer "4")
)
(defun c:5 ()
(YH_chlayer "5")
)
(defun c:6 ()
(YH_chlayer "6")
)
(defun c:7 ()
(YH_chlayer "7")
)
(defun c:8 ()
(YH_chlayer "8")
) 展开
(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)
)
(defun c:zwdqc()
(if (setq ent (car (entsel "\n请图元:")))
(progn
(setq dxf (entget ent)
tcm (cdr (assoc 8 dxf))
)
(setvar "clayer" tcm)
)
)
(princ)
)
运行不行啊,大哥,你试过没有啊?