Автокад lisp скрипт подсчет блоков на чертеже

Обновлено: 07.07.2024

По просьбе друга написал небольшую программу для подсчёта блоков, указанных пользователем. Программа оказалась полезной, поэтому потом её существенно доработал для подсчёта блоков, входящих в данный; для определения суммы длин линий, имеющих сходные признаки (слой, тип и т.п), в пределах всего чертежа или указанной области; для формирования итоговых спецификаций на основе таблиц из чертежей; для быстрого объединения примитивов в группы; в общем, для автоматизации целой серии рутинных операций. Теперь на этом экономлю часы и дни, чего и вам желаю :).

Демоверсия программы

Базовая постановка задачи: создать инструмент для простого подсчета указанных пользователем блоков и записи результата куда-нибудь. Простейшая реализация: после запуска программы пользователь в ответ на запрос указать объект щёлкает мышкой по нужному блоку, данные о нём (имя и количество таких блоков) тут же заносятся в таблицу, автоматически создаваемую по форме 7 обязательного приложения "К" ГОСТ 21.1101-2009. В принципе ничего сложного, вот короткий ролик, демонстрирующий её работу:

Если после запуска программа находит таблицу перечня оборудования, которую она создала ранее, то новую не создаёт, а работает с найденной. Если таблиц несколько, то данные заносятся в одну из них, как правило, добавленную последней. При этом наличие аналогичных данных в других таблицах не проверяется.

Программа работает с любым автокадом (полной версией, в лайте возможности автоматизации обрезаны), в котором используется примитив "таблица" (если не ошибаюсь, начиная с ACAD2004). Формируемые таблицы используются полной версией программы Mikitkin для получения итоговой спецификации по всему разделу (см. ниже), хотя стандартные средства AutoCAD легко позволяют перенести эти данные в Excel.

Как известно, автокад работает не с абсолютными, а с относительными единицами. Пользователи используют разные методы работы: кто-то чертит в масштабе 1юнит=1мм, кто-то 1юнит=1м, кто-то вообще как получится. Поэтому размер таблицы может оказаться не соответствующим Вашему чертежу. Ничего страшного в этом нет: после выполнения подсчётов просто выполните масштабирование полученной таблицы. В программе Mikitkin для указания масштаба выделено отдельное поле.

Полная версия программы "Счетовод Микиткин"

Окно программы выглядит следующим образом:

Окно программы Mikitkin

Полная версия программы "Счетовод Микиткин" в принципе решает те же задачи, что и демоверсия, но в ней добавлены элементы ускорения выполнения отдельных операций, а также ряд дополнительных возможностей:

1. Подсчёт блоков и длин линий выполняется в пределах (см. панель "Область обработки" на рисунке выше):

- всего текущего чертежа (аналог демоверсии);

- указанной пользователем области чертежа (после начала обработки программа запрашивает у пользователя две точки - левый нижний и правый верхний углы области, в пределах которой будет выполняться обработка, и вычерчивает в текущем слое прямоугольный контур);

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

- в пределах указанной пользователем конкретной форматной рамки. Поясню, что во всех моих программах в качестве "форматной рамки" используются блоки с именем "Формат . ", например, Формат А4, Формат А3 и так далее. Эти же форматные рамки используются в программе печати PodarokOtDoyarok;

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

Выбор варианта осуществляется установкой переключателя в поле "Область обработки" (см. рисунок выше).

2. В пределах заданной области чертежа выполняется:

- подсчёт указанных пользователем блоков, причём в отличие от описанной выше демоверсии можно выделить не один, а сразу произвольное количество блоков. На практике я выделяю блоки из условных обозначений данного чертежа, а программа формирует заготовку перечня оборудования по данному чертежу;

- подсчёт блоков, имена которых указаны пользователем в списке, формируемом программой. Когда Вы ставите переключатель в это поле, программа выбирает из файла все имеющиеся в нём имена блоков и выводит их в виде списка в левое поле (см. рисунок выше). Ваша задача - поставить галочки возле блоков, которые Вы хотите подсчитать. Если ни одного имени не будет указано, программа выполнит подсчёт всех найденных блоков;

- подсчёт блоков на слоях, имена которых (как блоков, так и слоёв) выбираются пользователем из списков, сформированных программой. Аналогично предыдущему пункту, после установления переключателя в этом поле будет сформировано два перечня - имен блоков и имен слоёв (именно этот вариант приведён на рисунке выше). Ваша задача указать блоки и слои, на которых следует искать данные блоки. Если слои не заданы, программа будет искать блоки на всех слоях. При использовании программы обратите внимание, что выбранные Вами имена блоков сохраняются и при последующем запуске будут добавлены в перечень обрабатываемых автоматически;

- подсчёт суммы длин линий и полилиний по образцу. В качестве критериев сравнения с образцом можно использовать слой, тип линии, цвет, толщину, а также произвольную комбинацию этих признаков. При установке переключателя в данном пункте окно программы приобретёт вид в соответствии с рисунком:

Окно программы при выборе пункта "Определить сумму длин линий. "

Возможный пример использования: короба выделяем линией красного цвета, толщина 0.5 соответствует коробу одного типа, 0.4 другого и т.п. Гофра будет синего цвета, металлорукав зелёного и т.п. Одним словом, простор для Вашей фантазии или требования Вашего стандарта предприятия. Если все эти нюансы отражены в условных обозначениях к данному чертежу, то достаточно выделить находящиеся там образцы линий, и программа определит сумму длин аналогичных линий во всей указанной области чертежа и занесёт сведения о них в таблицу.

По просьбе коллег добавил пару коэффициентов К1 и К2, на которые умножается полученный результат и которые тоже можно интерпретировать по-разному, например один - масштабный коэффициент (для приведения юнитов чертежа к метрам), а второй - коэффициент запаса (1,08 или 1,3 или иной). Коэффициент запаса позволяет учесть не только запас на разделку кабелей, изгибы и пр., но и тот факт, что линии на чертеже прокладываются не по линиям стен (это нарушение), а рядом. Фактически, вносится заведомая ошибка. Кроме того, обычно не учитываются подъёмы-спуски. Моя многолетняя практика говорит, что для зданий этот коэффициент следует брать 1,45, для площадок и периметров - поменьше. Опять же зависит от того, есть ли на площадках эстакады, подъёмы-спуски на которых составляют по десятку метров и следуют иногда достаточно часто.

Если Вам эти коэффициенты не нужны, оставьте в соответствующих полях единичные значения.

При использовании программы обратите внимание, что выбранные Вами имена блоков и слоёв сохраняются и при последующем запуске будут добавлены в перечень обрабатываемых автоматически.

Разумеется, подобные операции можно совершить и с помощью окна быстрого выбора, но скорость работы при этом несоизмерима. Особенно эффективно сочетание режимов обработки "в пределах каждого блока "Формат " и "использовать имена блоков из перечня" : задав интересующие Вас блоки, запускаете программу и моментально получаете результат по всем находящимся в файле чертежам.

Часто задаваемый вопрос: почему у меня не заполнены поля с именами блоков и слоёв? Ответ: эти поля автоматически заполняются ТОЛЬКО при выборе соответствующего пункта меню в панели "Способ задания образцов. "!

3. Самое полезное (для меня) состоит в возможности выполнять автоматическое формирование итоговой спецификации: на каждом чертеже размещаем подобную таблицу, даже если чертим схему и заносим туда количество плинтов, клеммников или ещё чего угодно. Далее нажимаем кнопку, "Сформировать спецификацию". В зависимости от наличия галочки в поле "Формировать спецификацию с суммированием элементов" спецификация выполняется с суммированием аналогичных позиций по всем чертежам или же простым переносом данных из чертежей (например, иногда необходимо каждый шкаф или этаж расписать в спецификации отдельно). И через несколько секунд или минут, в зависимости от сложности раздела, получаем результат. Несомненное достоинство, кроме скорости работы, состоит в точности работы, ведь пропуск позиций или неверные суммы могут стоить миллионы рублей!

4. Выше было сказано, что вычерчивание в Автокаде ведётся в относительных величинах. У каждого юнит равен своему значению - у кого-то метру, у кого-то миллиметру. Чтобы не масштабировать создаваемую программой таблицу вручную, сразу задайте необходимый масштаб в поле "Коэффициент увеличения таблицы". Программа вычерчивает строку таблицы высотой (8 * коэффициент), текст в таблице высотой (2.5 * коэффициент), указанный в данном поле.

5. По окончании работы программы выполняется зуммирование экрана так, чтобы таблица была по его центру.

6. Назначение переключателей в левой нижней четверти окна программы следующее:

- "Проверять наличие дублирования блоков". Функция добавлена по просьбе коллег. Иногда в одной точке оказывается два блока, один на одном. Стандартные методы подсчета блоков показывают больше, чем видит пользователь, который не поймёт, в чём дело. Если галочка установлена, то при нахождении дубля дальнейшая обработка прерывается и выполняется зуммирование экрана, чтобы показать дубль. Блоки считаются дублированными, если совпадают точки вставки у одноименных блоков. Если для Вас это не актуально, снимите галочку в данном поле.

- "Не обрабатывать динамические блоки". Включение в обработку динамических блоков занимает относительно много дополнительного времени, поэтому если Вы такие блоки не используете, установите галочку в данном поле.

- "Не учитывать блоки на слоях "Условные . ". Как сказано выше, я размещаю блоки условных обозначений на чертеже и выделяю именно их для подсчёта. Понятно, что эти блоки являются лишними и не должны входить в итоговый результат, поэтому для их размещения использую слой, начинающийся со слова "Условные" плюс пробел, например, "Условные ТСО", "Условные СТН" и т.п. Если для Вас это не актуально и Вы такие слои не используете, то значение переключателя на Ваш результат никак не повлияет.

- "Не учитывать вложенные блоки" - установленная в этом поле галочка упрощает и ускоряет работу программы. Реализация проверки вложенных блоков выполнена для отдельных приёмов работы с документацией и большинству проектировщиков, думаю, не требуется. Если же галочка снята, программа выполняет проверку входящих в состав блоков примитивов. Если обнаруживается входящий блок, он также записывается в перечень оборудования вместе с основным блоком. Принято следующее правило: если в составе блока обнаруживаются входящие в него блоки, то у исходного блока кроме количества записывается слово " комплект ", а если в указанный комплект входит блок без дополнительных входящих блоков, то к количеству в поле "Примечание" пишется " шт. ".

Деморолики работы программы "Счетовод Микиткин":

Для чего нужен весь этот сыр-бор, или итоговый результат:

В ролике демонстрируется два варианта получения итоговой спецификации по оборудованию шкафов за три минуты (по минуте на вариант плюс показ работы с программой) путём обработки пятнадцати файлов, содержащих перечни оборудования примерно четырёх десятков шкафов. Разумеется, это можно посчитать и вручную. А если перечней оборудования сотня? А если в каждом по два-три десятка позиций?

С чего всё начинается: демонстрация работы с простыми блоками.

Разумеется, я не изобрёл велосипед. Если поискать на dwg.ru, можно найти советы о том, как сделать часть того, что выполняет программа "Счетовод Микиткин" :). Поделюсь "секретом": есть хитрая команда bcount, набрав которую в командной строке автокада, Вы можете попробовать подсчитать блоки в выделенном наборе. Как это выглядит и чем отличается от возможностей Микиткина, и показано в данном ролике.

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

В заключении демонстрируется возможность переноса полученных данных из сформированных в предыдущих роликах перечней оборудования в спецификацию, которую удобнее выполнять в WORD:

7 декабря 2015 k-igor

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Автор:

Прим.: Начиная с версии AutoCAD 2022, рекомендуется использовать новую функцию подсчета , чтобы легко подсчитывать экземпляры блоков и другие типы объектов.

Вы когда-либо считали блоки? Возможно, вам необходимо найти все экземпляры определенного блока на заданном слое. Существует способ очень быстро и точно подсчитать блоки в чертеже с помощью функции «Быстрый выбор». Быстрый выбор также ускоряет процедуру поиска блоков или других объектов с определенными свойствами.

Подготовьтесь к обходу

Следующие этапы направлены на создание нескольких блоков и их размещение на нескольких слоях.

  1. Создайте новый чертеж.
  2. Создайте три блока и назовите их A410, B424 и B664.

Результат может выглядеть следующим образом:


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

  1. Откройте вкладку «Главная», панель «Утилиты» и выберите команду «Быстрый выбор» или введите в командной строке БВЫБОР.


Заданные блоки теперь выделены и добавлены в новый набор объектов, а их точное количество указано в командном окне.


Прим.: Блоки, которые вложены в другие блоки или в объекты ассоциативных массивов, не выбираются и не подсчитываются с помощью команды быстрого выбора.

Подсчет блоков с помощью спецификаций знаков подстановки

Иногда необходимо подсчитать блоки с помощью общего образца имени. Чаще всего используется подстановочный знак «?» для одного символа и «*» для любого количества символов. Например, можно выполнить поиск всех блоков, начинающихся с буквы B с помощью B* и всех блоков, у которых вторым знаком является 4, с помощью ?4*.

    Запустите команду БВЫБОР еще раз, указав в поле «Поиск с глобальными символами» значение B*, как показано ниже, и нажмите «ОК».


Будут выбраны все блоки, начинающиеся с B, как показано ниже.


Кроме того, будет отображаться точное количество.


Выбраны все экземпляры блоков A410 и B464, а в командном окне отображается точное количество.

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

Чтобы подсчитать все блоки на заданном слое, выполните следующие действия.

  1. Запустите команду БВЫБОР.
  2. Укажите слой, выберите 001 abc в качестве значения для него, а затем нажмите «ОК».


Будут выбраны все блоки на слое 001 abc, а также указано их количество.

Сужение выбора

На данном этапе вам, возможно, необходимо узнать, как сузить выбор с помощью нескольких критериев. Например, как можно подсчитать все экземпляры блока A410 на слое 001 abc?

Есть отличный способ выполнить эту операцию. Выполните следующее.

    Запустите команду БВЫБОР.

В настоящий момент выбраны все блоки на слое 001 abc. Обратите внимание, что в поле «Применить» автоматически выбрано значение К текущему набору, как показано ниже.

Это значит, что будет использован только текущий набор объектов, а не весь чертеж.

Выбраны все блоки A410 (только) на слое 001 abc (только). Имея любой набор объектов, можно повторить команду БВЫБОР, чтобы продолжить сужать выбор.

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

Прим.: Чтобы сохранить четко заданный набор объектов, можно создать группу из выбранных объектов с помощью команды ГРУППА.

Помимо быстрого подсчета заданных блоков команду быстрого выбора можно также использовать для выполнения многих других задач с выбранными объектами. Например, можно использовать команду «Быстрый выбор» для выполнения следующих операций.

  • Выберите группу объектов на слое, а затем назначьте их другому слою.
  • Выберите все размерные объекты независимо от слоя и измените их цвет.
  • Выявите геометрические объекты, координаты Z которых не равны 0, а затем задайте для координат Z значение 0.

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

Совет: Для выбора совпадающих объектов попробуйте использовать в текущем чертеже команду SELECTSIMILAR. Используйте параметр «Настройки», чтобы указать различные сочетания свойств, а затем команду ВЫБРАТЬ или палитру свойств для подсчета. Кроме того, экспресс-инструмент BCOUNT позволяет подсчитать блоки элементов в наборе объектов или на текущем чертеже.

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

alt

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

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

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

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

Чертеж 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. Возможные ошибки в AutoCAD из-за некорректного значения атрибута.

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

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

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

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

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

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

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

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

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

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

Читайте также: