Exportando o conteúdo do comando FIND

Exportando o conteúdo do comando FIND

Anonymous
Não aplicável
4.191Exibições
22Respostas
Mensagem 1 de 23

Exportando o conteúdo do comando FIND

Anonymous
Não aplicável

Boa tarde.

Sou novato no AutoCAD e a empresa para a qual presto serviços utiliza a versão 2013 - English.

Nos desenhos do nosso cotidiano existem textos associados a alguns componentes que são inseridos para facilitar sua identificação. Consegui listar o conteúdo desses textos utilizando o comando FIND e selecionando o prefixo desejado, mas ainda preciso de mais!

Gostaria de imprimir o conteúdo listado na janela FIND, ou até mesmo exportar este conteúdo para um arquivo de texto, por exemplo.

Isso é possível? Alguém pode me dar uma dica de como ou então uma outra função que se adeque a estas necessidades?

Muito obrigado.

 

find.png

0 Curtidas
4.192Exibições
22Respostas
Respostas (22)
Mensagem 2 de 23

hmsilva
Mentor
Mentor
Solução aceita

Olá Fabricio e bem vindo à Comunidade Autodesk.

 

o comando que eu aconselho é o dataextraction.
esse comando vai criar um ficheiro dxe, com as definições da extração de dados que poderás utilizar mais tarde como template. Após criar o .dxe,  seleciona apenas as entidades texto, e a propriedade value, e irá criar um ficheiro .xls,.csv,.mdb ou .txt, ou ainda inserir no dwg como uma tabela.

 

DATAEXTRACTION

 

Espero que ajude
Henrique

EESignature

Mensagem 3 de 23

Anonymous
Não aplicável

Muito obrigado Henrique, vou ler mais sobre o comando que me indicou e deixar o tópico ativo mais um pouco para receber opiniões de outras pessoas.

Mais uma vez, obrigado!

0 Curtidas
Mensagem 4 de 23

hmsilva
Mentor
Mentor

fabriciodicarlo escreveu:

Muito obrigado Henrique, vou ler mais sobre o comando que me indicou e deixar o tópico ativo mais um pouco para receber opiniões de outras pessoas.

Mais uma vez, obrigado!


Fabricio, fico feliz por ter podido ajudar!

 

Com comandos nativos do AutoCAD, não têns grandes alternativas...

O que me ocorre é recorrer a um programa externo (LISP,dotNET,VB....) para fazer essa tarefa.

 

Continuação de bom trabalho!
Henrique

EESignature

0 Curtidas
Mensagem 5 de 23

f_santana
Mentor
Mentor
A prova do o Henrique falou a pouco é que eu ia dar a mesma solução.

Teria recomendado que vocês passassem a inserir esta informação em blocos para facilitar os filtros do DATAEXTRACT, seria esta a única diferença.


Você achou uma postagem útil? Então fique à vontade para curtir essas postagens!
Sua pergunta obteve uma resposta que resolveu a duvida? Então clique no botão Aceitar Solução.


Fábio Santana
Architect | CAD/BIM Manager

EESignature

Mensagem 6 de 23

Anonymous
Não aplicável

Realmente Henrique eu encontrei nas rotinas uma solução alternativa para o meu objetivo, porém gostei da sua proposta com o comando dataextraction. Logo vou experimentar e espero que esse comando me forneça melhores resultados. Acredito que você solucionou minha questão. Obrigado.

0 Curtidas
Mensagem 7 de 23

Anonymous
Não aplicável

Obrigado pelo complemento f_santana!

0 Curtidas
Mensagem 8 de 23

hmsilva
Mentor
Mentor

fabriciodicarlo escreveu:

Realmente Henrique eu encontrei nas rotinas uma solução alternativa para o meu objetivo, porém gostei da sua proposta com o comando dataextraction. Logo vou experimentar e espero que esse comando me forneça melhores resultados. Acredito que você solucionou minha questão. Obrigado.


Fabricio,

 

uma rotina para procurar/exportar apenas entidades TEXT, é bastante fácil de se escrever, mas se envolver MTEXT, já é muito mais dificil, pela formatação das strings...

 

Henrique

EESignature

0 Curtidas
Mensagem 9 de 23

hmsilva
Mentor
Mentor
Solução aceita

Fabricio,

 

se for só para TEXT, qualquer coisa assim, serve:

(podes utilizar abc*, ou *abc ou *abc* ou apenas abc para o exacto texto...

 

(vl-load-com)
(defun c:exportatexto (/ file fileo lst str txt)
  (if (and (setq txt (getstring T "\nQual o texto a procurar e exportar: "))
           (/= txt "")
      )
    (progn
      (or adoc (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
      (vlax-for layout (vla-get-layouts adoc)
        (vlax-for blk (vla-get-block layout)
          (if (and (eq (vla-get-ObjectName blk) "AcDbText")
                   (wcmatch (strcase (setq str (vla-get-textstring blk))) (strcase txt))
              )
            (setq lst (cons str lst))
          )
        )
      )
      (if lst
        (progn
          (setq lst (vl-sort lst '<))
          (setq file (strcat (getvar 'DWGPREFIX) (vl-filename-base (getvar 'DWGNAME)) "_Texto_Exportado.txt"))
          (setq fileo (open file "w"))
          (foreach x lst
            (write-line x fileo)
          )
          (close fileo)
          (startapp "notepad" file)
        )
      )
    )
  )
  (princ)
)

 

Espero que ajude
Henrique

 

EESignature

Mensagem 10 de 23

Anonymous
Não aplicável

Henrique, aparentemente esse código que postou deve ser a melhor solução para meu problema. É possível criar uma rotina com esse código, como estas que estão disponíveis na internet? Pode me indicar de como fazê-lo?

0 Curtidas
Mensagem 11 de 23

hmsilva
Mentor
Mentor
Solução aceita

Fabricio,

 

seleciona o código, copy/paste no notepad, salva como exportatexto.lsp, no autocad, appload -> seleciona o ficheiro, na linha de commandos

Command: exportatexto

 

vai criar um ficheiro de texto na directoria do dwg e com o nome do dwg_Texto_Exportado.txt

 

Nota que o código foi escrito á pressa, e apenas foi minimamente testado....

 

Espero que ajude
Henrique

EESignature

Mensagem 12 de 23

Anonymous
Não aplicável

Ok, obrigado. Ajudou sim! Farei o que disse.

0 Curtidas
Mensagem 13 de 23

hmsilva
Mentor
Mentor

Fabricio,

 

anexei o código...

o nome do ficheiro, podes modificar para o que mais te convier, e o nome do comando tembem, dentro do ficheiro, existe uma linha de código que tem

 

(defun c:exportatexto (/ file fileo lst str txt)

;; apos o c: é onome do comando, neste caso exportatexto, podes modificar para o quer mais jeito, mantem o c:... exemplo

(defun c:exptxt (/ file fileo lst str txt)

;; onome do comando seria exptxt...

 

Espero que ajude
Henrique

EESignature

Mensagem 14 de 23

Anonymous
Não aplicável
Sem abusar de sua boa vontade Henrique, tenho um pouquinho de conhecimento em programação e acho que posso adequar os teus comandos do modo que preciso, mas não sem sua ajuda.
Como eu modifico essa estrutura para que ela me pergunte o nome do arquivo a ser salvo? Por exemplo: quero que esse arquivo fique salvo em outro diretório que não seja o que se encontra o .dwg e com um nome que vou atribuir na hora.
Não precisa refazer o código, me dê uma pincelada de onde devo inserir que eu tento aqui!
0 Curtidas
Mensagem 15 de 23

hmsilva
Mentor
Mentor
Solução aceita

Talvez assim....

 

(vl-load-com)
(defun c:exportatexto (/ file fileo lst str txt)
  (if (and (setq txt (getstring T "\nQual o texto a procurar e exportar: "))
           (/= txt "")
           (setq file (getfiled "Entra o nome do ficheiro de exportação:" "" "txt" 1))
      )
    (progn
      (or adoc (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
      (vlax-for layout (vla-get-layouts adoc)
        (vlax-for blk (vla-get-block layout)
          (if (and (eq (vla-get-ObjectName blk) "AcDbText")
                   (wcmatch (strcase (setq str (vla-get-textstring blk))) (strcase txt))
              )
            (setq lst (cons str lst))
          )
        )
      )
      (if lst
        (progn
          (setq lst (vl-sort lst '<))
          (setq fileo (open file "w"))
          (foreach x lst
            (write-line x fileo)
          )
          (close fileo)
          (startapp "notepad" file)
        )
      )
    )
  )
  (princ)
)

 

Espero que ajude
Henrique

EESignature

0 Curtidas
Mensagem 16 de 23

Anonymous
Não aplicável

Testei e infelizmente não funcionou.

Ele pede o que procuro;

Ele pede onde desejo salvar (tudo selecionado como txt);

mas ele cria no diretório que escolhi um arquivo acad.lsp, que ao abrir com o bloco de notas só tem números "0000000000000..."

Vou observar se encontro algo errado.

Notei algo estranho nesse ponto do código: 

É realmente um número 1 nesse lugar ou é um "fecha parenteses"?

(vl-load-com)
(defun c:exportatexto (/ file fileo lst str txt)
  (if (and (setq txt (getstring T "\nQual o texto a procurar e exportar: "))
           (/= txt "")
           (setq file (getfiled "Entra o nome do ficheiro de exportação:" "" "txt" 1))
      )
0 Curtidas
Mensagem 17 de 23

hmsilva
Mentor
Mentor

fabriciodicarlo escreveu:

Testei e infelizmente não funcionou.

Ele pede o que procuro;

Ele pede onde desejo salvar (tudo selecionado como txt);

mas ele cria no diretório que escolhi um arquivo acad.lsp, que ao abrir com o bloco de notas só tem números "0000000000000..."

Vou observar se encontro algo errado.

Notei algo estranho nesse ponto do código: 

É realmente um número 1 nesse lugar ou é um "fecha parenteses"?


 Estranho!!!!

 

Não tem nada a ver com o código que escreví...

Vê a função getfiled (AutoLISP) o 1 é a flag para criar um novo ficheiro...

Tenta com este ficheiro anexado, e diz como correu o teste.

 

Os poucos testes que realizei, correram como esperado....

 

Henrique

EESignature

Mensagem 18 de 23

Anonymous
Não aplicável

Não funcionou... pede as informações mas não cria o arquivo, nem dá erro. Vou reiniciar o AutoCAD. Qualquer novidade eu posto aqui. Obrigado

0 Curtidas
Mensagem 19 de 23

Anonymous
Não aplicável

Agora sim! Reiniciei o AutoCAD e tudo funcionou normalmente. Talvez de tanto eu tentar eu devo ter deixado o software maluco.

Muito obrigado pela atenção Henrique!

Você permitiu que meu objetivo fosse alcançado!

0 Curtidas
Mensagem 20 de 23

hmsilva
Mentor
Mentor

Fabricio, fico feliz por ter podido ajudar!

Henrique

EESignature

0 Curtidas