Dúvidas na rotina Autolisp com DCL, atualização da DCL

Moderador: Moderadores

Responder
Alexandre Moroni
Madeira
Madeira
Mensagens: 20
Registrado em: Dom 05 Mai 2013 8:32:11 pm

Dúvidas na rotina Autolisp com DCL, atualização da DCL

Mensagem por Alexandre Moroni »

Boa tarde a todos.

Estou tentando fazer uma rotina lisp que vai usar uma DCL, mas me deparei com um problema que acredito ser simples, mas pra mim não está sendo, segue a dúvida:

1 - tenho uma DCL onde digito dois valores em duas edit_box, esse valores serão multiplicados, esse resultado será mostrado na DCL, agora começam meus problemas:
- imaginamos que eu considere esses dois valores iniciais com valores em default, quando abre a DCL eles já vem preenchidos, e o resultado da operação já aparece, até aqui certo, mas se eu alterar algum desses dois valores na DCL como faço pra atualizar esse resultado da operação sem fechar a DCL?
- tem alguma maneira de usar uma edit_box para receber esse valor dessa operação, ou alguma forma para que a aparência da DCL fique digamos tudo igual?
2 - também estou com dúvidas se tem como ajustar automaticamente um arquivo de slide quando insiro ele no espaço pra imagem na DCL?

Desde já agradeço a ajuda.

Att.

Alexandre
Avatar do usuário
Carlos Fernando
Concreto
Concreto
Mensagens: 37
Registrado em: Sex 29 Dez 2017 4:17:25 pm

Re: Dúvidas na rotina Autolisp com DCL, atualização da DCL

Mensagem por Carlos Fernando »

Alexandre

Veja, vc sempre pode colocar junto aos atributos da edit_box uma "action" com
uma determinada função. Nesse caso vc cria no arquivo .lsp essa função de multiplicação que será acionada após
o usuário digitar um valor e sair da edit_box (ou pressionar "enter").

Segue um exemplo simples de um diálogo que pede 2 numeros e fornece o resultado da multiplicação.

O arquivo .dcl:

Código: Selecionar todos

multip
 : dialog
{
label = "Multiplicação";

	: edit_box
	{
	label = "Primeiro número:";
	key = "n1";
	alignment = centered;
	edit_limit = 10;
	edit_width = 10;
	value = 5;
	is_tab_stop = true;
	action = "(mult)";
	}
 
	: edit_box
	{
	label = "Segundo número:";
	key = "n2";
	alignment = centered;
	edit_limit = 10;
	edit_width = 10;
	value = 3;
	is_tab_stop = true;
	action = "(mult)";
	}

	: edit_box
	{
	label = "Resultado:";
	key = "res";
	alignment = centered;
	edit_limit = 10;
	edit_width = 10;
	value = 15;
	}

	: button	
	{
	key = "accept";
	label = "OK";
	is_default = true;
	fixed_width = true;
	alignment = centered;
	action = "(done_dialog)";
	}
 
}

O arquivo .lsp:

Código: Selecionar todos

(defun c:m2 (/ dcl_id)
  (setq dcl_id(load_dialog "multip.dcl"))
  (if (not (new_dialog "multip" dcl_id))
    (exit)
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
)

(defun mult ()
(set_tile "res" (rtos (*(atof(get_tile "n1")) (atof(get_tile "n2"))) 2))    
)


Veja se vc consegue utilizar esse procedimento nos seus arquivos e se fica do jeito que vc espera.

Att
Alexandre Moroni
Madeira
Madeira
Mensagens: 20
Registrado em: Dom 05 Mai 2013 8:32:11 pm

Re: Dúvidas na rotina Autolisp com DCL, atualização da DCL

Mensagem por Alexandre Moroni »

Carlos Fernando bom dia.

Era exatamente isso que eu estava precisando resolver na minha rotina, seu exemplo foi perfeito e muito didático.

Muito obrigado mais uma vez pela ajuda.

Desejo um Feliz Natal e um Excelente 2021.

Att.

Alexandre Moroni
Avatar do usuário
Carlos Fernando
Concreto
Concreto
Mensagens: 37
Registrado em: Sex 29 Dez 2017 4:17:25 pm

Re: Dúvidas na rotina Autolisp com DCL, atualização da DCL

Mensagem por Carlos Fernando »

Alexandre
Que bom que deu certo.
Obrigado e Boas Festas para vc e sua família também.
Att
Responder