HOME

TheInfoList



OR:

Dialog Control Language (DCL) is a high-level description language and interpreter within
AutoCAD AutoCAD is a commercial computer-aided design (CAD) and drafting software application. Developed and marketed by Autodesk, AutoCAD was first released in December 1982 as a desktop app running on microcomputers with internal graphics controllers. ...
for creating simple graphical dialogs.
AutoLISP AutoLISP is a dialect of the programming language Lisp built specifically for use with the full version of AutoCAD and its derivatives, which include ''AutoCAD Map 3D'', ''AutoCAD Architecture'' and ''AutoCAD Mechanical''. Neither the application ...
extensions use it to interact with the user in the AutoCAD environment.


Features and usage

Unlike other major GUI APIs, DCL is not a complete
GUI The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
toolkit for application programming. It is only intended for providing simple dialogs within AutoCAD. It includes basic form widgets such as text boxes, buttons, checkboxes and list boxes. DCL is
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
; it allows re-use through inheritance and composition. DCL syntax is based on defining and using 'tiles'. A 'tile' represents a GUI widget such as a text box or a text label. Tiles also represent widgets that hold other widgets, such as columns, radio button groups and the dialogs themselves. DCL provides built-in tiles for all major widgets, and new tiles can be defined through
inheritance Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Offici ...
and
composition Composition or Compositions may refer to: Arts and literature * Composition (dance), practice and teaching of choreography *Composition (language), in literature and rhetoric, producing a work in spoken tradition and written discourse, to include ...
of other tiles. DCL allows interactions with the dialog at run-time by Lisp code. Certain widgets can have actions associated with them by naming an
AutoLISP AutoLISP is a dialect of the programming language Lisp built specifically for use with the full version of AutoCAD and its derivatives, which include ''AutoCAD Map 3D'', ''AutoCAD Architecture'' and ''AutoCAD Mechanical''. Neither the application ...
function to be run, and values to be passed to it. Unlike other types of GUIs, DCL dialogs cannot be changed substantially at run time. The contents of certain widgets such as text boxes and list boxes can be changed, but widgets cannot be removed from or added to the dialog.


Example

Here is an example DCL file (and accompanying
AutoLISP AutoLISP is a dialect of the programming language Lisp built specifically for use with the full version of AutoCAD and its derivatives, which include ''AutoCAD Map 3D'', ''AutoCAD Architecture'' and ''AutoCAD Mechanical''. Neither the application ...
file) demonstrating the major features of DCL. name_button : button hello : dialog The dialog is created by inheriting from the built-in tile 'dialog'. Properties are set on the dialog and other widgets in name/value pairs. Tiles can be placed inside the dialog just by naming them, or by naming them and specifying additional properties. A new tile ('name_button') is defined for use by naming it and specifying properties for it. ; DCL is saved as "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) A DCL dialog is instantiated by calling a series of functions in an AutoLisp file. Tiles can call back into
AutoLISP AutoLISP is a dialect of the programming language Lisp built specifically for use with the full version of AutoCAD and its derivatives, which include ''AutoCAD Map 3D'', ''AutoCAD Architecture'' and ''AutoCAD Mechanical''. Neither the application ...
code on certain events, and Lisp can manipulate the contents of tiles while the dialog is running.


Alternative technologies

For creating more general GUIs and other extensions within CAD, AutoDesk provides several other choices. The
ObjectARX ObjectARX ( AutoCAD Runtime eXtension) is an API for customizing and extending AutoCAD. The ObjectARX SDK is published by Autodesk and freely available under license from Autodesk. The ObjectARX SDK consists primarily of C++ headers and librarie ...
API for C++ allows extensions to be built as within Microsoft Visual Studio. VBA allows drag-and-drop programming for
AutoCAD AutoCAD is a commercial computer-aided design (CAD) and drafting software application. Developed and marketed by Autodesk, AutoCAD was first released in December 1982 as a desktop app running on microcomputers with internal graphics controllers. ...
as for
Microsoft Office Microsoft Office, or simply Office, is the former name of a family of client software, server software, and services developed by Microsoft. It was first announced by Bill Gates on August 1, 1988, at COMDEX in Las Vegas. Initially a ma ...
and other applications. As of AutoCAD 2007 and later, AutoLISP or Visual-LISP programs can call routines written in Visual Studio .NET (VB or C#). Programmers can now create dialogs in VB or C# that have the full range of controls found in the .NET Forms API and can be called and accessed from Visual-LISP.


External links


Jeffrey P. Sander's DCL Tutorial

AfraLISP DCL Tutorials


{{AutoCAD_related_articles Markup languages