Подсчет динамических блоков в автокаде
Перейти к содержимому

Подсчет динамических блоков в автокаде

  • автор:

Подсчет блоков по одинаковым значениям атрибутов и/или их динамических свойств

Есть автоустановка (установщик в исходнике — можно деинсталировать вручную).

Суть программы:
Определить область для поиска нужных блоков на нужных слоях и нужных атрибутов. В отчет (таблица) заносится позиция блока, значения атрибутов и количество одинаковых (по значениям атрибутов).

При этом можно ставить или нет позиции (мультивыноски) на блоки.
Указать слой для выносок и таблицы. Определить порядок записи значений атрибутов в таблицу, порядок и имена заголовков в шапке таблицы.

Если проще сказать:
Подсчет количества одинаковых блоков с одинаковыми значениями атрибутов.

К примеру можно посчитать количество одинаковых блоков, но с разными значениями атрибутов или свойств.
(один блок, но под разных производителей)

PS
А еще информация многоугольной области сохраняется в таблицу.
Можно сколь угодно создавать таблицы. Пересчет таблиц так же есть.

Подсчет блоков с помощью извлечения данных AutoCAD

Создание атрибутов блоков в Автокаде позволяет хранить полезную информацию в чертеже, экспортировать ее для последующего использования в электронных таблицах или базах данных для генерации различных спецификаций. Как правильно выполнять извлечение данных в Автокаде, рассмотрим далее.

Рациональная работа в Автокаде. Формируем таблицу из атрибутов блоков

Чтобы осуществить подсчет блоков в Автокаде, давайте смоделируем ситуацию. Допустим, у нас на чертеже есть несколько блоков: Плитка №1, Плитка №2 и Плитка №3, каждому из которых присвоено сразу же несколько атрибутов — «МАТЕРИАЛ», «ПЛОЩАДЬ», «РАЗМЕР» и «ЦВЕТ».

Вхождение этих блоков у нас задано в произвольном порядке и количестве. Перед нами стоит задача – обобщить информацию! Нам нужно не просто определить количество блоков Автокад, но и выполнить простейшие манипуляции с данными, которые присвоены объектам .

ПРИМЕЧАНИЕ: Если вы ранее не работали с блоками, то можете найти дополнительный материал по этой теме в самоучителе AutoCAD.

Чертеж AutoCAD с блоками и атрибутами

Рис. 1. Чертеж AutoCAD, содержащий блоки с атрибутами.

Перейдите на вкладку «Вставка» и в панели «Связывание и извлечение» выберите команду «Извлечь данные». Местоположение данной панели на ленте у вас может отличаться от указанного на рис. 2, т.к. по умолчанию она расположена правее.

Извлечение данных с чертежа AutoCAD

Рис. 2. Команда AutoCAD «Извлечь данные».

Появится диалоговое окно, в котором нужно последовательно пройти 8 шагов.

1. Поставить галочку напротив «Создать новое извлечение». Нажать «Далее». Появится диалоговое окно сохранения извлеченных данных, в котором следует указать имя файла и нажать «Сохранить».

Извлечение данных в Автокаде - Начало

Рис. 3. Извлечение данных в Автокаде — Шаг 1.

2. Указать источник извлечения данных. Это может быть либо весь чертеж, либо отдельные объекты. Рассмотрим пример, где выделены конкретно наши блоки.

Извлечение данных - подсчет блоков в Автокаде

Рис. 4. Шаг 2 — Определение источника данных в Автокаде.

3. В параметрах отображения поставим галочку напротив «Отображать только блоки с атрибутами». Вы можете варьировать варианты выбора объектов.

Извлечение данных - посчитать количество блоков в Автокаде

Рис. 5. Шаг 3 — Выбор объектов AutoCAD.

4. В фильтре категорий оставим только значение «Атрибут».

Извлечение данных Автокад (количество блоков)

Рис. 6. Шаг 4 — Выбор свойств в Автокаде.

5. На данном шаге следует уточнить данные. Т.е. то, что будет сводиться в таблицу. В нашем случае поменяем местами столбцы, добавим итоговую ячейку «Сумма» для столбца «Количество плитки». Столбец отсортируем по возрастанию. Данные действия можно совершать, нажав ПКМ по табл. и выбрав нужное значение.

Извлечение данных AutoCAD – Уточнение данных

Рис. 7. Шаг 5 — Уточнение данных AutoCAD.

На данном этапе можно вставлять собственные формулы.

Рассчитаем, какую площадь занимает определенный вид плитки. У нас есть значение площади одной плитки и их количество. Соответственно, нажимаем ПКМ по табл., выбираем «Вставить столбец с формулой» и в появившемся окне «собираем» нужную формулу.

Извлечение данных из Автокада – Вставка столбца с формулой

Рис. 8. Работа с ячейками таблицы извлечения данных AutoCAD.

ПРИМЕЧАНИЕ: Если в ячейке будет недопустимое значение атрибута, то в результате расчета может возникнуть ошибка (см. рис. 9).

Как извлечь данные из Автокада

Рис. 9. Возможные ошибки в AutoCAD из-за некорректного значения атрибута.

6. На следующем этапе нужно определиться, куда извлекать данные: непосредственно в сам чертеж или во внешний файл, например, Excel.

Извлечение данных Автокад – Выбор типа вывода

Рис. 10. Шаг 6 — Выбор типа вывода данных AutoCAD.

7. Определяем стиль (внешний вид) таблицы по своему усмотрению.

Сохранить данные из Автокада в таблицу

Рис. 11. Шаг 7 — Настройка стиля таблицы с извлекаемыми данными AutoCAD.

8. Нажимаем «Готово». В графическом пространстве чертежа нужно указать точку вставки табл.

Извлечение данных с чертежа AutoCAD – Вставка таблицы в чертеж

Рис. 12. Шаг 8 — Заключительный этап извлечения данных в Автокаде.

Таким образом можно извлекать нужную информацию прямо с чертежа. Это очень полезное свойство блоков с атрибутами. Можно не только посчитать количество блоков в Автокаде, но и выполнять различные манипуляции с данными.

Освойте профессию проектировщика

Научитесь быстрому черчению, освоите прикладное 3D, автоматизируете создание ведомостей и спецификаций.

Подсчет Блоков и Динамических блоков с учетом visibility (видимости) и сумму длин линий, полилиний по слоям и вывод результатов в Ecxel

Привет всем! После долгих «ручных» подсчетов различных элементов на чертежах назрел вопрос об автоматизации всего этого процесса. Пользуюсь разными лиспами (прилагаются во вложении) как их объединить не знаю, ввиду отсутсвия знаний в программировании на языке Lisp.
Прошу если, кто-то уже с такой задачей сталкивался, помочь в решении данного вопроса. Заранее Благодарен.
Прилагаемые файлы
1. DBCountV1-0.lsp (считает все блоки в т.ч. динамические с учетом видимости, но делает это во всем чертеже, а иногда требуется подсчитать по выделению) можно ли сделать чтобы программа спрашивала по выделению или во всем чертеже считать блоки?
2. CountV1-3.lsp (считает все блоки в т.ч. динамические по выделению и во всем чертеже, но без учета видимости динамических блоков и может экспортировать данные в CSV или ТXТ) можно ли добавить сюда разбивку посчитаных блоков с учетом видимости.
3. Mlen41.lsp (считает длины выделенных линий на определенном слое и выводит результат в EXCEL)
4. АПС и СОУЭ.dwg (сам файл чертежа с динамическими блоками, линиями и полилиниями)

Возможно ли все это собрать в одну программу, которая выводила результат по возможности в EXCEL или в текстовое окно AutoCad как показано ниже

Буду признателен за любую помощь в решении вопроса.

LISPAutoCad.zip (118.8 Кб, 202 просмотров)
DWG 2007 АПС и СОУЭ.dwg (152.7 Кб, 3661 просмотров)
CountV1-3.lsp (20.6 Кб, 193 просмотров)
DBCountV1-0.lsp (7.7 Кб, 211 просмотров)
Mlen41.lsp (7.4 Кб, 171 просмотров)

Просмотров: 13630

Andrey_nadym
Посмотреть профиль
Найти ещё сообщения от Andrey_nadym

Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989
А зачем штаны через голову надевать в Exсel, может быть на месте, в Автокад? )
Регистрация: 22.02.2008
Сообщений: 174
Можно и в AutoCad, просто чтобы это делала одна программа, а не три

Andrey_nadym
Посмотреть профиль
Найти ещё сообщения от Andrey_nadym

Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989
А штатное «Извлечение данных» чем не устраивает?
Регистрация: 12.07.2009
Сообщений: 2,481

А чего тут сложного, вставил в каждый блок атрибут «Количество», а с ним уже что угодно можно сделать. И не только так, а в виде готовой спецификации. Длины — тоже блоком, растянул как надо и автоматом длину просуммировало.
У нас уж третий год такая технология.

__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.

maratovich
Посмотреть профиль
Посетить домашнюю страницу maratovich
Найти ещё сообщения от maratovich

Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989
Сообщение от maratovich

А чего тут сложного, вставил в каждый блок атрибут «Количество», а с ним уже что угодно можно сделать. И не только так, а в виде готовой спецификации. Длины — тоже блоком, растянул как надо и автоматом длину просуммировало.

Ну и? Хвастаешься?
Делись давай!
Регистрация: 12.07.2009
Сообщений: 2,481
Сообщение от Nike
Ну и? Хвастаешься?
Делись давай!

Можно и извлечением данных, а у нас стоит прога, я уже не раз писал (не сочтите за рекламу)
Прога
Только надо хотя бы пролистать инструкцию.

__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.

maratovich
Посмотреть профиль
Посетить домашнюю страницу maratovich
Найти ещё сообщения от maratovich

Регистрация: 22.02.2008
Сообщений: 174

А из имеющихся лиспов можете собрать то, что надо. Функция выгрузки не всегда удобна. Рисовать линии блоками тоже не айс. Иногда требуется определить длины или количество блоков по выделению.

Andrey_nadym
Посмотреть профиль
Найти ещё сообщения от Andrey_nadym

Регистрация: 12.08.2005
Сообщений: 523

В прилагаемом файле выполнено извлечение данных штатными средствами Акада — проще некуда. Подсчет блоков (не динамических, я их не использую), подсчет длин линий в метрах по масштабу с запасом 20% на спуски-подьемы, хоть поэтажно, хоть на весь комплект чертежей.
Акад 2010, нужные файлы *.dxe прилагаются.

Извлечение данных.zip (359.0 Кб, 219 просмотров)

__________________
В MEP моя буква — Е
Регистрация: 12.07.2009
Сообщений: 2,481
Сообщение от Andrey_nadym

А из имеющихся лиспов можете собрать то, что надо. Функция выгрузки не всегда удобна. Рисовать линии блоками тоже не айс. Иногда требуется определить длины или количество блоков по выделению.

Это вопрос ? Или утверждение ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.

maratovich
Посмотреть профиль
Посетить домашнюю страницу maratovich
Найти ещё сообщения от maratovich

Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989
А если в блоки добавить атрибуты «Наименование» и «Марка» — ещё интереснее будет:

Извлечение данных.zip (358.5 Кб, 175 просмотров)

Регистрация: 22.02.2008
Сообщений: 174
Спасибо за файлы *.dxe. Но хотелось бы решить вопрос про лисп.

Andrey_nadym
Посмотреть профиль
Найти ещё сообщения от Andrey_nadym

Регистрация: 12.08.2005
Сообщений: 523
Сообщение от Andrey_nadym
Спасибо за файлы *.dxe. Но хотелось бы решить вопрос про лисп.

«Так вам с шашечками или ехать?»
С лиспом ты предлагаешь кому-нибудь поработать на тебя, а с *.dxe делаешь все сам и контролируешь процесс. Что результативнее?

__________________
В MEP моя буква — Е
Регистрация: 22.02.2008
Сообщений: 174

Не поработать, а помощи просил в соединении лиспов в один. Как уже писал ввиду отсутствия знаний в программировании на лиспе. Я думаю если кто поможет и сделает то, что требуется многим пригодится ведь не все программировать умеют.

—— добавлено через ~1 ч. ——
Сам когда-либо что-нибудь делаю полезное или для облегчения трудоемких и нудных расчетов непременно делюсь и выкладываю на этом сайте. Всегда помогаю людям работающим в оласти Пожарной безопасности. Вот для примера можно посмотреть
1. калькулятор определения расчётных величин индивидуального пожарного риска http://dwg.ru/dnl/11647
2. Калькулятор определение критической продолжительности пожара по аналитическим соотношениям ОФП http://dwg.ru/dnl/11669
3. Калькулятор расчета времени эвакуации http://dwg.ru/dnl/12298

Наверное повторюсь, но Буду признателен за любую помощь в решении вопроса по совмещению лиспов.

Последний раз редактировалось Andrey_nadym, 18.11.2013 в 12:44 .

Andrey_nadym
Посмотреть профиль
Найти ещё сообщения от Andrey_nadym

Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989

Andrey_nadym, я пытался, но не осилил .
Сам не вижу необходимости в данных программах.
В своей работе пользуюсь программой быстрого выбора по образцу SelSim и штатным «Извлечением данных» с использованием атрибутов (см. вложение в моем предыдущем посте).
Динамические блоки не использую.

Регистрация: 22.02.2008
Сообщений: 174
Nike Все равно огромное Спасибо, что не безразлично Вам.

Andrey_nadym
Посмотреть профиль
Найти ещё сообщения от Andrey_nadym

Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989

Andrey_nadym, «меня — один!» (c) kpblc
Вот, может пригодится, из моего инструментария несколько простых программ

 
;;;------------------Программа выбора всех одноименных блоков по образцовому --------------------------------------------------------- (defun c:ыи (/) (c:sb)) (defun c:sb (/ bS blok) (setvar "cmdecho" 0) (setq bS nil) (sssetfirst nil nil) (setq blok (vla-get-effectivename (vlax-ename->vla-object (car (entsel "Укажите нужный блок: "))))) (setq bS (ssget "_X" '((0 . "INSERT")))) ;;; (setq bS (ssget "_X" (list (assoc 0 blok) (assoc 2 blok) (assoc 410 blok)))) (mapcar '(lambda (name) (if (/= (vl-catch-all-apply 'vla-get-effectivename (list (vlax-ename->vla-object name))) blok) (ssdel name bS) ) ;_ end of if ) ;_ end of lambda (vl-remove-if 'listp (mapcar 'cadr (ssnamex bS))) ) (sssetfirst nil bS) (princ (strcat "\n*** Всего выбрано " (itoa (sslength bS)) " блоков ")) (princ) ) ;_ end of defun ;;;------------------Программа выбора всех одноименных блоков вкл динамические по образцовому в области --------------------------------------------------------- (defun c:ыиы (/) (c:sbb)) (defun c:sbb (/ d_block_name ss1) (vl-load-com) (princ "выделение аналогичных динамических блоков") (setq d_block_name (vla-get-effectivename (vlax-ename->vla-object (car (entsel "Укажите нужный блок: "))))) (setq ss1 (ssget '((0 . "INSERT")))) (mapcar '(lambda (name) (if (/= (vl-catch-all-apply 'vla-get-effectivename (list (vlax-ename->vla-object name))) d_block_name) (ssdel name ss1) ) ;_ end of if ) ;_ end of lambda (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))) ) ;_ end of mapcar (sssetfirst nil ss1) (princ (strcat "\n*** Всего выбрано " (itoa (sslength ss1)) " блоков ")) (princ) ) ;_end_of_defun ;;;------------------Программа выбора всех одноименных блоков на одном слое --------------------------------------------------------- (defun c:ыид (/) (c:sbl)) (defun c:sbl (/ bSet blok) (setq bSet nil) (sssetfirst nil nil) (setq blok (entget (car (entsel "\nВыберите блок: ")))) (setq bSet (ssget "_X" (list (assoc 0 blok) (assoc 2 blok) (assoc 8 blok)))) (princ (strcat "\n*** Всего выбрано " (itoa (sslength bSet)) " блоков ")) (sssetfirst nil bSet) (princ) ) ;_ end of defun ;;;------------------Программа выбора всех одноименных блоков в указываемой области --------------------------------------------------------- (defun c:ыик (/) (c:sbr)) (defun c:sbr (/ bS blok) (setvar "cmdecho" 0) (setq bS nil) (sssetfirst nil nil) (setq blok (entget (car (entsel "\nВыберите блок: ")))) (setq p1 (getpoint "\nУкажите точку 1: ")) ;setq (setq p2 (getcorner p1 "Укажите точку 2: ")) ;setq (setq bS (ssget "_w" p1 p2 (list (assoc 0 blok) (assoc 2 blok)))) (sssetfirst nil bS) (princ (strcat "\n*** Всего выбрано " (itoa (sslength bS)) " блоков " (cdr (assoc 2 blok)))) (princ) ) ;_ end of defun

Автоматический подсчет количества блоков в AutoCADe

Дата7 декабря 2015 Авторk-igor

Благодаря вашим комментариям, замечаниям и предложениям я совершенствую свои навыки проектирования, в том числе и повышаю производительность своей работы. В этой статье я расскажу, как можно быстро посчитать количество блоков в программе AutoCAD.

Когда полезен автоматический подсчет блоков?

Автоматическим подсчетом блоков я начал пользоваться совсем недавно. Я уже вам рассказывал про свои некоторые динамические блоки. Например, выключатели освещения, розетки, светильники.

Если на плане 5-10 розеток, то посчитать их не составит труда. А вот если у вас большой объект, то подсчет выключателей, розеток и светильников может затянуться на десятки минут.

В настоящее время я занимаюсь переработкой всех своих динамических блоков и в скором времени представлю их на блоге. Это будет некий полуфабрикат проекта, который значительно сократит время проектирования. Будут не только блоки, но и некоторые готовые решения, которые можно будет использовать в своем проекте.

Автоматический подсчет блоков идеально подходит для подсчета выключателей и розеток на плане. Для светильников он не очень подходит, т.к. разные светильники могут иметь одинаковое графическое изображения. А делать блок под каждый светильник, считаю, не очень целесообразно.

Пример автоматического подсчета выключателей.

1 Дорабатываем блок.

Заходим в редактор блоков и добавляем скрытый атрибут:

Добавляем скрытый атрибут

Добавляем скрытый атрибут

Это один из вариантов подсчета. Я изначально считал свои блоки именно через скрытые атрибуты.

Но, можно считать блоки через видимости блока. Это гораздо проще. Не требуется добавлять никаких атрибутов.

Добавленный атрибут (видимость блока) – это идентификационное имя блока, по которому будет выполнен подсчет.

2 Извлечение данных.

Заходим в Сервис->Извлечение данных.

Указываем все нужные настройки и получаем количество блоков.

Экспорт количества блоков можно сделать в виде таблицы в самом файле AutoCADа, но я предпочитаю сохранять в отдельном файле *.xls.

Подробнее смотрите в видео:

А как вы считаете выключатели и розетки на планах?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *