Rotina para levantamento do comprimento de linhas por layer

Informações sobre aplicativos relacionado a área de elétrica.

Moderador: Moderadores

Responder
Avatar do usuário
williamcastromartins
Novato
Novato
Mensagens: 2
Registrado em: Dom 04 Dez 2005 11:00:00 pm

Rotina para levantamento do comprimento de linhas por layer

Mensagem por williamcastromartins »

Estou precisando de uma rotina que faça o levantamento do comprimento das linhas (ou polilinhas) de cada layer.
Alguém pode me ajudar?

William
Avatar do usuário
Rogerio
Master
Master
Mensagens: 2034
Registrado em: Ter 23 Mar 2004 12:00:00 am

Mensagem por Rogerio »

Créditos: Jeff Mishler, do Autodesk Discussion Groups.

Veja se te serve. Lista a soma do cpto. de todas as linhas, plines, lwplines do desenho.


Ele fez pra LINE, acrescentei POLYLINE e LWPOLYLINE.

Modifique a seu critério. Basta apagar a vírgula e a entidade que não deseja na linha abaixo:

(if (ssget "x" (list (cons 0 "LINE,POLYLINE,LWPOLYLINE") (cons 8 (cdr (assoc 2 lay)))))
;----------------------------------------------------------------------------------------------

;;Início da Rotina...
;;Comando inicial: LENBYLAY

(defun c:lenbylay (/ lay doc ss len totals)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(while (setq lay (tblnext "LAYER" (not lay)))
(if (ssget "x" (list (cons 0 "LINE,POLYLINE,LWPOLYLINE,ARC") (cons 8 (cdr (assoc 2 lay)))))
(progn
(setq ss (vla-get-activeselectionset doc)
len 0.0)
(vlax-for ent ss
(setq len (+ (vla-get-length ent) len))
)
(setq totals (cons (cons (cdr (assoc 2 lay)) len) totals))
)
)
)
totals
)
;;fim da rotina/ end of defun

Não funciona com arcos e círculos.

[]s,

Rogério
Responder