Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
Progra Programan mando do quadros quadros de diálog diálogo. o. A linguage linguagem m DCL. DCL. Código Códigos s fonte fonte de exe exemplo mplos s diversos, começando com quadros muito simples até os mais complicados...
Primeira parte...
Em DCL, todas as palavras reservadas devem estar em minúsculas. Os valores de chaves ['key'] e rótulos ['label'], além do próprio nome do diálogo, podem estar em maiúsculas ou minúsculas. Não poderá haver, em uma definição de quadro de diálogo, 'keys' com o mesmo nome. Se isto ocorrer, o usuário receberá a mensagem 'Redefining key...' em sua rotina AutoLISP, além do que você terá uma indefinição dentro de sua rotina. As palavras "LAYER", "Layer", "LAyer" e "LAYer" são todas distintas e poderiam ser usadas em uma mesma definição de quadro de diálogo.
Código fonte do quadro de diálogo acima...
dup1_01 : dialog { label = "E.Fernal Software"; Software"; initial_focus = "ins-val" "ins-val";; : edit_box { label = "Insira valor"; valor"; key = "ins-val" "ins-val";; edit_width = 12; } ok_cancel_help;; ok_cancel_help }
Código fonte do quadro de diálogo acima...
dup1_02 : dialog { label = "E.Fernal Software"; Software"; initial_focus = "ins-val" "ins-val";; : edit_box { label = "Insira valor"; valor"; key = "ins-val" "ins-val";; edit_width = 12; } : radio_row { label = "Unidade métrica"; métrica"; : radio_button { label = "Milímetros" "Milímetros";; key = "mm" "mm";; value = 1; } : radio_button { label = "Centímetros" "Centímetros";; key = "cm"; } : radio_button { label = "Metros" "Metros";; key = "me" "me";; } } : spacer { width = 0.75; } ok_cancel_help;; ok_cancel_help }
1 d 11
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
Código fonte do quadro de diálogo acima...
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 métrica"; : radio_button { label = "Milímetros"; key = "mm"; value = 1; } : radio_button { label = "Centímetros"; 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; }
;| INÍCIO DE COMENTÁRIOS 'dup1_03' é o nome do quadro de diálogo. Este nome deverá ser digitado, em sua rotina AutoLISP, exatamente como está neste arquivo dcl, no trecho (NEW_DIALOG "dup1_03" dcl_id) Caso contrário, o carregamento deste quadro de diálogo fracassará. 'initial_focus' ativa o campo 'edit_box' cuja 'key' é "ins-val". Ao ser lançado, o usuário 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 são excludentes : sòmente um poderá estar assinalado. O retorno é "1" para assinalado e "0" para vasio. Neste caso poderemos também atribuir à uma variável, no caso 'uni dade_metrica', a chave do componente assinala EXEMPLO : (FOREACH x '("mm" "cm" "me") (ACTION_TILE x "(SETQ unidade_metrica $key)") ) Colocamos um espaçamento de 0.75 simplesmente por motivos estéticos... 'row' nos permite colocar uma série 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 botão "OK", cuja chave é "accept", um b "Cancel", cuja chave é "cancel" e, finalmente, um botão "Help", cuja chave é "help FIM DE COMENTÁRIOS |;
Segunda parte...
2 d 11
26/09/2012 21 04
riando quadros de diálogo...
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 inclusão, 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 diálogo. 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 botão 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 proporção 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 botão 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 rótulo. SINTAXE : boxed_column { label = "Lineweights"; [...demais componentes aqui...] }
d 11
26/09/2012 21 04
Criando quadros de diálogo...
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 rótulo. 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...] }
button insere um botão SINTAXE
4 d 11
: button { label = "Cores"; key = "btn1"; width = 12; }
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
cancel_button insere um botão "Cancel" SINTAXE cancel_button;
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 diálogo SINTAXE MEU_DCL_01 : dialog { label = "Dcl número 1"; : text { label = "Teste de dcl"; alignment = centered; } ok_only; }
edit12_box edit32_box
vide no BASE.DCL do AutoCAD vide no BASE.DCL do AutoCAD
edit_box abre um campo de edição 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.
d 11
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
EXEMPLO
: list_box { label = "Opções"; height = 12; width = 40; key = "lista";
} 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 mínima necessária EXEMPLO : button { label = "Largura"; key = "btn1"; fixed_width = true; } help_button insere um botão "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 clicável SINTAXE : image_button { key = "img36"; width = 40; aspect_ratio = 0.77; color = -15; } info_button insere um botão "Info" padronizado, cujo 'key' é "info" SINTAXE info_button;
6 d 11
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
initial_focus lança 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
vide no BASE.DCL do AutoCAD
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 rótulo de um componente - vide acima list insere um 'list_box' ou 'popup_list' com uma lista de strings EXEMPLO : popup_list { label = "Opções"; 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; }
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 d 11
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
} o default é 'false' e não precisa ser inserido ok_button insere um botão 'OK' padronizado, cujo 'key' é "accept" SINTAXE ok_button;
ok_cancel insere um par de botões padronizados, sendo o primeiro 'OK' e o segundo 'Cancel', e cujos 'key' são "accept" e "cancel" SINTAXE ok_cancel;
ok_cancel_help insere três botões padronizados, sendo o primeiro 'OK', o segundo 'Cancel' e o terceiro 'Help', e cujos 'key' são "accept", "cancel" e "help" SINTAXE ok_cancel_help;
ok_cancel_err insere dois botões, 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 botão "Help", cujo 'key' é "help" ok_cancel_help_info insere os botoes 'OK', 'Cancel', 'Help' e 'Info', cujos 'keys' são, respectivamente, "accept", "cancel", "help" e "info"
ok_only insere um botão '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"; }
radio_column abre uma coluna de 'radio_button'
d 11
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
SINTAXE
: radio_column { : radio_button { label = "Opção 1"; key = "opt1"; } : radio_button { label = "Opção 2"; key = "opt2"; } : radio_button { label = "Opção 3"; key = "opt3"; } : radio_button { label = "Opção 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 botão interno deste componente EXEMPLO : slider { key = "Temperatura"; min_value = 0; max_value = 100; small_increment = 1; big_increment = 10; } spacer define um espaçamento entre componentes SINTAXE : spacer { width = 3; } spacer_0 um 'spacer' com espaçamento 0 SINTAXE spacer_0; spacer_1 um 'spacer' com espaçamento 1 SINTAXE spacer_1; std_rq_color
9 d 11
vide no BASE.DCL do AutoCAD
26/09/2012 21 04
Criando quadros de diálogo...
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 espaços de tabulação 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 assinável 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 diálogo 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 = "Botão"; key = "b1"; width = 30; }
Exemplos diversos
//////////
código fonte do quadro de diálogo da esquerda
alo1 : dialog { label = "Como criar quadros de diálogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } : button { key = "accept"; is_default = true; label = "OK"; fixed_width = true; alignment = centered; } }
//////////
10 d 11
código fonte do quadro de diálogo da direita
26/09/2012 21 04
Criando quadros de diálogo...
http://www.gr-acad.com.br/paginas/dup1.htm
alo2 : dialog { label = "Como criar quadros de diálogo"; : text { label = "Um quadro bem simples..."; alignment = centered; } ok_button; }
Exemplos de rotinas do curso
11 d 11
Exemplos de listas
O BASE.DCL do AutoCAD©
Home
26/09/2012 21 04