|
Тема |
Re: слоеве [re: kolumb] |
|
Автор | StSt (Нерегистриран) | |
Публикувано | 08.06.06 20:39 |
|
|
Прилагам програмка за извеждане на списък с име на блоковете и броя им
За количествени сметки използвам по-сложен алгоритъм. Създавам общ файл от имена и бройки, в който включвам всички чертежи към проекта (за многоетажни сгради например). Блоковете са дефинирани с константни атрибути със името на реалния обект. От обобщения файл правя файл със сумирани стойности за еднаквите блокове по етажи(чертежи), а в програмата за създаване на количествена сметка имам заместваща таблица, която дава необходимите позиции от сметката за всеки един блок. За позициите от сметката, които зависят от дължини на линии или полилинии, имам отделна функция, която вади линиите (полилиниите) по слоеве, тип на линията, цвят и скала, обща дължина и брой линии. След това с малко по- сложна таблица извеждам съответните позиции от кол.сметката. Така създавам около 70-80% от цялата сметка. Останалите позиции добавям на ръка.
;ВАДИ СПИСЪК С БРОЙ НА БЛОКОВЕТЕ
(DEFUN BSPEC (/ BLK_SP BLK NAB BLLIME)
(SETQ BLK_SP (LIST(CDR(ASSOC 2 (TBLNEXT "BLOCK" T)))))
(WHILE (SETQ BLK (TBLNEXT "BLOCK" ))
(SETQ BLK_SP (APPEND BLK_SP (LIST (CDR(ASSOC 2 BLK)))))
);WHILE
(IF BLK_SP
(PROGN
(TEXTSCR)
(SETQ NAB (STRLEN (princ (STRCAT"\nСПИСЪК С ИМЕНА И БРОЙ БЛОКОВЕ ВЪВ `"(GETVAR "DWGNAME")"`\n"))))
(repeat (- nab 2) (princ "-"))
(SETQ BLK_SP (VL-SORT BLK_SP '<))
(FOREACH BLK BLK_SP
(SETQ NAB (SSGET "X" (LIST (CONS 2 BLK))))
(IF NAB
(PROGN
(PRINC (STRCAT"\n"(SUBSTR (STRCAT BLK " ..........................................................." ) 1 40)" - "(ITOA (SSLENGTH NAB))))
);PRINT
);IF NAB
);FOREACH
));IF BLK_SP
(PRINC)
);BSPEC
[\i]
|
| |
|
|
|