Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Bibliografia
Material disponvel no AfraLisp.net em http://www.afralisp.net Programao em AutoCAD, Curso Completo
2009@Joo Tavares
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 :
*/
Criao de um dilogo:
Sintaxe: nome : dialog { contedo }
2009@Joo Tavares
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) dialogo (unload_dialog dcl_id) )
6 CFAC: DCL - Dialog Control Language: Introduo 2009@Joo Tavares
Introduo (cont.)
Definio de um controlo (tile):
nome : item1 [ : item2 : item3 ]
{ atributo = valor ; }
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
Introduo (cont.)
Exemplo (ok_cancel.dcl)
ex_cancel : dialog {
// dado o nome "ex_cancel" // caixa de 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
Controlos Predefinidos
Exit Buttons e Error Tiles ok_only ok_cancel 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
Atributos de Controlos
Globais
alignment fixed_height fixed_width 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@Joo Tavares
2009@Joo Tavares
; carrega file (new_dialog nome dcl_id aco ecr) ; carrega dilogo (start_dialog) ; mostra dilogo (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 key) ; obter valor do tile key (string) (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
; adiciona string numa lista (end_list) ; termina lista (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
21
2009@Joo Tavares
22
2009@Joo Tavares
23
2009@Joo Tavares
24
2009@Joo Tavares
25
2009@Joo Tavares
26
2009@Joo Tavares
// controlo de texto
// definio de um boto // nome do boto // etiqueta do boto // controlo por defeito // alinhamento
2009@Joo Tavares
28
2009@Joo Tavares
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
30
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; }
2009@Joo Tavares
31
(princ)
32
33
2009@Joo Tavares
} } : row { : button { label = "Save"; key = "save"; mnemonic = "S"; alignment = centered; width = 12; } : button { label = "Load"; key = "load"; mnemonic = "L"; alignment = centered; width = 12; } }
2009@Joo Tavares
34
}
35
2009@Joo Tavares
36
2009@Joo Tavares
//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 label //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 //end radio column //define boxed column //give it a label //define popup list //give it a name //initial value
2009@Joo Tavares
38
//end boxed column //end row //define edit box //give 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 //end slider //*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 //define paragraph //define text //give it some text //end text //define more text //some more text //end text
2009@Joo Tavares
41
2009@Joo Tavares
; 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 toggle on or off ; if user moves slider ; pass arguments to slider_action
2009@Joo Tavares
; is user enters slot length ; pass arguments 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
; 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 dialog, set flag ; action_tile ; if O.K. pressed ; string 'em together
2009@Joo Tavares
) (start_dialog) (unload_dialog dcl_id) (if userclick (progn (setq SIZ (fix SIZ)) (setq SIZ (nth SIZ NAMES)) ) ) (princ)
46
) (princ)