Dialog Control Language (DCL) es un intérprete y lenguaje de descripción de alto nivel 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.
Funciones 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 diálogos simples dentro de AutoCAD. Incluye widgets de formularios básicos como cuadros de texto, botones, casillas de verificación y cuadros de lista. DCL está orientado a objetos ; permite la reutilización por herencia y composición.
La sintaxis DCL se basa en definir y usar 'mosaicos'. Un 'mosaico' representa un widget de GUI 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 radio y los diálogos en sí. DCL proporciona mosaicos integrados para todos los widgets principales, y se pueden definir mosaicos nuevos mediante la herencia y 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 con ellos al nombrar una función de AutoLISP para que se ejecute y los valores que se le pasen. A diferencia de otros tipos de GUI, los cuadros de diálogo 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 los widgets no se pueden eliminar ni agregar al cuadro de diálogo.
Ejemplo
A continuación se muestra un archivo DCL de ejemplo (y el archivo AutoLISP adjunto ) que muestra las características principales de DCL.
name_button: button { label = "Enviar nombre"; action = "(cambiar-nombre)"; }hola: diálogo { label = "Ejemplo DCL"; : edit_box { label = "Nombre:"; clave = "nombre"; } : name_button { key = "enviar-nombre"; } : texto { clave = "saludo"; } ok_only;}
El diálogo se crea heredando del 'diálogo' de mosaico integrado. Las propiedades se establecen en el cuadro de diálogo y otros widgets en pares de nombre / valor. Los mosaicos se pueden colocar dentro del cuadro de diálogo simplemente nombrándolos o nombrándolos y especificando propiedades adicionales. Un nuevo mosaico ('name_button') se define para su uso nombrándolo y especificando sus propiedades.
; DCL se guarda como "hello.dcl" ( defun change-name () ( set_tile "greeting" ( strcat "Hello," ( get_tile "name" ) "!" )))( setq hello-dcl ( load_dialog "hello.dcl" )) ( new_dialog "hello" hello-dcl ) ( start_dialog ) ( unload_dialog hello-dcl )
Se crea una instancia de un cuadro de diálogo DCL llamando a una serie de funciones en un archivo AutoLisp. Los mosaicos pueden volver a llamar al código de AutoLISP en ciertos eventos, y Lisp puede manipular el contenido de los mosaicos mientras se ejecuta el diálogo.
Tecnologías alternativas
Para crear GUI más generales y otras extensiones dentro de CAD, AutoDesk ofrece varias otras opciones. La API de ObjectARX para C ++ permite crear extensiones como dentro de Microsoft Visual Studio. VBA permite la programación de arrastrar y soltar tanto para AutoCAD como para Microsoft Office y otras aplicaciones.
A partir de AutoCAD 2007 y 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 tienen la gama completa de controles que se encuentran en la API de .NET Forms y se pueden llamar y acceder desde Visual-LISP.