El lenguaje de control de diálogo (DCL) es un lenguaje de descripción de alto nivel y un intérprete dentro de AutoCAD para crear diálogos gráficos simples. Las extensiones de AutoLISP lo utilizan para interactuar con el usuario en el entorno de AutoCAD.
Características y uso
A diferencia de otras API de GUI importantes, DCL no es un conjunto de herramientas de GUI completo para la programación de aplicaciones. Solo está destinado a proporcionar cuadros de diálogo simples dentro de AutoCAD. Incluye widgets de formulario básicos, como cuadros de texto, botones, casillas de verificación y cuadros de lista. DCL está orientado a objetos ; permite la reutilización a través de la herencia y la composición.
La sintaxis de DCL se basa en la definición y el uso de "mosaicos". Un "mosaico" representa un widget de la interfaz gráfica de usuario, como un cuadro de texto o una etiqueta de texto. Los mosaicos también representan widgets que contienen otros widgets, como columnas, grupos de botones de opción y los propios cuadros de diálogo. DCL proporciona mosaicos integrados para todos los widgets principales, y se pueden definir mosaicos nuevos mediante la herencia y la composición de otros mosaicos.
DCL permite interacciones con el diálogo en tiempo de ejecución mediante código Lisp. Ciertos widgets pueden tener acciones asociadas a ellos nombrando una función de AutoLISP que se ejecutará y valores que se le pasarán. A diferencia de otros tipos de GUI, los diálogos DCL no se pueden cambiar sustancialmente en tiempo de ejecución. El contenido de ciertos widgets, como cuadros de texto y cuadros de lista, se puede cambiar, pero no se pueden eliminar widgets del diálogo ni agregarlos.
Ejemplo
A continuación se muestra un ejemplo de archivo DCL (y el archivo AutoLISP correspondiente ) que demuestra las principales características de DCL.
nombre_botón : botón {
etiqueta = "Enviar nombre";
acción = "(cambiar-nombre)";
}
hola : dialogo {
etiqueta = "Ejemplo DCL";
: cuadro de edición {
etiqueta = "Nombre: ";
clave = "nombre";
}
:botón_nombre {
clave = "nombre-de-envío";
}
: texto {
clave = "saludo";
}
ok_solamente;
}
El cuadro de diálogo se crea heredando del mosaico integrado 'dialog'. Las propiedades se establecen en el cuadro de diálogo y otros widgets en pares nombre/valor. Los mosaicos se pueden colocar dentro del cuadro de diálogo simplemente nombrándolos, o nombrándolos y especificando propiedades adicionales. Se define un nuevo mosaico ('name_button') para su uso nombrándolo y especificando propiedades para él.
; DCL se guarda como "hola.dcl"
( defun change-name () ( set_tile "saludo" ( strcat "Hola, " ( get_tile "nombre" ) "!" )))
( setq hola-dcl ( cargar_diálogo "hola.dcl" )) ( nuevo_diálogo "hola" hola-dcl ) ( iniciar_diálogo ) ( descargar_diálogo hola-dcl )
Un cuadro de diálogo DCL se crea mediante la llamada a una serie de funciones en un archivo AutoLisp. Los mosaicos pueden volver a llamar al código AutoLISP en determinados eventos y Lisp puede manipular el contenido de los mosaicos mientras se ejecuta el cuadro de diálogo.
Tecnologías alternativas
Para crear GUI más generales y otras extensiones dentro de CAD, AutoDesk ofrece otras opciones. La API ObjectARX para C++ permite crear extensiones como en Microsoft Visual Studio. VBA permite la programación de arrastrar y soltar para AutoCAD, Microsoft Office y otras aplicaciones.
A partir de AutoCAD 2007 y versiones posteriores, los programas AutoLISP o Visual-LISP pueden llamar a rutinas escritas en Visual Studio .NET (VB o C#). Los programadores ahora pueden crear cuadros de diálogo en VB o C# que tengan la gama completa de controles que se encuentran en la API de formularios .NET y que se puedan llamar y acceder a ellos desde Visual-LISP.
Enlaces externos
- Tutorial de DCL de Jeffrey P. Sander
- Tutoriales de DCL de AfraLISP
- AutoLISP-Exchange.com Introducción a los cuadros de diálogo Dcl