terça-feira, 12 de maio de 2015

Aula 25–Tratamento de Erros

 

Olá pessoal, algumas aulas atrás aprendemos como guardas as variáveis de sistemas e como restaura-las no final do nosso programa, isso se torna muito útil, pois não alteramos o ambiente de trabalho que estava ativo antes da execução do programa, porem isso apenas funciona se o programa tiver um começo um meio e um fim, caso o programa for cancelado durante sua execução ou algum erro de programação aconteça o programa não vai restaurar as variáveis de sistema, para contornar esse problema aprenderemos hoje como alterar a função de erro do AutoCAD, dessa forma quando um erro acontecer podemos informar quais ações devem ser executas e assim garantir que as variáveis de sistemas sejam novamente restauradas.

Variável *error*

Existe no AutoCAD uma variável padrão que contem todas as mensagens de erros, sejam esses error causados por mau uso do programa, cancelado por parte do usuário ou um erro de programação, o que precisamos fazer é armazenar o valor dessa variável *erro* (sim essa variável se escreve com asteriscos), para fazer isso basta criar uma nova variável com o conteúdo da variável *error*.

(setq erro_antigo *error*)

Agora temos uma variável chamada erro_antigo que contem todos os dados da função de erro do AutoCAD, agora como já criamos de certa forma um backup desse *error* podemos altera-lo da maneira que quisermos, pois poderemos restaura-lo.

Função *error*

Agora precisamos criar uma nova função *error* (sim todo o conteúdo da variável *error* é uma função) e nela podemos fazer o que quisermos ate mesmo mudar as mensagens de erro.

Primeiro vamos criar um função que armazene todas as variáveis de sistema que vamos modificar e logico a própria função *error*.

(defun guarda_variaveis ()
  (setq cmdecho (getvar "cmdecho"))
  (setq orthomode (getvar "Orthomode"))
  (setq osmode (getvar "osmode"))
  (setq clayer (getvar "clayer"))
  (setq cecolor (getvar "cecolor"))
  (setq filedia (getvar "filedia"))
  (setq attreq (getvar "attreq"))
  (setq attdia (getvar "attdia"))
  (setq erro_antigo *error*)
  )

Note que armazenamos na variável erro_antigo a função *error*

Agora uma função que restaure as variáveis.

(defun restaura_variaveis()
  (setvar "cmdecho" cmdecho)
  (setvar "Orthomode" Orthomode)
  (setvar "osmode" osmode)
  (setvar "clayer" clayer)
  (setvar "cecolor" cecolor)
  (setvar "filedia" filedia)
  (setvar "attreq" attreq)
  (setvar "attdia" attdia)
  )

Agora criamos a nossa função de erro, vamos chama-la de meu_erro.

(defun meu_erro (MSG)
(setq *error* erro_antigo)
(restaura_variaveis)
(prompt "\nComando cancelado!")
)

Note que restauramos a função  *error* que estava armazenada na variável erro_antigo.

Para finalizar precisamos dizer ao Autolisp que essa agora é a nova função  *error*.

(setq *error* Meu_erro)

Vamos ver como ficaria um programa com a chamada para esse novo erro.

(defun c:tt()
  (guarda_variaveis)
  (setq *error* meu_erro)
  (setq nome (getstring "\nDigite o seu primeiro nome: "))
  (setq pt1 (getpoint "\nClique sobre o local desejad: "))
  (command "text" pt1 "2" "0" nome)
  (restaura_variaveis)
  )

Pronto, agora toda vez que um erro acontecer à função meu_erro será chamada, quando isso acontecer ele vai restaurar as variáveis de sistema e alterar a função *error* para a sua função original.

É importantíssimo voltar a função *erro* para o original caso contrario todas as mensagens de erro do AutoCAD serão igual à função meu_erro, caso você esqueça esse procedimento, fique tranquilo pois quando o desenho for fechado e aberto a função *error* padrão será carregada automaticamente pelo AutoCAD.

Assistam a vídeo aula pois nela será explicado passo a passo como isso se comporta dentro de um programa.

Abaixo segue o link do meu canal Manual de Cad no youtube.

https://www.youtube.com/watch?v=WLJZN_k6wag&feature=youtu.be

Espero que tenham gostado

Sérgio Fernandes.

Manual de Cad.

 

 

Nenhum comentário:

Postar um comentário