Función S::STARTUP: Ejecución de postinicialización (Concepto)

AutoCAD

 
Función S::STARTUP: Ejecución de postinicialización
Concepto Referencia rápida
 
 
 

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.

NotaPara que se añada, la función S::STARTUP debe haberse definido con la función defun-q en lugar de con defun.

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 ( )

... su función de inicio ...

)
(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.