试试这个
- ; https://www.cadtutor.net/forum/topic/73977-set-selected-objects-color-to-their-current-index-color/
- ; MAKE 1 LAYER BUT SAVE COLOR
- ; By Alanh NOV 2021
- (defun c:make1lay ( / laynew layers layn ss x obj col)
- (setq laynew (getstring "\nEnter new layer name "))
- (command "-la" "M" laynew "")
- (command "UNDO" "M")
- (vlax-for layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
- (setq col (vla-get-color layers))
- (setq layn (vla-get-name layers))
- (if (= layn laynew)
- (princ)
- (progn
- (setq ss (ssget "X" (list (cons 8 layn))))
- (if (= ss nil)
- (princ (strcat "\nskip " layn))
- (repeat (setq x (sslength ss))
- (setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
- (if (vlax-property-available-p obj 'layer)
- (vlax-put-property obj 'Layer laynew)
- )
- (if (vlax-property-available-p obj 'color)
- (vlax-put-property obj 'color col)
- )
- )
- )
- )
- )
- )
- )
- (c:make1lay)
|