For drafting details, I also created #'d lisps that either draw a line in the #'d layer, or change selected objects to that layer. Of course you could use any layer name, but it keeps things simple. (Yeah there are more than 4 weights, I just never use 5 & 6)
(defun c:1 (/ p1) (XYZ_laycmnd "001") (princ))
(defun c:2 (/ p1) (XYZ_laycmnd "002") (princ))
(defun c:3 (/ p1) (XYZ_laycmnd "003") (princ))
(defun c:4 (/ p1) (XYZ_laycmnd "004") (princ))
(defun c:5 (/ p1) (XYZ_laycmnd "005") (princ))
(defun c:6 (/ p1) (XYZ_laycmnd "006") (princ))
(defun c:0 (/ p1) (XYZ_laycmnd "0") (princ))
;;; either change current selection to current layer or start drawing line on current layer
(defun XYZ_laycmnd ( lyr / ss1 p1 idx)
(if (and (tblsearch "LAYER" lyr)
(setq ss1 (ssget "_I"))
)
;; if selection, change to layer
(repeat (setq idx (sslength ss1))
(vla-put-layer
(vlax-ename->vla-object (ssname ss1 (setq idx (1- idx))))
lyr
)
)
;; if no selection, start drawing line on layer
(progn
(command "layer" "set" lyr "on" lyr "")
(if (setq p1 (getpoint "LINE From point: "))
(command "line" p1)
) ;if
) ;progn
) ;if
)