Escolar Documentos
Profissional Documentos
Cultura Documentos
http://www.gr-acad.com.br/paginas/dup1.htm
Programando quadros de dilogo. A linguagem DCL. Cdigos fonte de exemplos diversos, comeando com quadros muito simples at os mais complicados...
Primeira parte...
Em DCL, todas as palavras reservadas devem estar em minsculas. Os valores de chaves ['key'] e rtulos ['label'], alm do prprio nome do dilogo, podem estar em maisculas ou minsculas. No poder haver, em uma definio de quadro de dilogo, 'keys' com o mesmo nome. Se isto ocorrer, o usurio receber a mensagem 'Redefining key...' em sua rotina AutoLISP, alm do que voc ter uma indefinio dentro de sua rotina. As palavras "LAYER", "Layer", "LAyer" e "LAYer" so todas distintas e poderiam ser usadas em uma mesma definio de quadro de dilogo.
dup1_01 : dialog { label = "E.Fernal Software"; initial_focus = "ins-val"; : edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; } ok_cancel_help; }
dup1_02 : dialog { label = "E.Fernal Software"; initial_focus = "ins-val"; : edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; } : radio_row { label = "Unidade mtrica"; : radio_button { label = "Milmetros"; key = "mm"; value = 1; } : radio_button { label = "Centmetros"; key = "cm"; } : radio_button { label = "Metros"; key = "me"; } } : spacer { width = 0.75; } ok_cancel_help; }
1 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
dup1_03 : dialog { label = "E.Fernal Software"; initial_focus = "ins-val"; : edit_box { label = "Insira valor"; key = "ins-val"; edit_width = 12; } : radio_row { label = "Unidade mtrica"; : radio_button { label = "Milmetros"; key = "mm"; value = 1; } : radio_button { label = "Centmetros"; key = "cm"; } : radio_button { label = "Metros"; key = "me"; } } : spacer { width = 0.75; } : row { : button { label = "Layer >"; key = "la"; fixed_width = true; } : text { label = ""; key = "LA"; width = 35; } } : spacer { width = 0.75; } ok_cancel_help; }
;| INCIO DE COMENTRIOS 'dup1_03' o nome do quadro de dilogo. Este nome dever ser digitado, em sua rotina AutoLISP, exatamente como est neste arquivo dcl, no trecho (NEW_DIALOG "dup1_03" dcl_id) Caso contrrio, o carregamento deste quadro de dilogo fracassar. 'initial_focus' ativa o campo 'edit_box' cuja 'key' "ins-val". Ao ser lanado, o usurio poder imediatamente digitar o valor deste campo. 'radio_row' abre uma caixa para uma linha de radio_buttons. Neste caso, inserimos 3 destes componentes. Eles so excludentes : smente um poder estar assinalado. O retorno "1" para assinalado e "0" para vasio. Neste caso poderemos tambm atribuir uma varivel, no caso 'unidade_metrica', a chave do componente assinalado EXEMPLO : (FOREACH x '("mm" "cm" "me") (ACTION_TILE x "(SETQ unidade_metrica $key)") ) Colocamos um espaamento de 0.75 simplesmente por motivos estticos... 'row' nos permite colocar uma srie de componentes em uma linha: neste caso, temos um 'button' e um 'text'. Finalmente, usamos um componente definido no arquivo "BASE.DCL" do AutoCAD, neste caso 'ok_cancel_help', que insere um boto "OK", cuja chave "accept", um bot "Cancel", cuja chave "cancel" e, finalmente, um boto "Help", cuja chave "help" FIM DE COMENTRIOS |;
Segunda parte...
2 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
Palavras chave da linguagem DCL Em AZUL, palavras reservadas que indicam componentes Em VERMELHO, palavras reservadas que indicam atributos dos componentes
@include diretiva de incluso, permite que voc defina clusters em um arquivo parte, e o inclua em todas os demais arquivos .DCL SINTAXE @include "c:\\curso\\dcl\\base.dcl" alignment define o alinhamento de componentes de quadros de dilogo. EXEMPLO : text { label = "Componente 'text' com alinhamento normal"; } : text { label = "Componente 'text' com alinhamento 'centered'"; alignment = centered; } : text { label = "Componente 'text' com alinhamento 'right'"; alignment = right; } O default alinhamento pela esquerda.
allow_accept propriedade dos tiles tipo 'edit_box', 'image_button' e 'list_box' ativa o boto cuja propriedade 'is_default' seja 'true', quando um destes componentes, com 'allow_accept = true', for selecionado EXEMPLO : edit_box { label = "Digite texto"; key = "texto"; edit_width = 40; edit_limit = 55; allow_accept = true; } aspect_ratio define a proporo entre largura e altura de um componente 'image' ou 'image_button' SINTAXE : image { key = "i1"; width = 40; aspect_ratio = 0.75; }
big_increment aplica-se ao componente do tipo 'slider' e define o menor valor incremental ao se deslizar o boto interno deste componente EXEMPLO : slider { key = "Temperatura"; min_value = 0; max_value = 100; small_increment = 1; big_increment = 10; } boxed_column abre uma caixa de enquadramento para uma coluna de componentes diversos, permitindo um rtulo. SINTAXE : boxed_column { label = "Lineweights"; [...demais componentes aqui...] }
3 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
boxed_radio_column abre uma caixa de enquadramento para uma coluna de 'radio_button', permitindo um rtulo. SINTAXE : boxed_radio_column { label = "Caixa de enquadramento"; [...demais componentes aqui...] }
boxed_radio_row abre uma caixa de enquadramento para uma coluna de 'radio_button' SINTAXE : boxed_radio_row { label = "Iso&metric Snap/Grid"; : radio_button { label = "&left"; key = "left"; } : radio_button { label = "&Top"; key = "top"; } : radio_button { label = "&right"; key = "right"; } }
boxed_row abre uma caixa de enquadramento para uma linha de componentes diversos SINTAXE : boxed_radio_row { label = "boxed_row"; [...demais-componentes aqui...] }
4 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
centered propriedade de um alinhamento EXEMPLO : text { label = "Escolha bloco"; alignment = centered; } color define a cor de um quadro de imagem 'image' ou 'image_button' SINTAXE : image { key = "i1"; color = 0; width = 40; aspect_ratio = 0.5; } color_palette_1_7 color_palette_1_9 color_palette_0_9 color_palette_250_255 vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD
column abre uma coluna para componentes diversos SINTAXE : column { [...demais componentes aqui...] } concatenation concatena strings em um componente 'text' EXEMPLO : concatenation {
default_button vide no BASE.DCL do AutoCAD default_dcl_settings dialog define um quadro de dilogo SINTAXE MEU_DCL_01 : dialog { label = "Dcl nmero 1"; : text { label = "Teste de dcl"; alignment = centered; } ok_only; }
edit12_box edit32_box
edit_box abre um campo de edio de texto SINTAXE : edit_box { label = "edit_box"; key = "raio"; edit_width = 12; edit_limit = 16; }
edit_width define a largura de um componente 'edit_box' - vide acima errtile abre um campo 'text' padronizado, cujo 'key' "error". SINTAXE errtile; heigth define a altura de componentes.
5 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
EXEMPLO } false
fcf_ebox vide no BASE.DCL do AutoCAD fcf_ebox1 vide no BASE.DCL do AutoCAD fcf_ibut vide no BASE.DCL do AutoCAD fcf_ibut1 vide no BASE.DCL do AutoCAD files_bottomdf vide no BASE.DCL do AutoCAD files_topdfM vide no BASE.DCL do AutoCAD fixed_width assegura que o componente tenha somente a largura mnima necessria EXEMPLO : button { label = "Largura"; key = "btn1"; fixed_width = true; } help_button insere um boto "Help" padronizado, cujo 'key' "help" SINTAXE help_button;
icon_image image abre um quadro de imagem SINTAXE : image { key = "img35"; width = 40; aspect_ratio = 0.77; color = -15; }
image_block image_button abre um quadro de imagem clicvel SINTAXE : image_button { key = "img36"; width = 40; aspect_ratio = 0.77; color = -15; } info_button insere um boto "Info" padronizado, cujo 'key' "info" SINTAXE info_button;
6 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
initial_focus lana o foco sobre o tile especificado SINTAXE initial_focus = "componente"; is_cancel define um componente qualquer como componente de saida EXEMPLO : button { label = "Encerra"; key = "sair"; is_cancel = true; } is_default is_tab_stop is_error_tile key define a chave para cada um dos componentes EXEMPLO : edit_box { label = "Altura em mm"; key = "altura"; edit_width = 12; edit_limit = 16; } label define o rtulo de um componente - vide acima list insere um 'list_box' ou 'popup_list' com uma lista de strings EXEMPLO : popup_list { label = "Opes"; key = "pop"; width = 30; list = "Bloco 1\nBloco 2\nBloco 3\nBloco 4\nBloco 5"; } list_box abre um componente 'list' SINTAXE : list_box { label = "AutoLISP"; key = "lista"; width = 28; height = 16; } vide no BASE.DCL do AutoCAD
multiple_select permite selecionar mais de uma linha em componentes 'list_box' e/ou 'popup_list' EXEMPLO : list_box { label = "AutoLISP"; key = "lista"; width = 28; height = 16; multiple_select = true;
7 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
} o default 'false' e no precisa ser inserido ok_button insere um boto 'OK' padronizado, cujo 'key' "accept" SINTAXE ok_button;
ok_cancel insere um par de botes padronizados, sendo o primeiro 'OK' e o segundo 'Cancel', e cujos 'key' so "accept" e "cancel" SINTAXE ok_cancel;
ok_cancel_help insere trs botes padronizados, sendo o primeiro 'OK', o segundo 'Cancel' e o terceiro 'Help', e cujos 'key' so "accept", "cancel" e "help" SINTAXE ok_cancel_help;
ok_cancel_err insere dois botes, o primeiro 'OK', cujo 'key' "accept", o segundo 'Cancel', com 'key' igual a "cancel" e uma linha 'errtile', cujo 'key' "error" ok_cancel_help_errtile idem acima, com mais um boto "Help", cujo 'key' "help" ok_cancel_help_info insere os botoes 'OK', 'Cancel', 'Help' e 'Info', cujos 'keys' so, respectivamente, "accept", "cancel", "help" e "info"
ok_only insere um boto 'OK' cujo 'key' "accept", pr-definido no BASE.DCL do AutoCAD
paragraph popup_list insere um componente tipo lista SINTAXE : popup_list { label = "popup_list"; key = "pop1"; }
8 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
SINTAXE
: radio_column { : radio_button { label = "Opo 1"; key = "opt1"; } : radio_button { label = "Opo 2"; key = "opt2"; } : radio_button { label = "Opo 3"; key = "opt3"; } : radio_button { label = "Opo 4"; key = "opt4"; }
radio_row abre uma linha de 'radio_button' SINTAXE : radio_row { : radio_button { label = "radio_button 1"; key = "opt1"; } : radio_button { label = "radio_button 2"; key = "opt2"; } }
retirement_button right row abre uma linha de componentes SINTAXE : row { [...demais componentes aqui...] } slider insere um componente deslizante SINTAXE : slider { key = "sli"; min_value = 1; max_value = 100; big_increment = 10; small_increment = 1; }
small_increment aplica-se ao componente do tipo 'slider' e define o menor valor incremental ao se deslizar o boto interno deste componente EXEMPLO : slider { key = "Temperatura"; min_value = 0; max_value = 100; small_increment = 1; big_increment = 10; } spacer define um espaamento entre componentes SINTAXE : spacer { width = 3; } spacer_0 um 'spacer' com espaamento 0 SINTAXE spacer_0; spacer_1 um 'spacer' com espaamento 1 SINTAXE spacer_1; std_rq_color vide no BASE.DCL do AutoCAD
9 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
swatch tabs aplica-se somente a componentes 'list_box' e 'popup_list', e define, nestes componentes, os espaos de tabulao de um texto. EXEMPLO : list_box { label = "Tabela 1"; key = "tabela1"; width = 80; height = 12; tabs = "8 16 24 32 40"; } text_part text_25 vide no BASE.DCL do AutoCAD
toggle define um componente assinvel SINTAXE : toggle { label = "Deseja cotar?"; key = "cotar"; value = 1; }
true define uma propriedade como verdadeira EXEMPLO : list_box { label = "Selecione"; key = "lista"; width = 40; height = 12; multiple_select = true; } value inicializa o valor de retorno do componente EXEMPLO : toggle { label = "Deseja cotar?"; key = "cotar"; value = 1; } acima, o 'toggle' estar assinalado na abertura do quadro de dilogo e abaixo, estar desmarcado. : toggle { label = "Deseja cotar?"; key = "cotar"; value = 0; } o default 0 width define a largura de um componente EXEMPLO : button { label = "Boto"; key = "b1"; width = 30; }
Exemplos diversos
////////// cdigo fonte do quadro de dilogo da esquerda alo1 : dialog { label = "Como criar quadros de dilogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } : button { key = "accept"; is_default = true; label = "OK"; fixed_width = true; alignment = centered; } } ////////// cdigo fonte do quadro de dilogo da direita
10 de 11
26/09/2012 21:04
http://www.gr-acad.com.br/paginas/dup1.htm
alo2 : dialog { label = "Como criar quadros de dilogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } ok_button; }
Exemplos de listas
O BASE.DCL do AutoCAD
Home
11 de 11
26/09/2012 21:04