类似于使用Lisp,拾取对象目标层,然后拾取对象lay1、对象lay2等全部完成。使用ssget和layer filter搜索将层上的所有对象更改为新层的lisp非常简单。
- (defun c:chlays ( / deslay ss sslen newlay)
- (vl-load-com)
- (setq deslay (cdr (assoc 8 (entget (car (entsel "\npick object destination layer"))))))
- ;returns destination layer just use two lines again
- (while (setq newlay (cdr (assoc 8 (entget (car (entsel "\npick object next layer nothing to exit"))))))
- (setq ss (ssget "X" (list (cons 8 newlay))))
- (setq sslen (sslength ss))
- (setq x 0)
- (repeat sslen
- (setq obj (ssname ss x))
- (setq vlobj (setq vlobj (vlax-ename->vla-object obj)))
- (vla-put-layer vlobj deslay)
- (setq x (+ x 1))
- ) ; repeat
- (setq ss nil
- )
- ) ; while
- ) ; defun
- (c:chlays)
|