Establezca los valores de MODEMACRO con AutoLISP
AutoLISP se puede utilizar para asignar una cadena a la variable de sistema MODEMACRO y mostrar los resultados en la barra de estado. Utilizar la función strcat de AutoLISP para crear la cadena completa MODEMACRO a partir de cadenas más pequeñas.
(defun C:ACADMODE() (setvar "modemacro" (strcat "Layer $(substr,$(getvar,clayer),1,8)" "$(if,$(getvar,orthomode), Ortho)" "$(if,$(getvar,snapmode), Snap)" "$(if,$(=,$(getvar,tilemode),0)," "$(if,$(=,$(getvar,cvport),1), P)" ")" ) ) )
En el siguiente ejemplo, se utiliza la función S::STARTUP para cargar un archivo de AutoLISP denominado mode1.lsp y se define una cadena para la variable de sistema MODEMACRO.
;;; S::STARTUP loads the file MODE1.LSP which defines a MODEMACRO string (defun S::STARTUP ( ) (load "mode1") (princ) ) ;;; Additional AutoLISP files can also be defined or loaded here
Una vez cargado el archivo de AutoLISP mode1.lsp, se define la variable de sistema MODEMACRO para mostrar información en la barra de estado. El texto mostrado empieza con L: seguido de los primeros ocho caracteres del nombre de la capa actual, el nombre del dibujo y parte de la ruta, así como la primera letra de cada nombre de los modos activos actualmente. La posición del nombre del dibujo no varía, independientemente de la longitud del nombre de la capa.
;;; MODE1.LSP (setvar "modemacro" (strcat "L:$(substr,$(getvar,clayer),1,30)" "$(substr, ,1,$(-,30,$(strlen,$(getvar,clayer)))) " ;; ^^^^^^^^ Note the 8 spaces here "<.." "$(if,$(eq,$(getvar,dwgname),UNNAMED),UNNAMED," "$(substr,$(getvar,dwgname)," "$(if,$(>,$(strlen,$(getvar,dwgprefix)),29)," "$(-,$(strlen,$(getvar,dwgprefix)),29),1" ")," "$(strlen,$(getvar,dwgname))" ")" ")" ">" "$(if,$(getvar,orthomode), O, )" "$(if,$(getvar,snapmode), S, )" "$(if,$(and," "$(=,$(getvar,tilemode),0),$(=,$(getvar,cvport),1)),P)" ) )
Las rutinas de AutoLISP también pueden evaluar las expresiones DIESEL mediante el uso de la función menucmd de AutoLISP.