Carga y ejecución automática de rutinas de AutoLISP
Conforme vayamos creando una biblioteca de rutinas de AutoLISP útiles, es posible que deseemos cargarlas cada vez que se ejecute AutoCAD. También puede que
queramos ejecutar ciertos comandos o funciones en momentos específicos durante la sesión de dibujo.
AutoCAD carga automáticamente el contenido de tres archivos definidos por el usuario: acad.lsp, acaddoc.lsp y el archivo
.mnl que acompaña al menú actual.
Los archivos de inicio acad.lsp y acaddoc.lsp no se suministran con AutoCAD. Es tarea del usuario crear y mantener estos archivos.
Acad.mnl: carga automática de las funciones de menú de AutoLISP
El otro tipo de archivo que AutoCAD carga automáticamente acompaña al archivo de menú actual y tiene la extensión .mnl. Cuando AutoCAD carga un archivo de menús, busca un archivo MNL con un nombre coincidente. Si lo encuentra, lo carga en memoria.
Con esta función se garantiza la carga por parte de AutoCAD de las funciones de AutoLISP necesarias para el funcionamiento correcto de un menú. Como ejemplo, el menú estándar de AutoCAD, acad.mnu, depende de la correcta carga del archivo acad.mnl. Este archivo define numerosas funciones de AutoLISP utilizadas por el menú. El archivo MNL se carga después del archivo acaddoc.lsp.
NOTA Si un archivo de menú se carga con la función command de AutoLISP (con una sintaxis similar a (command "menú" "nuevo")), el archivo MNL asociado no se carga mientras no se ejecute toda la rutina de AutoLISP.
Por ejemplo, si se crea un menú personalizado llamado nuevo.mnu y se tienen que cargar tres archivos de AutoLISP (nuevo1.lsp, nuevo2.lsp y nuevo3.lsp) para que el menú funcione correctamente, se debería crear un archivo de texto ASCII llamado nuevo.mnl de la siguiente forma:
(load "nuevo1")
(load "nuevo2")
(load "nuevo3")
(princ "\nUtilidades de Nuevomenú... Cargadas.")
(princ)
En este ejemplo, las llamadas a la función princ se pueden usar para ver mensajes de estado. El primer uso de princ muestra en la línea de comando lo siguiente:
Utilidades de Nuevomenú... Cargadas.
Con la segunda llamada a princ se sale de la función de AutoLISP. Sin esta segunda llamada a princ, el mensaje aparecería dos veces. Como se mencionó anteriormente, se puede incluir el argumento enfallo con llamadas a la función load como precaución adicional.
Ejemplo Acad.mnl
;;; ACAD.MNL
;;; Copyright (C) 1992 - 1997 by Autodesk, Inc.
;;;
;;; Permission to use, copy, modify, and distribute this software
;;; for any purpose and without fee is hereby granted, provided
;;; that the above copyright notice appears in all copies and
;;; that both that copyright notice and the limited warranty and
;;; restricted rights notice below appear in all supporting
;;; documentation.
;;;
;;; AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
;;; AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
;;; UNINTERRUPTED OR ERROR FREE.
;;;
;;; Use, duplication, or disclosure by the U.S. Government is subject to
;;; restrictions set forth in FAR 52.227-19 (Commercial Computer
;;; Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
;;; (Rights in Technical Data and Computer Software), as applicable.
;;;
;;; AutoLISP routines used by the AutoCAD Standard Menu.
;;;
;;; This file is loaded automatically following the menu ACAD.
(princ "\nUtilidades de menú de AutoCAD / PPCAD 2000")
;
(DEFUN PROPPP()
(setq a "Copywrite JOSE A. VAZQUEZ RODRIGUEZ")
(prin1 a)(terpri)
)
;
;;;=== Macros de teclado ===
;
; ANEXO ACAD.MNL + PPCAD2000.MNL
; JOSE ANTONIO VAZQUEZ RODRIGUEZ
; pepe@udc.es
; Complemento PPCAD versión 2000.04
;
;(load"nivel")
;(load"gc")
;(load"cotac")
(defun c:7()
(command "_zoom""E")
(command "_zoom""0.9x")
)(defun c:8()
(command "_zoom""0.85x")
)(defun c:9()
(command "_zoom""1.25x")
)(defun c:cl()
(command "_clayer")
)(defun c:ha()
(command "_hatch")
)(defun c:i()
(command "_insert")
)(defun c:ti()
(command "_tilemode""1")
)(defun c:to()
(command "_tilemode""0")
)(defun c:v()
(command "zoom""v")
)(defun c:w()
(command "_zoom""_w")
)(defun c:zz()
(command "_zoom""p")
)(defun c:+()
(command "_view""_Save")
)(defun c:-()
(command "_view""_Restore")
)
.... sigue acad.mnl
Acad.MNL completo
|