Comunidade
AutoCAD - Português
Bem vindo ao Forum de AutoCAD da Autodesk. Compartilhe seu conhecimento, faça perguntas e explore os tópicos mais populares de AutoCAD.
cancelar
Mostrando resultados para 
Mostrar  apenas  | Pesquisar então 
Você quer dizer: 

Comando Dist

8 RESPOSTAS 8
Responder
Mensagem 1 de 9
lucas.abramo
528 Exibições, 8 Respostas

Comando Dist

Preciso copiar os resultados das medidas dos comandos DIST e area automaticamente e lança-los em uma planilha  

8 RESPOSTAS 8
Mensagem 2 de 9
f_santana
em resposta a: lucas.abramo

Isto só seria possível via programação.

Talvez estudando bem o seu processo também de por DATAEXTRACT (transformando estás distâncias e áreas em objetos).

 

Você teria um exemplo do que precisa?


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 3 de 9
lucas.abramo
em resposta a: f_santana

Bom dia Sr. Santana

Obrigado pela atenção. Ontem mesmo passei um bom tempo procurando alguma solução é achei um camarada português que fez um código que resolve parcialmente minha demanda.

Ocorre que preciso extrair áreas e distâncias específicas em projetos que não seguem padrões de desenvolvimento. Sem uso de blocos e até mesmo sem observar os layers ou os nomes das polylines.

O que me parece possível e que seria algo bem simples é automatizar a extração dos dados obtidos imediatamente depois da medição pois justamente essas medidas ficam registradas.

A solução que encontrei me gera um arquivo TXT com os dados obtidos em ordem. Isso já ajuda. Mas o ideal seria no instante que eu medisse já pudesse colar esses dados em uma planilha sem ter que criar uma rotina de aferir as características dos ambientes que irei medir antes de medir e seguir uma ordem a partir dessa primeira análise. É um processo mais rápido observar as características no mesmo momento que faço as medidas.

Obrigado pela atenção
Mensagem 4 de 9
Anonymous
em resposta a: lucas.abramo

Olá @lucas.abramo anexe a solução que você encontrou que eu edito pra você, de preferencia anexe junto um exemplo de seu .dwg e como gostaria que seu arquivo de texto fique.

Mensagem 5 de 9
lucas.abramo
em resposta a: Anonymous

Caro me perdi completamente nesse fórum... 

 

O código é esse e o que queria era extrair tanto o perímetro quanto a área ao dar o comando área durante a demo


(vl-load-com)
(defun c:demo (/ *error* ans dzin ent file fileopen flag p1 str ss)
(defun *error* (msg)
(if fileopen
(close fileopen)
)
(if dzin
(setvar 'dimzin dzin)
)
(cond ((not msg))
((member msg '("Function cancelled" "quit / exit abort")))
((princ (strcat "\n** Error: " msg " ** ")))
)
(princ)
)
(setq file (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".txt")
dzin (getvar 'dimzin)
)
(setvar 'dimzin 0)
(if (findfile file)
(setq fileopen (open file "a"))
(setq fileopen (open file "w"))
)
(setq flag t)
(while flag
(initget "Area Comprimento")
(setq ans (setq p1 (getpoint "\nDistancia, especifica o primeiro ponto, ou [Area/Comprimento] <exit>: ")))
(cond ((= 'list (type ans))
(command "._dist" p1)
(while (> (getvar 'cmdactive) 0)
(command "\\")
)
(setq str (strcat "Dist \t" (rtos (getvar "distance") 2 4)))
(write-line str fileopen)
(princ (strcat "\n" str))
)
((= "Area" ans)
(command "._area")
(while (> (getvar 'cmdactive) 0)
(command "\\")
)
(setq str (strcat "Area \t" (rtos (getvar 'area) 2 4)))
(write-line str fileopen)
(princ (strcat "\n" str))
)
((= "Comprimento" ans)
(prompt "\nSeleciona o objeto a medir o comprimento: ")
(if (setq ss (ssget "_+.:E:S" '((0 . "ELLIPSE,*POLYLINE,SPLINE,LINE,ARC,CIRCLE"))))
(progn
(setq str (strcat "Comp \t"
(rtos (vlax-curve-getDistAtParam (setq ent (ssname ss 0)) (vlax-curve-getEndParam ent)) 2 4)
)
)
(write-line str fileopen)
(princ (strcat "\n" str))
)
)
)
((= ans nil)
(setq flag nil)
(prompt "\nSaindo...")
)
)
)
(*error* nil)
(princ)
)

Mensagem 6 de 9
lucas.abramo
em resposta a: Anonymous

Caro me perdi completamente nesse fórum...



O código é esse e o que queria era extrair tanto o perímetro quanto a área ao dar o comando área durante a demo


(vl-load-com)
(defun c:demo (/ *error* ans dzin ent file fileopen flag p1 str ss)
(defun *error* (msg)
(if fileopen
(close fileopen)
)
(if dzin
(setvar 'dimzin dzin)
)
(cond ((not msg))
((member msg '("Function cancelled" "quit / exit abort")))
((princ (strcat "\n** Error: " msg " ** ")))
)
(princ)
)
(setq file (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".txt")
dzin (getvar 'dimzin)
)
(setvar 'dimzin 0)
(if (findfile file)
(setq fileopen (open file "a"))
(setq fileopen (open file "w"))
)
(setq flag t)
(while flag
(initget "Area Comprimento")
(setq ans (setq p1 (getpoint "\nDistancia, especifica o primeiro ponto, ou [Area/Comprimento] <exit>: ")))
(cond ((= 'list (type ans))
(command "._dist" p1)
(while (> (getvar 'cmdactive) 0)
(command "\\")
)
(setq str (strcat "Dist \t" (rtos (getvar "distance") 2 4)))
(write-line str fileopen)
(princ (strcat "\n" str))
)
((= "Area" ans)
(command "._area")
(while (> (getvar 'cmdactive) 0)
(command "\\")
)
(setq str (strcat "Area \t" (rtos (getvar 'area) 2 4)))
(write-line str fileopen)
(princ (strcat "\n" str))
)
((= "Comprimento" ans)
(prompt "\nSeleciona o objeto a medir o comprimento: ")
(if (setq ss (ssget "_+.:E:S" '((0 . "ELLIPSE,*POLYLINE,SPLINE,LINE,ARC,CIRCLE"))))
(progn
(setq str (strcat "Comp \t"
(rtos (vlax-curve-getDistAtParam (setq ent (ssname ss 0)) (vlax-curve-getEndParam ent)) 2 4)
)
)
(write-line str fileopen)
(princ (strcat "\n" str))
)
)
)
((= ans nil)
(setq flag nil)
(prompt "\nSaindo...")
)
)
)
(*error* nil)
(princ)
)
Mensagem 7 de 9
Anonymous
em resposta a: lucas.abramo

Olá @lucas.abramo Tente isso, eu simplifiquei um pouco seu código kkk 

 

;;Total Perimetro e Area
;;comando TPA
;;by Júnior Nogueira!
(defun c:tpa (/ e i l s )
  (if (setq s (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE"))))
    (progn
      (setq l 0.0 a 0.0)
      (repeat (setq i (sslength s))
        (setq e (ssname s (setq i (1- i))))
        (setq l (+ l (vlax-curve-getdistatparam e (vlax-curve-getendparam e))))
        (setq a (+ a (vlax-curve-getarea e)))
      )
      (princ (strcat "\nTotal Perimetro: " (rtos l)))
      (princ (strcat "\nTotal Area: "   (rtos a 2)))
    )
  )
  (princ)
)
(vl-load-com) (princ)

 

 

Mensagem 8 de 9
lucas.abramo
em resposta a: Anonymous

Junior Nogueira muito obrigado por sua disposição. Agradeço seu tempo em tentar me ajudar. O código que publiquei ele me gera um arquivo com as medidas de área e perímetro, essa função é fundamental pois com ela não preciso intercalar medidas e preenchimentos de planilha. 

A maneira ideal eu sei seria fazer tudo em BIM porém ainda é difícil o uso por aqui. 

 

Muito obrigado

 

Lucas

Mensagem 9 de 9
Anonymous
em resposta a: lucas.abramo

@lucas.abramo  Fica mais fácil quando você detalha exatamente o que você quer, anexa planilhas, fotos, .dwgs[....] pra que a gente saiba exatamente o resultado que você espera.
Gerar uma planilha com área e perímetro é muito fácil.

mas qual ordem deve ser obedecida?? tem algum detalhe a mais??

Anexe uma exemplo de seu .dwg e de sua planilha que eu ajudarei.

Não encontrou o que está procurando? Pergunte à comunidade ou compartilhe seu conhecimento.

Postar nos fóruns  

Autodesk Design & Make Report