Puede definir una función S::STARTUP para llevar a cabo las operaciones de configuración requeridas tras la inicialización de un dibujo.
Los archivos LISP de inicio (acad.lsp, acaddoc.lsp y MNL) se cargan en la memoria antes de que el dibujo se haya inicializado por completo. Normalmente esto no causa ningún problema, a menos que se desee utilizar la función command, que podría no funcionar si el dibujo no ha terminado de inicializarse.
Si la función definida por el usuario S::STARTUP está incluida en un archivo acad.lsp, acaddoc.lsp o MNL, se invoca cuando se accede a un dibujo nuevo o se abre uno existente. Por tanto, puede incluir una definición de S::STARTUP en el archivo de inicio de LISP para realizar las operaciones de configuración requeridas.
Por ejemplo, si desea modificar el comando SOMBREA añadiendo un mensaje y cambiando al comando SOMBCONT, utilice un archivo acaddoc.lsp con el siguiente código:
(defun C:SOMBREA ( )
(alert "Se está usando el comando SOMBCONT.")
(princ "\nIntroduzca OLDHATCH para ir al auténtico comando SOMBREA.\n")
(command "SOMBCONT")
(princ)
)
(defun C:OLDHATCH ( )
(command ".SOMBREA")
(princ)
)
(defun-q S::STARTUP ( )
(command "undefine" "sombrea")
(princ "\nSOMBREA redefinido como SOMBCONT.\n")
)
Antes de que se inicialice el dibujo, se establecen nuevas definiciones de SOMBREA y OLDHATCH con la función defun. Tras la inicialización del dibujo, se llama a la función S::STARTUP y se anula la definición estándar de SOMBREA.
Dado que una función S::STARTUP se puede definir en varios lugares (un archivo acad.lsp, acaddoc.lsp o MNL, o cualquier otro archivo de AutoLISP cargado a partir de ellos), es posible sobrescribir una función S::STARTUP previamente definida. El siguiente ejemplo muestra un método para garantizar que la función de inicio sirve para otras funciones.
(defun-q MIINICIO ( )
)
(setq S::STARTUP (append S::STARTUP MIINICIO))
El código anterior añade su función de inicio a la de la función S::STARTUP existente y redefine S::STARTUP para que incluya su código de inicio. Este procedimiento funciona correctamente con independencia de la existencia previa de una función S::STARTUP.