Dialogkontrol sprog - Dialog Control Language

Dialog Control Language (DCL) er et beskrivelsesprog på højt niveau og tolk i AutoCAD til at skabe enkle grafiske dialoger. AutoLISP- udvidelser bruger den til at interagere med brugeren i AutoCAD-miljøet.

Funktioner og brug

I modsætning til andre større GUI API'er er DCL ikke et komplet GUI værktøjssæt til applikationsprogrammering. Det er kun beregnet til at levere enkle dialoger i AutoCAD. Det inkluderer grundlæggende formular-widgets såsom tekstbokse, knapper, afkrydsningsfelter og listefelt. DCL er objektorienteret ; det tillader genbrug gennem arv og sammensætning.

DCL-syntaks er baseret på at definere og bruge 'fliser'. En 'flise' repræsenterer en GUI-widget, såsom en tekstboks eller en tekstetiket. Fliser repræsenterer også widgets, der indeholder andre widgets, såsom kolonner, radioknapgrupper og selve dialogerne. DCL leverer indbyggede fliser til alle større widgets, og nye fliser kan defineres gennem arv og sammensætning af andre fliser.

DCL tillader interaktion med dialogen ved kørsel med Lisp-kode. Visse widgets kan have handlinger tilknyttet dem ved at navngive en AutoLISP- funktion, der skal køres, og værdier, der skal overføres til den. I modsætning til andre typer GUI'er, kan DCL-dialoger ikke ændres væsentligt på kørselstidspunktet. Indholdet af visse widgets, f.eks. Tekstbokse og listefelt, kan ændres, men widgets kan ikke fjernes fra eller føjes til dialogen.

Eksempel

Her er et eksempel på DCL-fil (og ledsagende AutoLISP- fil), der demonstrerer de vigtigste funktioner i DCL.

name_button : button {
 label = "Submit name";
 action = "(change-name)"; 
}

hello : dialog {
 label = "DCL Example";
 
 : edit_box {
 label = "Name: ";
 key = "name";
 }

 : name_button {
 key = "submit-name";
 }

 : text {
 key = "greeting";
 }

 ok_only;
}

Dialogen oprettes ved at arve fra den indbyggede flise 'dialog'. Egenskaber er indstillet i dialogen og andre widgets i navn / værdipar. Fliser kan placeres i dialogen bare ved at navngive dem eller ved at navngive dem og specificere yderligere egenskaber. En ny flise ('navn_knap') er defineret til brug ved at navngive den og specificere egenskaber for den.

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

En DCL-dialog indstilles ved at kalde en række funktioner i en AutoLisp-fil. Fliser kan ringe tilbage til AutoLISP- kode på visse begivenheder, og Lisp kan manipulere indholdet af fliser, mens dialogen kører.

Alternative teknologier

For at oprette mere generelle GUI'er og andre udvidelser inden for CAD giver AutoDesk flere andre valg. Den ObjectARX API til C ++ tillader udvidelser der skal bygges som i Microsoft Visual Studio. VBA tillader træk-og-slip-programmering til AutoCAD som for Microsoft Office og andre applikationer.

Fra AutoCAD 2007 og nyere kan AutoLISP- eller Visual-LISP-programmer kalde rutiner skrevet i Visual Studio .NET (VB eller C #). Programmerere kan nu oprette dialoger i VB eller C #, der har det fulde udvalg af kontroller, der findes i .NET Forms API og kan kaldes og fås adgang til fra Visual-LISP.

eksterne links