|
Тема |
Re: Дължина на леяр в Аutocad? [re: Mиpo] |
|
Автор | StSt (Нерегистриран) | |
Публикувано | 08.03.08 13:22 |
|
|
Ето ти една прорамка
Запиши я в Супорт директория под име LINLONG.LSP
Зареди с:
(load "LINLONG")
Стартирай с :
(linlong "име_на_слой")
и ще ти даде брой и дължини на всички линии и полилинии в избрания слой
;МЕРИ ДЪЛЖИНИ НА ЛИНИИ И ПОЛИЛИНИИ В СЛОЙ
(DEFUN LINLONG (LAY / NAB SUM LAYSP EN ENT I NN bpt)
(FOREACH NN '("LINE" "POLYLINE" "LWPOLYLINE" )
(SETQ NAB (SSGET "X" (LIST(CONS 0 NN)(CONS 8 LAY)))
I 0
SUM 0);SETQ
(if nab
(PROGN
(print "Layer: ")(princ lay)
(repeat (SSLENGTH nab)
(setq en (ssname nab i)
i (1+ i)
ent (entget en)
);setq
(cond
((=(cdr(ASSOC 0 ent))"LINE")(SETQ SUM (+ SUM (LLONG ENT))))
((=(cdr(ASSOC 0 ent))"LWPOLYLINE")(SETQ SUM (+ SUM (LpLONG ENT))))
);cond
);repeat
(PRINT NN)(PRINC(STRCAT
" "
(ITOA(SSLENGTH NAB))" бр. "
(rtos SUM 2 2))
);PRINC
);PROGN
);if nab
);FOREACH
(princ)
);LINLONG
;ДАВА ДЪЛЖИНА НА ЛИНИЯ
(DEFUN LLONG (ENT / PT1 PT2)
(DISTANCE (CDR(ASSOC 10 ENT))(CDR(ASSOC 11 ENT)))
);LLONG
;дава дължина на полилиния
(DEFUN lplong (ent / sump pt1 pt2 su nn)
(setq sump 0
pt1 (cdr(ASSOC 10 ent))
ent(MEMBER (ASSOC 10 ent)ent)
);setq
;;; (print ent)
(FOREACH nn ent
(if (=(car nn) 10)
(PROGN
(setq pt2 (cdr nn)
sump (+ sump (DISTANCE pt1 pt2))
pt1 pt2
);setq
));PROGN if
);FOREACH
sump
);lplong
|
| |
|
|
|