Preciso copiar os resultados das medidas dos comandos DIST e area automaticamente e lança-los em uma planilha
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
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.
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)
)
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)
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
@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.