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 João Manuel R. S. Tavares 2009@João 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 3 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) 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 C i ã dde um diál diálogo: Sintaxe: nome : dialog { conteúdo } 4 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 2 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Introdução (cont.) Exemplo (ficheiro hello.dcl): hello : dialog { // é dado o nome "hello" à // caixa de diálogo label = "Primeira Caixa de Diálogo"; // título a aparecer na caixa : text { // início de zona de texto label = "Hello, world"; // texto a aparecer } // fim da zona de texto : button { // é criado um botão OK para terminar key = "terminado"; // o valor da tecla label = "OK"; // o nome da tecla is_default = true; // declara que este é o botão por omissão } // fim do botão "ok" } 5 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Introdução (cont.) Exemplo (ficheiro hello.lsp): (Defun c:hello () (setq dcl_id (load_dialog "hello.dcl")) (if (not (new_dialog "hello" dcl_id)) (exit) ) ; o file é carregado ; verifica se existe o ficheiro ; se não existe saí (start_dialog) d l dialogo (unload_dialog dcl_id) ; é mostrada d a caixa de d ; retira a recém-criada caixa ) 6 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 3 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Introdução (cont.) Definição de um controlo (tile): nome : item1 [ : item2 : item3 …] { atributo = valor ; … } Referência a um controlo predefinido: : nome { atributo = valor ; … } 7 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Introdução (cont.) Exemplo (ficheiro hello1.dcl): hello : dialog { label = "Primeira Caixa de Diálogo"; : text { label = "Hello, world"; } ok_only; } 8 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares // é 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 2009@João Tavares 4 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Introdução (cont.) Exemplo (ok_cancel.dcl) ex_cancel : dialog { // é dado o nome "ex_cancel" à // caixa i dde diál diálogo label = "Exemplo Ok_Cancel"; // título a aparecer na caixa spacer_0; // espaçamento ok_cancel; // botões "ok" e "cancel" // predefinidos } 9 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Introdução (cont.) Exemplo (ficheiro hello1.lsp): (Defun c:hello () (setq dcl_id (load_dialog "hello1.dcl")) (if (not (new_dialog "hello" dcl_id)) (exit) ) (start_dialog) (unload_dialog dcl_id) ; o ficheiro é carregado ; verifica se existe o ficheiro ; se não existe saí ; é mostrada a caixa de diálogo ; retira a recém-criada caixa ) 10 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 5 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 Decorative e Informative Tiles image text spacer spacer_0 spacer_1 Text Clusters ncatenation paragraph text_part CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Controlos Predefinidos (cont.) 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 João Manuel R. S. Tavares 2009@João Tavares 6 DCL - 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; edit_box; image_button; list_box; popup_list; radio_button; slider; toggle; radio_column; radio_row 13 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Atributos de Controlos (cont.) Tile Clusters children_alignment children_fixed_height _ _ g children_fixed_width Aplicam-se a: row; column; radio_row; radio_column; boxed_row; boxed_column; boxed_radio_row; boxed_radio_column Specific Tiles allow_accept Aplicam-se a: edit_box; image_button; list_box aspect_ration Aplicam-se a: image; image_button big_increment Aplicam-se a: slider 14 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 7 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Atributos de Controlos (cont.) Specific Tiles (cont.) color Aplicam-se a: image; image_button edit_limit Aplicam-se a: edit_box edit_width Aplicam-se a: edit_box; popup_list fixed_width_font Aplicam-se a: edit_box; 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 Atributos de Controlos (cont.) Specific Tiles (cont.) is_default Aplicam-se a: button label Aplicam-se a: boxed_row; boxed_column; boxed_radio_row; boxed_radio_column; button; dialog; edit_box; list_box; popup_list; radio_button; text; toggle layout Aplicam-se a: slider list Aplicam-se A li a: list_box; 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 João Manuel R. S. Tavares 2009@João Tavares 8 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Atributos de Controlos (cont.) Specific Tiles (cont.) 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; popup_list tab_truncate tab truncate Aplicam-se a: list_box; popup_list value Aplicam-se a: text; 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.dcl) 18 ; carrega file (new_dialog nome dcl_id acção ecrã) ; carrega diálogo ((start_dialog) _ g) ; mostra diálogo g (done_dialog saida) ; fecha diálogo e retorna saída (term_dialog) ; fecha todos diálogos abertos (unload_dialog dcl_id) ; descarrega diálogo (action_tile key expressão) ; estabelece acção para tile key (get_attr key atributo) ; obter valor do tile key (string) ( t til key) (get_tile k ) ; obter bt valor l ddo tile til key k (string) (ti ) (set_tile key valor) ; atribuir valor para o tile key (string) (mode_tile key modo) ; define modo (0 - activa, 1 - desactiva, 2 destaca, 3 - selecciona conteúdo, 4 - muda destaque de uma imagem) CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 9 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.) (start_list key operação indice) ; inicia lista (add_list string) 19 ; adiciona string numa lista ( d li t) (end_list) ; termina t i lilista t (start_image key) ; inicia criação de imagem (dimx_tile key) ; dimensão de imagem em x (dimy_tile key) ; dimensão de imagem em y (vector_image xini yini xfim yfim cor) ; desenha vector (fill_image xini yini larg alt cor) ; desenha rectângulo (slide_image xini yini larg alt nomeslide) ; inserir slide (end_image) ; termina criação de imagem CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL (cont.) 20 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 10 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.) 21 CFAC: DCL - 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 João Manuel R. S. Tavares 2009@João Tavares 11 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.) 23 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL (cont.) 24 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 12 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Funções AutoLISP para diálogos DCL (cont.) 25 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Funções AutoLISP para diálogos DCL (cont.) 26 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 13 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL1.DCL //DCL CODING STARTS HERE test_dcl1 : dialog { label = "Test Test Dialog No 11";; : text { label = "This is a Test Message"; alignment = centered; } : button { key = "accept"; label = "Close"; is_default = true; fixed_width = true; alignment = centered; } } //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 - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL1.LSP ; AUTOLISP CODING STARTS HERE (prompt "\nType TEST_DCL1 to run.....") ; indicação no prompt do autocad após load do programa (defun C:TEST_DCL1 () (setq dcl dcl_id id (load (load_dialog dialog "test test_dcl1.dcl dcl1 dcl")) )) ; load do ficheiro de definição (if (not (new_dialog "test_dcl1" dcl_id)) ; carregamento do diálogo em memoria (exit) ) ; if (action_tile "accept" "(done_dialog)") ; action_tile – quando carrega no botão, fecha o diálogo (start_dialog) ; mostrar diálogo (unload_dialog dcl_id) ; descarregar o diálogo da memoria (princ) ) ; defun (princ) ; AUTOLISP CODING ENDS HERE 28 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 14 DCL - 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 ; 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 - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL2.DCL 30 //DCL CODING STARTS HERE test_dcl2 : dialog { label = "Test Dialog No 2"; : edit_box { label = "Enter Your Name :"; mnemonic = "N"; // char sublinhado key = "name"; alignment = centered; edit_limit = 30; // max. 30 chars edit width = 30; // larg. edit_width larg max. max 30 chars } : edit_box { label = "Enter Your Age :"; mnemonic = "A"; key = "age"; CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares alignment = centered; edit_limit = 3; // input max. 3 chars edit_width = 3; // largura max. 3 chars value = ""; // valor inicial } : button { key = "accept"; label = "OK"; is_default = true; fixed_width = true; alignment = centered; } : errtile // para mensagem de erro { width = 34; } } //DCL CODING ENDS HERE 2009@João Tavares 15 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL2.LSP 31 ; AUTOLISP CODING STARTS HERE (prompt "\nType TEST_DCL2 to run.....") (defun C:TEST_DCL2 (/ dcl_id) (setqq dcl_id (load_dialogg "test_dcl2.dcl")) (if (not (new_dialog "test_dcl2" dcl_id)) (exit) ) ; if (set_tile "name" "Enter Name Here") ; define conteúdo em run-time (mode_tile "name" 2) ; permite override (action_tile "name" "(setq name $value)") ; após selecção atribui valor à variável name (action_tile "age" "(setq age $value)") ; após selecção atribui valor à variável age (action_tile "accept" "(val1)") ; após selecção chama subprograma ( (start_dialog) d l ) ; mostra ddiálogo ál (unload_dialog dcl_id) (alert (strcat "Your name is " name ; message box "\nand you are " age " years of age." ) ) CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL2.LSP (cont.) 32 (princ) ) ; defun ;----------------------(defun val1 () (if (= (get_tile "name") "Enter Name Here") ; receber valor no controlo (progn (set_tile "error" "You must enter a name!") ; por valor no controlo (mode_tile "name" 2) ) ; progn (val2) ; chama subprograma ) ; if ) ; defun ;------------------(defun val2 () (if (< (atoi (get_tile "age")) 1) ; receber valor no controlo (progn (set_tile "error" "Invalid Age - Please Try Again!!") ; por valor no controlo (mode_tile "age" 2) ) CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 16 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL2.LSP (cont.) (done_dialog) ) ) (princ) ; progn ; fecha diálogo ; if ; defun ;AUTOLISP CODING ENDS HERE 33 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL3.DCL 34 afra : dialog { label = "A" ; : column { : row { : button { label = "OK"; key = "accept"; mnemonic = "O"; alignment = centered; width = 12; is_default = true; // tem de existir um // default } : button { label = "Cancel"; key = "cancel"; mnemonic = "C"; alignment = centered; width = 12; CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares } } : row { : button { label = "Save"; key = "save"; mnemonic = "S"; alignment = centered; width = 12; } : button { label = "Load"; key = "load"; load ; mnemonic = "L"; alignment = centered; width = 12; } } 2009@João Tavares 17 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL3.DCL (cont.) : row { : button { label = "Help..."; key = "help"; mnemonic = "H"; alignment = centered; width = 12; } : button { label = "About..."; key = "About"; mnemonic = "H"; alignment = centered; width = 12; } } } } 35 CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL3.LSP ; AUTOLISP CODING STARTS HERE (prompt "\nType TEST_DCL3 to run.....") (defun C:TEST_DCL3 (/ dcl_id) (setqq dcl_id (load_dialog " TEST_DCL3.DCL" ) ) (if (not (new_dialog "afra" dcl_id)) (exit) ) ; if (start_dialog) ; sai do diálogo quando seleccionar o botão OK ( l d d l ddcl_id) (unload_dialog l d) (princ) ) ; defun 36 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 18 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4.DCL samp : dialog { label = "Structural Holes" ; : row { : boxed_radio_column { label = "Type" ; : radio_button { key = "rb1" ; label = "Bolt Holes &Site" ; value = "1" ; } : radio_button { key = "rb2" ; l b l = "B label "Bolt l Holes H l Sho&p" Sh "; } : radio_button { key = "rb3" ; label = "Bolt Holes &Hidden" ; } 37 CFAC: DCL - 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 llabel 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.DCL (cont.) 38 : radio_button { key = "rb4" ; label = "Bolt Holes &Ctsnk" ; } : radio_button { key = "rb5" ; label = "Bolt Holes &Elevation" ; } : radio_button { key = "rb6" ; label = "Bolt Holes &Slotted" ; } } : boxed_column { label = "&Size"; : popup_list { key = "selections"; value = "5”; } CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares //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 19 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4.DCL (cont.) } } : edit_box { keyy = "eb1" ; label = "Slot &Length (O/All Slot)" ; edit_width = 6 ; } : slider { key = "myslider" ; max_value = 100; min_value = 0; value = "50"; } : boxed_row { : toggle { key = "tog1"; label = "Ortho On/Off"; } 39 CFAC: DCL - 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.DCL (cont.) 40 : toggle { key = "tog2"; label = "Snap On/Off"; } } ok_cancel ; : row { : image { key = "im" ; height = 1.0 ; width = 1.0 ; } : paragraphh { : text_part { label = "Designed and Created"; } : text_part { label = "by Kenny Ramage"; } CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares //*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 paragraphh //define //define text //give it some text //end text //define more text //some more text //end text 2009@João Tavares 20 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4.DCL (cont.) } } } 41 //end paragraph //end row //end dialog CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL4.LSP (defun C:samp () ; define function (setq lngth 50.0) ; preset slot length (setq hole "site") ; preset hole type (setqq siz "M20") ; ppreset hole size (setq NAMES '("M6" "M8" "M10" "M12" "M16" "M20" "M24" "M30“) ; define list ) (setq ; setq dcl_id (load_dialog " TEST_DCL4.DCL" ) ) ; load dialog (if (not (new_dialog "samp" dcl_id) ; test for dialog ) ; not (exit) ; exit if no dialog ) ; if (setq w (dimx_tile "im") ; get image tile width h (dimy_tile "im") ; get image tile height ) ; setq 42 CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares 2009@João Tavares 21 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4.LSP (cont.) (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 CFAC: DCL - Dialog Control Language: Introdução ; start the image ; fill it with blue ; end image ; start the list box ; fill the list box ; end list ; put dat into edit box ; disable edit box ; disable slider ; *get orthomode value ; *switch toggle on or off ; *get snap value ; *switch * h toggle l on or off ff ; if user moves slider ; pass arguments to slider_action 2009@João Tavares Exemplo: file TEST_DCL4.LSP (cont.) (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 - Dialog Control Language: Introdução João Manuel R. S. Tavares ; is user enters slot length ; ppass arguments g to ebox_action ; define function ; check values ; update edit box ; define function ; check values ; update slider ; *get ortho toggle value ; *get snap toggle value ; store hole type ; store hole type 2009@João Tavares 22 DCL - Dialog Control Language: Introdução 2009@FEUP/DEMec-SDI Exemplo: file TEST_DCL4.LSP (cont.) (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 ; store hole type ; store hole type ; store hole type ; store hole type ; enable edit box ; enable slider ; switch focus to edit box ; if cancel button pressed ; close l ddialog, l set flflag ; action_tile ; if O.K. pressed ; string 'em together CFAC: DCL - Dialog Control Language: Introdução 2009@João Tavares Exemplo: file TEST_DCL4.LSP (cont.) (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 ((nthh SIZ NAMES)) ) ) (princ) 46 ) (princ) CFAC: DCL - Dialog Control Language: Introdução João Manuel R. S. Tavares ; get list selection ; get slot length ; *ortho on/off ; *snapp on/off ; close dialog, set flag ; strcat ; action tile ; start dialog ; unload ; check O.K. was selected ; convert to integer ; get the h size ; progn ; if userclick ; defun C:samp 2009@João Tavares 23