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
Rotina para levantamento do comprimento de linhas por layer
Moderador: Moderadores
- williamcastromartins
- Novato
- Mensagens: 2
- Registrado em: Dom 04 Dez 2005 11:00:00 pm
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
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