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...
(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...
Nenhum comentário:
Postar um comentário