Академический Документы
Профессиональный Документы
Культура Документы
2009@FEUP/DEMec-SDI
Bibliografia
Material disponvel no AfraLisp.net em http://www.afralisp.net Programao em AutoCAD, Curso Completo
2009@Joo Tavares
2009@FEUP/DEMec-SDI
Introduo
A Dialog Control Language permite criar interfaces grficas (caixas de
dilogo e de mensagens) para aplicaes em AutoLISP/Visual Lisp Cada caixa de dilogo deve ser definida (dialog definition) em ficheiros de definio com a extenso dcl Cada controlo de um dilogo necessita ser definido (tile definition) e referenciado no cdigo lisp pelo seu nome (key) Cada propriedade (property) de um controlo (tile) designada por atributo do dilogo (attribute) Cada mtodo de um controlo designado por expresso de aco (action expression) O Visual Lisp Editor possibilita a previso de um dilogo definido num ficheiro dcl (em Tools, Interface Tools)
2009@Joo Tavares
Introduo (cont.)
No ficheiro base.dcl do AutoCAD existem definies e estruturas teis que
podem ser usadas (para usar, incluir @include "base.dcl" no ficheiro respectivo) Na definio dos dilogos (ficheiros dcl):
So usados { } em vez de ( ) Para definir propriedades usa-se o sinal = As linhas de atributos terminam com ; Comentrios so indicados com // ou /* As definies so iniciadas com :
*/
2009@Joo Tavares
2009@FEUP/DEMec-SDI
Introduo (cont.)
Exemplo (ficheiro hello.dcl):
// dado o nome "hello" // caixa de dilogo label = "Primeira Caixa de Dilogo"; // ttulo a aparecer na caixa : text { // incio de zona de texto label = "Hello, world"; // texto a aparecer } // fim da zona de texto : button { // criado um boto OK para terminar key = "terminado"; // o valor da tecla label = "OK"; // o nome da tecla is_default = true; // declara que este o boto por omisso } // fim do boto "ok" }
5 CFAC: DCL - Dialog Control Language: Introduo 2009@Joo Tavares
hello : dialog {
Introduo (cont.)
Exemplo (ficheiro hello.lsp):
(Defun c:hello () (setq dcl_id (load_dialog "hello.dcl")) (if (not (new_dialog "hello" dcl_id)) (exit) ) (start_dialog) d l dialogo (unload_dialog dcl_id) )
6 CFAC: DCL - Dialog Control Language: Introduo 2009@Joo Tavares
2009@FEUP/DEMec-SDI
Introduo (cont.)
Definio de um controlo (tile):
nome : item1 [ : item2 : item3 ]
{ atributo = valor ; }
Referncia a um controlo predefinido:
: nome {
atributo = valor ; }
2009@Joo Tavares
Introduo (cont.)
Exemplo (ficheiro hello1.dcl):
hello : dialog { label = "Primeira Caixa de Dilogo"; : text { label = "Hello, world"; } ok_only; }
// dado o nome "hello" // caixa de dilogo // ttulo a aparecer na caixa // incio de zona de texto // texto a aparecer // fim da zona de texto // boto "ok" predefinido
2009@Joo Tavares
2009@FEUP/DEMec-SDI
Introduo (cont.)
Exemplo (ok_cancel.dcl)
ex_cancel : dialog {
// dado o nome "ex_cancel" // caixa i d de dil dilogo label = "Exemplo Ok_Cancel"; // ttulo a aparecer na caixa spacer_0; // espaamento ok_cancel; // botes "ok" e "cancel" // predefinidos
2009@Joo Tavares
Introduo (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) )
10
2009@Joo Tavares
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 - Dialog Control Language: Introduo
Decorative e Informative Tiles image text spacer spacer_0 spacer_1 Text Clusters ncatenation paragraph text_part
2009@Joo Tavares
12
2009@Joo Tavares
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
13
2009@Joo Tavares
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: Introduo 2009@Joo Tavares
2009@FEUP/DEMec-SDI
2009@Joo Tavares
2009@FEUP/DEMec-SDI
2009@Joo Tavares
; carrega file (new_dialog nome dcl_id aco ecr) ; carrega dilogo (start_dialog _ g) ; mostra dilogo g (done_dialog saida) ; fecha dilogo e retorna sada (term_dialog) ; fecha todos dilogos abertos (unload_dialog dcl_id) ; descarrega dilogo (action_tile key expresso) ; estabelece aco para tile key (get_attr key atributo) ; obter valor do tile key (string) (get_tile t til key k ) ; obter bt valor l d do 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 contedo, 4 - muda destaque de uma imagem)
2009@Joo Tavares
18
2009@FEUP/DEMec-SDI
; adiciona string numa lista (end_list d li t) ; termina t i li lista t (start_image key) ; inicia criao de imagem (dimx_tile key) ; dimenso de imagem em x (dimy_tile key) ; dimenso de imagem em y (vector_image xini yini xfim yfim cor) ; desenha vector (fill_image xini yini larg alt cor) ; desenha rectngulo (slide_image xini yini larg alt nomeslide) ; inserir slide (end_image) ; termina criao de imagem
2009@Joo Tavares
20
2009@Joo Tavares
10
2009@FEUP/DEMec-SDI
21
2009@Joo Tavares
22
2009@Joo Tavares
11
2009@FEUP/DEMec-SDI
23
2009@Joo Tavares
24
2009@Joo Tavares
12
2009@FEUP/DEMec-SDI
25
2009@Joo Tavares
26
2009@Joo Tavares
13
2009@FEUP/DEMec-SDI
// controlo de texto
// definio de um boto // nome do boto // etiqueta q do boto // controlo por defeito // alinhamento
2009@Joo Tavares
28
2009@Joo Tavares
14
2009@FEUP/DEMec-SDI
Exemplo: Notas
Cada linha de atributo no ficheiro de definio do dilogo
termina com ; Comentrios indicados com // Sensvel a maisculas e a minsculas Sequncia de utilizao:
Load do ficheiro do dilogo Load da definio do dilogo Executar instruo(es) ( ) action_tile Iniciar o dilogo Descarregar o dilogo da memria
29
2009@Joo 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@Joo Tavares
30
15
2009@FEUP/DEMec-SDI
31
32
16
2009@FEUP/DEMec-SDI
33
2009@Joo 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@Joo Tavares
34
17
2009@FEUP/DEMec-SDI
36
2009@Joo Tavares
18
2009@FEUP/DEMec-SDI
//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@Joo 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@Joo Tavares
38
19
2009@FEUP/DEMec-SDI
//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@Joo Tavares
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@Joo Tavares
20
2009@FEUP/DEMec-SDI
41
2009@Joo Tavares
21
2009@FEUP/DEMec-SDI
; 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@Joo Tavares
; is user enters slot length ;p pass 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@Joo Tavares
22
2009@FEUP/DEMec-SDI
; 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 d dialog, l set fl flag ; action_tile ; if O.K. pressed ; string 'em together
2009@Joo Tavares
; get list selection ; get slot length ; *ortho on/off ; *snap p 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@Joo Tavares
) (princ)
CFAC: DCL - Dialog Control Language: Introduo
23