296715530 发表于 2019-12-14 09:50:56

关于图元改层的,请求大佬帮助

(defun c:tt()
(setq ss (ssget "i"))
(if (= ss nil)
(command "-LAYER" "M" "0" "")
(command "-LAYER" "M" "0" "" "LAYCUR" )
)
(princ)
)








请教下,各位大佬,帮忙改成
空选时,切到0层
选择图元时,只把图元改到0层,当前层不变

taoyi0727 发表于 2019-12-14 10:09:10

(defun c:tt (/ name ss)
        (if (setq ss (ssget))
                (while (setq name (ssname ss 0))
                        (vla-put-Layer (vlax-ename->vla-object name) "0")
                        (ssdel name ss)
                )
                (setvar "CLAYER" "0")
        )
)

xj6019 发表于 2019-12-14 10:18:21

试试是这效果不
(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:TT0 ()
(YH_chlayer "0")
)

296715530 发表于 2019-12-14 10:25:38

(defun c:zjtc()
(princ "\n增加1-9号图层")
(setvar "cmdecho" 0)                  ; 关闭命令提示
(Setq osmode_bak (getvar "osmode"))   ;_记录捕捉
(Setvar "osmode" 0)                   ;_关闭捕捉
(command "layer" "new" "_1" "c" "7" "_1" "")
(command "layer" "new" "_2" "c" "5" "_2" "")
(command "layer" "new" "_3" "c" "6" "_3" "")
(command "layer" "new" "_4" "c" "4" "_4" "")
(command "layer" "new" "_5" "c" "3" "_5" "")
(command "layer" "new" "_6" "c" "2" "_6" "")
(command "layer" "new" "_7" "c" "30" "_7" "")
(command "layer" "new" "_8" "c" "8" "_8" "")
(command "layer" "new" "_9" "c" "1" "_9" "")
(setvar "cmdecho" 1)                  ; 打开命令提示
(Setvar "osmode" osmode_bak)          ;_还原捕捉
(PRINC))

;;;图层切换
(defun c:1 ()
(setvar "clayer" "_1")(princ))


(defun c:2 ()
(setvar "clayer" "_2")(princ))


(defun c:3 ()
(setvar "clayer" "_3")(princ))


(defun c:4 ()
(setvar "clayer" "_4")(princ))


(defun c:5 ()
(setvar "clayer" "_5")(princ))


(defun c:6 ()
(setvar "clayer" "_6")(princ))


(defun c:7 ()
(setvar "clayer" "_7")(princ))


(defun c:8 ()
(setvar "clayer" "_8")(princ))


(defun c:9 ()
(setvar "clayer" "_9")(princ))

;;;图元改层
(defun c:11 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_1" "")
(setvar "cmdecho" 1)
(princ))

(defun c:22 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_2" "")
(setvar "cmdecho" 1)
(princ))

(defun c:33 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_3" "")
(setvar "cmdecho" 1)
(princ))

(defun c:44 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_4" "")
(setvar "cmdecho" 1)
(princ))

(defun c:55 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_5" "")
(setvar "cmdecho" 1)
(princ))

(defun c:66 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_6" "")
(setvar "cmdecho" 1)
(princ))

(defun c:77 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_7" "")
(setvar "cmdecho" 1)
(princ))

(defun c:88 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_8" "")
(setvar "cmdecho" 1)
(princ))

(defun c:99 ()
(setvar "cmdecho" 0)
(setq sset (ssget))
(command"change"sset"" "p" "LA" "_9" "")
(setvar "cmdecho" 1)
(princ))



自己整理的,凑合着用也不错,

296715530 发表于 2019-12-14 10:26:30

xj6019 发表于 2019-12-14 10:18
试试是这效果不
(defun YH_chlayer (YH_layer / YH_S)
(if (null (tblsearch "LAYER" YH_layer))


感谢回答...............

296715530 发表于 2019-12-14 10:57:37

taoyi0727 发表于 2019-12-14 10:09
(defun c:tt (/ name ss)
        (if (setq ss (ssget))
                (while (setq name (ssname ss 0))


感谢回答。。。。。。。。。。

zmzk 发表于 2022-12-10 15:21:37

不错,画图用的频率比较多的
页: [1]
查看完整版本: 关于图元改层的,请求大佬帮助