Você está na página 1de 23

DCL - Dialog Control Language: Introdução

2009@FEUP/DEMec-SDI

DCL – Dialog Control Language: Introdução
João Manuel R. S. Tavares

Bibliografia
 Material disponível no AfraLisp.net em http://www.afralisp.net  Programação em AutoCAD, Curso Completo

Fernando Luís Ferreira, João Santos FCA  Sistema de ajuda do AutoCAD

2

CFAC: DCL - Dialog Control Language: Introdução

2009@João Tavares

João Manuel R. S. Tavares

1

DCL - Dialog Control Language: Introdução

2009@FEUP/DEMec-SDI

Introdução
 A Dialog Control Language permite criar interfaces gráficas (caixas de     

diálogo e de mensagens) para aplicações em AutoLISP/Visual Lisp Cada caixa de diálogo deve ser definida (dialog definition) em ficheiros de definição com a extensão dcl Cada controlo de um diálogo necessita ser definido (tile definition) e é referenciado no código lisp pelo seu nome (key) Cada propriedade (property) de um controlo (tile) é designada por atributo do diálogo (attribute) Cada método de um controlo é designado por expressão de acção (action expression) O Visual Lisp Editor possibilita a previsão de um diálogo definido num ficheiro dcl (em Tools, Interface Tools)

3

CFAC: DCL - Dialog Control Language: Introdução

2009@João Tavares

Introdução (cont.)
 No ficheiro base.dcl do AutoCAD existem definições e estruturas úteis que

podem ser usadas (para usar, incluir @include "base.dcl" no ficheiro respectivo)  Na definição dos diálogos (ficheiros dcl):
 São usados { } em vez de ( )  Para definir propriedades usa-se o sinal =  As linhas de atributos terminam com ;  Comentários são indicados com // ou /*  As definições são iniciadas com :

*/

 Criação Ci ã d de um diál diálogo:
 Sintaxe: nome : dialog { conteúdo }

4

CFAC: DCL - Dialog Control Language: Introdução

2009@João Tavares

João Manuel R. S. Tavares

2

Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Introdução (cont. // o valor da tecla label = "OK". Tavares 3 . // declara que este é o botão por omissão } // fim do botão "ok" } 5 CFAC: DCL . se não existe saí . // texto a aparecer } // fim da zona de texto : button { // é criado um botão OK para terminar key = "terminado".lsp): (Defun c:hello () (setq dcl_id (load_dialog "hello.)  Exemplo (ficheiro hello. S.)  Exemplo (ficheiro hello.Dialog Control Language: Introdução 2009@João Tavares . o file é carregado . world".DCL . // o nome da tecla is_default = true. é mostrada d a caixa de d . retira a recém-criada caixa João Manuel R.dcl): // é dado o nome "hello" à // caixa de diálogo label = "Primeira Caixa de Diálogo". verifica se existe o ficheiro . // título a aparecer na caixa : text { // início de zona de texto label = "Hello.Dialog Control Language: Introdução 2009@João Tavares hello : dialog { Introdução (cont.dcl")) (if (not (new_dialog "hello" dcl_id)) (exit) ) (start_dialog) d l dialogo (unload_dialog dcl_id) ) 6 CFAC: DCL .

Tavares 4 . … } 7 CFAC: DCL .)  Definição de um controlo (tile):  nome : item1 [ : item2 : item3 …] { atributo = valor . } ok_only.dcl): hello : dialog { label = "Primeira Caixa de Diálogo".)  Exemplo (ficheiro hello1.Dialog Control Language: Introdução 2009@João Tavares Introdução (cont. world". } // é dado o nome "hello" à // caixa de diálogo // título a aparecer na caixa // início de zona de texto // texto a aparecer // fim da zona de texto // botão "ok" predefinido 8 CFAC: DCL . … }  Referência a um controlo predefinido:  : nome { atributo = valor . S.DCL .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Introdução (cont.Dialog Control Language: Introdução 2009@João Tavares João Manuel R. : text { label = "Hello.

Tavares 5 . // espaçamento ok_cancel. é mostrada a caixa de diálogo . o ficheiro é carregado .)  Exemplo (ok_cancel.dcl) ex_cancel : dialog { // é dado o nome "ex_cancel" à // caixa i d de diál diálogo label = "Exemplo Ok_Cancel". // título a aparecer na caixa spacer_0.lsp): (Defun c:hello () (setq dcl_id (load_dialog "hello1.DCL . S.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Introdução (cont.)  Exemplo (ficheiro hello1. se não existe saí .dcl")) (if (not (new_dialog "hello" dcl_id)) (exit) ) (start_dialog) (unload_dialog dcl_id) ) . retira a recém-criada caixa 10 CFAC: DCL .Dialog Control Language: Introdução 2009@João Tavares João Manuel R. // botões "ok" e "cancel" // predefinidos } 9 CFAC: DCL . verifica se existe o ficheiro .Dialog Control Language: Introdução 2009@João Tavares Introdução (cont.

Dialog Control Language: Introdução 2009@João Tavares João Manuel R. Tavares 6 . S.)  Tile Clusters  boxed_column  boxed_radio_column  boxed_radio_row  boxed_row  column  dialog  radio_column  radio_row  row 12 CFAC: DCL .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Controlos Predefinidos  Exit Buttons e Error Tiles  ok_only  ok_cancel  ok_cancel_help ok cancel help  ok_cancel_help_errtile  ok_cancel_help_info  errtile  Predefined Active Tiles  button  edit_box  list_box  popup_list  radio_button  toggle  slider  image_button 11 CFAC: DCL .DCL .Dialog Control Language: Introdução  Decorative e Informative Tiles  image  text  spacer  spacer_0  spacer_1  Text Clusters  ncatenation  paragraph  text_part 2009@João Tavares Controlos Predefinidos (cont.

radio_row 13 CFAC: DCL . boxed_row. image_button. image_button  big_increment  Aplicam-se a: slider 14 CFAC: DCL . edit_box. list_box  aspect_ration  Aplicam-se a: image. slider. popup_list. boxed_radio_column  Specific Tiles  allow_accept  Aplicam-se a: edit_box.DCL .Dialog Control Language: Introdução 2009@João Tavares João Manuel R. radio_column. boxed_radio_row. boxed_column. image_button. radio_column. radio_button.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Atributos de Controlos  Globais  alignment  fixed_height  fixed_width fi d id h  height  width  Aplicam-se a: All Tiles  Action Tiles      action is_enabled is_tab_stop key mnemonic  Aplicam-se a: button. toggle. column. radio_row. S.)  Tile Clusters  children_alignment  children_fixed_height _ _ g  children_fixed_width  Aplicam-se a: row.Dialog Control Language: Introdução 2009@João Tavares Atributos de Controlos (cont. Tavares 7 . list_box.

image_button  edit_limit  Aplicam-se a: edit_box  edit_width  Aplicam-se a: edit_box.)  color  Aplicam-se a: image. radio_button. edit_box.)  is_default  Aplicam-se a: button  label  Aplicam-se a: boxed_row. toggle  layout  Aplicam-se a: slider  list  Aplicam-se A li a: list_box. list_box. popup_list. li t b popup_list li t  max_value  Aplicam-se a: slider  min_value  Aplicam-se a: slider 16 CFAC: DCL .Dialog Control Language: Introdução 2009@João Tavares Atributos de Controlos (cont.)  Specific Tiles (cont.)  Specific Tiles (cont. boxed_column.DCL . button. popup_list  fixed_width_font  Aplicam-se a: edit_box. Tavares 8 . popup_list  initial_focus initial focus  Aplicam-se a: dialog  is_cancel  Aplicam-se a: button 15 CFAC: DCL .Dialog Control Language: Introdução 2009@João Tavares João Manuel R. dialog. S. boxed_radio_row. boxed_radio_column.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Atributos de Controlos (cont. text.

activa.)  Specific Tiles (cont.DCL . Tavares 9 . atribuir valor para o tile key (string) (mode_tile key modo) . 2 destaca.selecciona conteúdo. fecha diálogo e retorna saída (term_dialog) . define modo (0 . 4 . popup_list  value  Aplicam-se a: text. estabelece acção para tile key (get_attr key atributo) . popup_list  tab_truncate tab truncate  Aplicam-se a: list_box.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Atributos de Controlos (cont.Dialog Control Language: Introdução João Manuel R. fecha todos diálogos abertos (unload_dialog dcl_id) . 3 . todos active tiles (excepto buttons e image_buttons) 17 CFAC: DCL .Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL  (load_dialog ficheiro. S. obter bt valor l d do tile til key k (string ti ) (set_tile key valor) .muda destaque de uma imagem) 2009@João Tavares 18 CFAC: DCL . 1 . descarrega diálogo (action_tile key expressão) .dcl)           . carrega diálogo (start_dialog _ g) . carrega file (new_dialog nome dcl_id acção ecrã) . obter valor do tile key (string) (get_tile t til key k ) .)  multiple_select  Aplicam-se a: list_box  password_char  Aplicam-se a: edit_box  small_increment  Aplicam-se a: slider  tabs  Aplicam-se a: list_box.desactiva. mostra diálogo g (done_dialog saida) .

desenha rectângulo (slide_image xini yini larg alt nomeslide) . dimensão de imagem em y (vector_image xini yini xfim yfim cor) . inserir slide (end_image) . desenha vector (fill_image xini yini larg alt cor) . dimensão de imagem em x (dimy_tile key) . inicia criação de imagem (dimx_tile key) . termina criação de imagem 2009@João Tavares CFAC: DCL .) 20 CFAC: DCL . inicia lista  (add_list string)         19 .DCL . S.Dialog Control Language: Introdução Funções AutoLISP para diálogos DCL (cont.)  (start_list key operação indice) . Tavares 10 .Dialog Control Language: Introdução 2009@João Tavares João Manuel R. termina t i li lista t (start_image key) . adiciona string numa lista (end_list d li t) .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.

Dialog Control Language: Introdução 2009@João Tavares João Manuel R. S. Tavares 11 .) 21 CFAC: DCL .DCL .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL (cont.) 22 CFAC: DCL .

Dialog Control Language: Introdução 2009@João Tavares João Manuel R.DCL . S.Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL (cont. Tavares 12 .) 23 CFAC: DCL .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.) 24 CFAC: DCL .

) 26 CFAC: DCL .) 25 CFAC: DCL .Dialog Control Language: Introdução 2009@João Tavares João Manuel R.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont. S.DCL .Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL (cont. Tavares 13 .

defun .. descarregar o diálogo da memoria .LSP . label = "Close". if .. AUTOLISP CODING ENDS HERE .Dialog Control Language: Introdução 2009@João Tavares João Manuel R. fixed_width = true. S. } } //DCL CODING ENDS HERE 27 // controlo de texto // definição de um botão // nome do botão // etiqueta q do botão // controlo por defeito // alinhamento CFAC: DCL . indicação no prompt do autocad após load do programa 28 CFAC: DCL . . Tavares 14 ..Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL1. mostrar diálogo . is_default = true. load do ficheiro de definição .") (defun C:TEST_DCL1 () (setq dcl dcl_id id (load (load_dialog dialog "test test_dcl1. alignment = centered. action_tile – quando carrega no botão. AUTOLISP CODING STARTS HERE (prompt "\nType TEST_DCL1 to run.DCL //DCL CODING STARTS HERE test_dcl1 : dialog { label = "Test Test Dialog No 1 1".DCL .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL1.dcl dcl1 dcl")) )) (if (not (new_dialog "test_dcl1" dcl_id)) (exit) ) (action_tile "accept" "(done_dialog)") (start_dialog) (unload_dialog dcl_id) (princ) ) (princ) .. : text { label = "This is a Test Message". fecha o diálogo . } : button { key = "accept". carregamento do diálogo em memoria . alignment = centered.

Tavares 15 . 30 chars edit width = 30. // valor inicial } : button { key = "accept". CFAC: DCL .DCL //DCL CODING STARTS HERE test_dcl2 : dialog { label = "Test Dialog No 2". edit_width larg max. is_default = true. 3 chars value = "". // char sublinhado key = "name".Dialog Control Language: Introdução alignment = centered. 3 chars edit_width = 3.DCL . alignment = centered. fixed_width = true. // max. key = "age". mnemonic = "N".  Comentários indicados com //  Sensível a maiúsculas e a minúsculas  Sequência de utilização:  Load do ficheiro do diálogo  Load da definição do diálogo  Executar instrução(ões) ç ( ) action_tile  Iniciar o diálogo  Descarregar o diálogo da memória 29 CFAC: DCL . label = "OK". S. max 30 chars } : edit_box { label = "Enter Your Age :". : edit_box { label = "Enter Your Name :". // larg. } } //DCL CODING ENDS HERE 2009@João Tavares 30 João Manuel R. // largura max. // input max.Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL2. edit_limit = 30.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: Notas  Cada linha de atributo no ficheiro de definição do diálogo termina com . } : errtile // para mensagem de erro { width = 34. edit_limit = 3. alignment = centered. mnemonic = "A".

após selecção atribui valor à variável name (action_tile "age" "(setq age $value)") ." ) ) CFAC: DCL . if ) . AUTOLISP CODING STARTS HERE (prompt "\nType TEST_DCL2 to run. após selecção atribui valor à variável age (action_tile "accept" "(val1)") . defun . S.dcl")) (if (not (new_dialog "test_dcl2" dcl_id)) (exit) ) . message box "\nand you are " age " years of age. progn (val2) . após selecção chama subprograma ( (start_dialog) d l ) .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL2.DCL . defun . define conteúdo em run-time (mode_tile "name" 2) .Dialog Control Language: Introdução 2009@João Tavares 31 Exemplo: file TEST_DCL2. if (set_tile "name" "Enter Name Here") . por valor no controlo (mode_tile "name" 2) ) . mostra d diálogo ál (unload_dialog dcl_id) (alert (strcat "Your name is " name . por valor no controlo (mode_tile "age" 2) ) CFAC: DCL .LSP ..") (defun C:TEST_DCL2 (/ dcl_id) (setq q dcl_id (load_dialog g "test_dcl2... receber valor no controlo (progn (set_tile "error" "Invalid Age .Dialog Control Language: Introdução 2009@João Tavares 32 João Manuel R.) (princ) ) .Please Try Again!!") . chama subprograma ) .. receber valor no controlo (progn (set_tile "error" "You must enter a name!") .------------------(defun val2 () (if (< (atoi (get_tile "age")) 1) . permite override (action_tile "name" "(setq name $value)") . Tavares 16 .----------------------(defun val1 () (if (= (get_tile "name") "Enter Name Here") .LSP (cont.

DCL afra : dialog { label = "A" . load . progn .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL2. Tavares 17 . width = 12. key = "save". mnemonic = "O". if . mnemonic = "S". } } 2009@João Tavares 34 João Manuel R. defun . alignment = centered. alignment = centered.) (done_dialog) ) ) (princ) . mnemonic = "C". S. fecha diálogo .Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL3. mnemonic = "L". : column { : row { : button { label = "OK". CFAC: DCL .DCL .LSP (cont. key = "load". key = "accept". // tem de existir um // default } : button { label = "Cancel". alignment = centered. is_default = true.Dialog Control Language: Introdução } } : row { : button { label = "Save". width = 12. width = 12. width = 12.AUTOLISP CODING ENDS HERE 33 CFAC: DCL . key = "cancel". } : button { label = "Load". alignment = centered.

if (start_dialog) .". } } } } 35 CFAC: DCL . alignment = centered....DCL . } : button { label = "About. mnemonic = "H". width = 12.) : row { : button { label = "Help.Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL3.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL3. mnemonic = "H". alignment = centered... width = 12.DCL" ) ) (if (not (new_dialog "afra" dcl_id)) (exit) ) .. AUTOLISP CODING STARTS HERE (prompt "\nType TEST_DCL3 to run. key = "About".") (defun C:TEST_DCL3 (/ dcl_id) (setq q dcl_id (load_dialog " TEST_DCL3.. sai do diálogo quando seleccionar o botão OK ( l d d l d (unload_dialog dcl_id) l d) (princ) ) . S.".Dialog Control Language: Introdução 2009@João Tavares João Manuel R. key = "help".. Tavares 18 .LSP .DCL (cont. defun 36 CFAC: DCL .

} : radio_button { key = "rb6" . : radio_button { key = "rb1" . label = "Bolt Holes &Elevation" . value = "5”.DCL (cont. S. : row { : boxed_radio_column { label = "Type" . label = "Bolt Holes &Slotted" . Tavares 19 .DCL samp : dialog { label = "Structural Holes" .Dialog Control Language: Introdução //define radio button //give it a name //give it a label //end definition //define radio button //give it a name //give it a label //end definition //define radion button //give it a name //give it a label //end definition // d radio //end d column l //define boxed column //give it a label //define popup list //give it a name //initial value 2009@João Tavares 38 João Manuel R. label = "Bolt Holes &Site" . value = "1" .Dialog Control Language: Introdução //dialog name //give it a label //define row //define radio column //give it a label //define radion button //give it a name //give it a label //switch it on //end definition //define radio button //give it a name // //give it a l label b l //end definition //define radio button //give it a name //give it a label //end definition 2009@João Tavares Exemplo: file TEST_DCL4. } 37 CFAC: DCL . l b l = "B label "Bolt l Holes H l Sho&p" Sh ". } CFAC: DCL . } : radio_button { key = "rb3" .) : radio_button { key = "rb4" .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4. } } : boxed_column { label = "&Size". } : radio_button { key = "rb2" . : popup_list { key = "selections". } : radio_button { key = "rb5" .DCL . label = "Bolt Holes &Ctsnk" . label = "Bolt Holes &Hidden" .

label = "Ortho On/Off". edit_width = 6 .0 .0 . max_value = 100. } : boxed_row { : toggle { key = "tog1". } 39 CFAC: DCL . : row { : image { key = "im" .DCL (cont. } CFAC: DCL . } : paragraph h{ : text_part { label = "Designed and Created". } } ok_cancel . } : slider { key = "myslider" .Dialog Control Language: Introdução 40 //*define toggle //*give it a name //*give it a label //*end definition //*end boxed row //predifined OK/Cancel //define row //define image tile //give it a name //and a height //and now a width //end image //d f paragraph //define h //define text //give it some text //end text //define more text //some more text //end text 2009@João Tavares João Manuel R.Dialog Control Language: Introdução //end boxed column //end row //define edit box //give g it a name //give it a label //6 characters only //end edit box //defin slider //give it a name //upper value //lower value //initial value // d slider //end ld //*define boxed row //*define toggle //*give it a name //*give it a label 2009@João Tavares Exemplo: file TEST_DCL4.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4. } : text_part { label = "by Kenny Ramage". value = "50".) : toggle { key = "tog2". label = "Slot &Length (O/All Slot)" . label = "Snap On/Off". S. min_value = 0. width = 1.DCL . Tavares 20 .DCL (cont.) } } : edit_box { key y = "eb1" . height = 1.

preset hole type (setq q siz "M20") .) } } } //end paragraph //end row //end dialog 41 CFAC: DCL . preset slot length (setq hole "site") . not (exit) .LSP (defun C:samp () .DCL" ) ) .p preset hole size (setq NAMES '("M6" "M8" "M10" "M12" "M16" "M20" "M24" "M30“) . define function (setq lngth 50. exit if no dialog ) . S.DCL .Dialog Control Language: Introdução 2009@João Tavares João Manuel R. load dialog (if (not (new_dialog "samp" dcl_id) .Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL4. Tavares 21 . setq dcl_id (load_dialog " TEST_DCL4. if (setq w (dimx_tile "im") . test for dialog ) . get image tile height ) .0) .DCL (cont. setq 42 CFAC: DCL .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4. define list ) (setq . get image tile width h (dimy_tile "im") .

S. fill the list box .DCL . check values . define function .) (start_image "im") (fill_image 0 0 w h 5) (end_image) (start_list "selections") (mapcar 'add_list NAMES) (end_list) (set_tile "eb1" "50") (mode_tile "eb1" 1) (mode_tile "myslider" 1) (setq orth (itoa (getvar "orthomode"))) (set_tile "tog1" orth) (setq sna (itoa (getvar "snapmode"))) ( (set_tile l " "tog2" 2" sna) ) (action_tile "myslider" "(slider_action $value $reason)" ) 43 .Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL4. *switch * h toggle l on or off ff . start the image .p pass arguments g to ebox_action .) (action_tile "eb1" "(ebox_action $value $reason)" ) (defun slider_action (val why) (if (or (= why 2) (= why 1)) (set_tile "eb1" val) ) ) (defun ebox_action (val why) (if (or (= why 2) (= why 1)) (set_tile "myslider" val) ) ) (action_tile "tog1" "(setq orth $value)") (action_tile "tog2" "(setq sna $value)") (action_tile "rb1" "(setq hole \"site\")") (action_tile "rb2" "(setq hole \"shop\")") 44 CFAC: DCL .LSP (cont. pass arguments to slider_action CFAC: DCL .Dialog Control Language: Introdução . store hole type 2009@João Tavares João Manuel R. define function . *get snap value . update edit box .LSP (cont. *switch toggle on or off . put dat into edit box . *get orthomode value . *get ortho toggle value . store hole type . if user moves slider . *get snap toggle value . end image . start the list box . is user enters slot length . update slider . fill it with blue . disable slider . disable edit box . end list . Tavares 22 . check values .Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4.

string 'em together 2009@João Tavares Exemplo: file TEST_DCL4.Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4. if O. defun C:samp 2009@João Tavares ) (princ) CFAC: DCL . close dialog. action_tile . pressed . set flag . get list selection .Dialog Control Language: Introdução . store hole type .K. convert to integer . action tile .) (action_tile "rb3" "(setq hole \"hid\")") (action_tile "rb4" "(setq hole \"ctsk\")") (action_tile "rb5" "(setq hole \"elev\")") (action_tile "rb6" "(setq hole \"slot\") (mode_tile \"eb1\" 0) (mode_tile \"myslider\" 0) (mode_tile \"eb1\" 2)" ) (action_tile "cancel" "(d "(done_dialog) d l )( (setq userclick l k nil)" l)" ) (action_tile "accept" (strcat "(progn 45 CFAC: DCL . get the h size . strcat .K.) (setq SIZ (atof (get_tile \"selections\")))" "(setq lngth (atof (get_tile \"eb1\")))" "(setvar \"orthomode\" (atoi orth))" "(setvar \"snapmode\" p (atoi sna))" " (done_dialog)(setq userclick T))" ) ) (start_dialog) (unload_dialog dcl_id) (if userclick (progn (setq SIZ (fix SIZ)) ( (setq SIZ ( (nth h SIZ NAMES)) ) ) (princ) 46 . if cancel button pressed .DCL . start dialog . store hole type . switch focus to edit box . close l d dialog.LSP (cont. *ortho on/off . unload . check O. Tavares 23 . store hole type . store hole type . l set fl flag . *snap p on/off . get slot length . enable slider .LSP (cont. progn . enable edit box .Dialog Control Language: Introdução João Manuel R. S. if userclick . was selected .