Reactor e tempo de edição

Hoje vou postar uma lisp que monitora o open/save do seu desenho, bem legal para quem precisa controlar o tempo de edição do dwg, mas não confia no timer do cad, até porque pouca gente lembra de zerar ele… aí está:


(vl-load-com)
(
defun log_me_SAVE (rea par / TMP H)
(
setq tmp (open (strcat (getvar “dwgprefix”) “open_save_log.txt”) “a”)
H (menucmd “M=$(edtime,$(getvar,date),DD/M/YYYY hh:mm:ss)”))
(
write-line (STRCAT
“OPEN\t” log_me_open_date “\tSAVE\t”
H
“\t” (getvar “loginname”) “\t”
(getvar “dwgname”)
)

TMP)
(
SETQ log_me_open_date H) ;RESETA A HORA DE ABERTURA PARA A HORA DO SAVE
)

(DEFUN log_me_OPEN (/ TMP)
(
setq log_me_open_date (menucmd “M=$(edtime,$(getvar,date),DD/M/YYYY hh:mm:ss)”)
))

(vlr-dwg-reactor (getvar “loginname” ) ((:vlr-saveComplete . log_me_SAVE)))

(log_me_OPEN)
(
princ)


coloque-a na startup suite do cad, ou cole na acaddoc.lsp da pasta support. Pronto, experimente abrir um desenho qualquer, e clique save… aparecerá um arquivo de texto na pasta onde este desenho estava, listando a hora de abertura, do save e o nome do usuário…

É um uso interessante do reactor

vlr-dwg-reactor é uma função que cria um monitor de eventos associado ao desenho, sua sintaxe é a seguinte:
(vlr-dwg-reactor dados ((evento1 . função1)))
onde “evento1” pode ser aquele :vlr-saveComplete qe aparece na minha rotina, ou qualquer um daqueles que estão no help, dependendo do evento que vc quer monitorar, no caso o “savecomplete”

“função1” é o nome da função a ser chamada quando o evento é disparado, ela deve existir, estar carregada e aceitar os argumentos que serão passadas a ela

para saber que argumentos são esses: o help diz o numero de argumentos para cada evento, numa tabela, veja lá

no geral é isso:
“reactor”, “parameter”
mas pra ter certeza, inicie a função que o numero de variaveis que o evento pede, e usa o prompt para mostrar essas variaveis, por exemplo:
( função1 ( var1 var2 )
(
prompt ( strcat ( vl-princ-to-string var1 ) “\n” ( vl-princ-to-string var2 ) )
)

aí na linha de comando será mostrado o que foi passado para a função

o “dados” são dados que você queira passar para a “função1”, voce os obtem com
( vlr-data var1 )
var1 é sempre ( ou quase ) o objeto “reactor” retornado pela função ( vlr-*-reactor ), onde esse asterisco pode ser dwg, editor, command, etc…

Deixe um comentário

Carrinho de compras
Rolar para cima