i have this lisp which stretches objects on selected layers. at my new job they don't use very many layers but instead change the color. i would like to modify this to do it according to color instead. is this possible and if so how would i modify this?
;;; STRETCHES SPECIFIC LAYERS ONLY
(defun c:SL
(/ layer_string ent enlay entlst ename olderr selset enum objlen dent layent layset lay pt1 pt2 ss ss1 ss2 en osm)
(vl-load-com)
(if (null myerr)(load "myerr"))
(setq olderr *error* *error* myerr)
(setq osm (getvar "osmode"))
(if (null setvars)(load "setvars"))
(setq syslst
(setvars '(("cmdecho" . 0) ("osmode" . 0) ("trimmode" . 1)) )
)
(while (setq ent (entsel "\nSelect entity on layer..."))
(setq layer_string
(if layer_string
(strcat layer_string ","
(vla-get-layer (vlax-ename->vla-object (car ent)))
)
(vla-get-layer (vlax-ename->vla-object (car ent)))
)
)
)
(princ "\nSelect objects to stretch by crossing-window or crossing-polygon...")
(command "._stretch" (ssget (list (cons 8 layer_string))) "")
(setvars syslst)
(setq *error* olderr)
(princ)
)
(defun myerr (msg)
(if (or (= msg "quit / exit abort")
(= msg "Function cancelled"))
(if (and ctl undo_err) ; if undo_start used and returned value saved
(undo_err ctl)) ; in ctl then undo everything done so far.
(princ msg))
(if (and setvars syslst) ; if usual system var handler and variable exist
(setvars syslst)) ; then restore system vars
(setq *error* OLDERR ctl nil)
(princ)
)
(defun setvars (syslst / oldlst)
(foreach dp syslst
(setq oldlst (cons
(cons (car dp) (getvar (car dp)))
oldlst)))
(foreach dp syslst
(setvar (car dp) (cdr dp))
)
oldlst
)
(princ)