tbn2net.appspot.com

0 milhões de comentários
Olá, hoje quero compartilhar com vocês algumas estatísticas sobre o tbn2net, a minha página de programas.

Bem, criei este site inicialmente para gerenciar as licenças dos programas que desenvolvo, pois estava se tornando difícil manter eles atualizados e avisar os clientes sobre estas atualizaçãoes.

Alguns clientes inclusive devem me achar um chato, hehehe pois tem atualizações um tanto quanto frenquentes.

Bom, não sei quanto disso chega a ser inconveniente e a alguns dei razão e... atualizei os programas!!!

Hoje a maioria dos programas permanecem funcionando normalmente quando estão desatualizados e alguns poucos não, em fim, é um mal necessário....

Mas vamos, vamos ver estas estatísticas:


Esta é uma tela do APPENGINE do google, que é o "motor" da página. Ela mostra o número de chamadas nas últimas 24h. Então vejo que tem 2.1K, ou aproximadamente 2100 chamadas.

Pode parecer pouco, mas veja que isso acontece com uns programas prá lá de desconhecidos, que são usados por engenheiros, arquitetos, topógrafos e desenhistas. Não é uma "feice" da vida, hehehe

Houveram 82 downloads e e 116 visualizações das páginas dos programas.

O mais popular indiscutivelmente é o EXPGE, para exportar o desenho do AutoCAD para o Google Earth.

Engraçado é como as pessoas que me ligam pronunciam o nome do programa... hehehehe bem, quando criei ele, não pensei nisso.... Acabou ficando assim porque juntei as palavras: EXPortar  para o Google Earth. Ele tá a tanto tempo na net que alguns até duvidam que eu seja o autor.... vai entender...

Outra estatística:
Programa Downloads
EXPGE 14395
C3DRENESG4 2760
IMPORTGMMAP 2281
READKML2 1377
EXPGE2 1290
PLH 1172
C3DRENESG2 933
SUBASSEMBLIES 864
MLH2 826
NOTASERV 765
IMPORTGMPTS 732
C3DRENESG 643

A tabela acima mostra a quantidade de downloads desde outubro de 2013, para cada programa.
Não tenho estatísticas anteriores a isso, mas pra ter uma ideia, o EXPGE está no ar desde abril de 2008, e já achei ele no 4shared várias vezes, então....

Agora alguns programas estão disponíveis na loja da autodesk e estão ganhando o mundo... Então, quero agradecer a todos os meus clientes que adquiriram uma licença ou mesmo muitas delas!!! E obrigado pela paciência com as atualizações!! É como sempre digo: se você tiver uma ideia para melhorar o programa, entre em contato, se for possível, eu implemento sua ideia!!!

É isso

Reactor e Xdata; Coisas de doido

0 milhões de comentários
Por estes dias me perguntaram como usar reactors. Bem, não é complicado, mas o help não ajuda muito... enfim... Considere o exemplo abaixo:

;nome da xdata
(setq xdata:nome "TESTEXDATAREACTOR")

;carrega funções vl*
(vl-load-com)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;subrotina para adicionar xdata na entidade
;ent -> ename, por exemplo: <Entity name: 7ffff4104e0>
;xdappname -> string, nome da xdada
;xdata elista da xdata, formato:
;((ExtendDataDxfCode . Valor) ... (ExtendDataDxfCode . Valor))
(defun xdata->put  (ent xdappname xdata / elist)
  ;garanta que o nome da xdata esta no banco de dados do cad
  (regapp xdappname)
  

  ;adiciona a xdata no elist da entidade
  (setq elist (entget ent)
    elist (cons (list -3 (cons xdappname xdata)) elist))

  ;atualiza a entidade
  (entmod elist)
  (
entupd ent)
  )


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;reactor para ação da linha sendo modificada
;note que este reactor não causa modificações na LINHA, apenas no texto
;se fazemos um reactor causar modificações em algo que dispara reactors,
;temos de desabilitar eles antes de modificar
;parametros:
;linha, é o objeto que notificou o reactor, no caso a linha
;rea, é o ponteiro para o objeto do reactor
;par, são parâmetros adicionais que podem ser passados ao reactor
;na hora que o criamos, no caso, não passamos nenhum dado extra
;então não usamos o seu valor, que será nil
(defun reactor->modified (linha rea par / params texto)
  ;obter os dados do reactor. note que não seria necessario
  ;pois poderiamos encontrar o texto pelo xdata.
  ;no caso é só para mostrar o uso da função vlr-data
  ;para obter o texto pela xdata, veja a subrotina reactors->aciona
  (setq params (vlr-data rea)
    texto  (car params))

  ;atualizar o conteudo do texto:
  (vla-put-textstring
    texto
    (strcat "l=" (rtos (vla-get-length linha) 2 2)))

  (
vla-put-insertionpoint texto (vla-get-startpoint linha))
  )


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;subrotina para "ligar" os reators para as linhas já desenhadas
;em um desenho com o nosso novo comando "teste"
(defun reactors->aciona (/ ss ent linha xdata texto)
  ;seleção das linhas que tem a nossa xdata
  (setq ss (ssget "X" (list
            '(0 . "LINE")
            (
list -3 (list xdata:nome)))))

  ;se ela existir, processa as linhas
  (if ss
    (repeat (sslength ss)

      ;pega a primeira linha
      (setq ent   (ssname ss 0) ;ename
        linha (vlax-ename->vla-object ent) ;ename para vla
        xdata (assoc -3 (entget ent (list xdata:nome))) ;xdata da linha
        ;agora, pega o handle, que é string, acha o ename e obtem o vla
        texto (vlax-ename->vla-object (handent (cdr (cadadr xdata))))
        )



      ;cria o reactor para a linha
      (vlr-object-reactor
          (list linha) ;objeto modificado que notifica o reactor
          (list texto) ;parametros a serem passados
          '((:vlr-modified . reactor->modified)))

      ;tira a linha da seleção e reinicia o looping
      (ssdel ent ss)
      )
    )

  ;perfumaria:
  (princ "\nReactors criados")
  )




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;função principal
(defun c:teste (/ linha texto pa pb thisdrawing model xdata)

  ;desenha uma lina e um texto no modelspace:
  (setq pa          (getpoint "\nPa")
    pb          (getpoint pa "\nPb")
    

    ;obtem o ponteiro para o modelspace
    thisdrawing (vla-get-activedocument(vlax-get-acad-object))
    model       (vla-get-modelspace thisdrawing)

    ;cria uma linha no model
    linha       (vla-addline model
              (vlax-3d-point pa)
              (
vlax-3d-point pb))

    ;cria um texto no model
    texto       (vla-addtext model
              (strcat "l=" (rtos (vla-get-length linha) 2 2))
              (
vlax-3d-point pa)
              4)
     )


  ;vincula a linha ao texto usando um xdata
  ;1005 é o dxfcode de xdata para "handle" da entidade
  (xdata->put
    (vlax-vla-object->ename linha) ;ename da linha
    xdata:nome ;nome da xdata
    (list (cons 1005 (vla-get-handle texto))) ;a xdata propriamente dita
    )
  


  ;cria um reactor para linha, associando ao evento de modificar a linha
  (vlr-object-reactor
          (list linha) ;objeto modificado que notifica o reactor
          (list texto) ;parametros a serem passados
          '((:vlr-modified . reactor->modified) ;evento a ser chamado ao disparar o reactor
        ))

  ;perfumaria
  (princ "\nFeito")
  )



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;sempre que a lisp for carregada com APPLOAD,
;será acionada a função 'reactors->aciona' para "ligar" os reactors nas linhas criadas
;com o comando que criamos
(reactors->aciona)


O exemplo pede dois pontos, por ele faz passar uma linha e cria um texto no inicio da linha.

Na linha, cria um vinculo com o texto atravez de xdata.

Por fim, cria um reactor, que é um evento. Este evento modifica o conteúdo e a posição do texto conforme modificamos a linha. Simples, não?

O evento que você informa no reactor é monitorado pelo cad e quando acontece o evento, o reactor dispara uma função que informamos.

Igual aos eventos do VBA ou VB. Claro que o exemplo é bem simples, ainda falta monitorar o que acontece se apagamos o texto por exemplo.

O reactor não teria o que atualizar e um erro seria mostrado.

Outro exemplo: Se copiássemos a linha, o texto também poderia ser copiado.....

Outro exemplo: Se editássemos o texto, o reactor não faria nada até modificar a linha.
Neste caso, poderíamos monitorar edições no texto.

Se o fizermos, temos de ter em mente que se precisar modificar o texto, o reactor que o monitora precisa ser desligado antes de editar ele....

Para esta situação, procure por reactor no meu blog. Tem algumas rotinas bem legais!!!

Autodesk University - Promoção!!!

0 milhões de comentários
Olá pessoal!!!

Precisamos comemorar!!! Este ano, serei palestrante no Autodesk University!!!




Para comemorar, o site TBN2NET está com uma super promoção!!!


Compre uma licença e leve duas!!! Isso mesmo, DUAS LICENÇAS PELO PREÇO DE UMA!!!

São diversos plugins para AutoCAD e Civil 3D que com certeza vão ser de grande ajuda em seus projetos de engenharia!!!

Promoção válida até durarem os estoques, ehehehe!!!, brincadeira, válido até 15-10-2014

LinkWithin

Related Posts Plugin for WordPress, Blogger...