Подсчет блоков AutoCAD

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

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

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

 Ролик показывает, как при открытом чертеже из произвольной папки запускается на выполнение программа "MikitkinFree.exe", которую можно скачать в конце статьи. В командной строке автокада выводится сообщение "Укажите левый верхний угол для вычерчивания таблицы". В указанную Вами точку будет помещён угол заголовка таблицы с данными по количеству блоков в виде "имя блока" - "количество". После вычерчивания шапки программа работает по кругу: ждёт, пока пользователь укажет блок и нажмёт "ввод" (у меня эту команду даёт правая кнопка мыши; нажатие той или иной кнопки в ролике отображается рядом с курсором мыши, только качество видео поставьте получше), считает все блоки с именем, аналогичным указанному, во всём чертеже, и либо добавляет строку в таблицу, если там такой строки нет, либо просто обновляет количество таких блоков. Для завершения работы программы в ответ на очередное приглашение указать блок нажмите "ввод", ничего не указав.

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

 Программа работает с любым автокадом (полной версией, в лайте возможности автоматизации обрезаны), в котором используется примитив "таблица" (если не ошибаюсь, начиная с 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:

 

Распространение программ

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

 Программа "Счетовод Микиткин" (файл Mikitkin.exe с шаблоном спецификации для её вычерчивания) до 1.01.2013 распространяется бесплатно, после этого будет стоить символические 150 рублей за установку на одно рабочее место для поддержки проекта :) Для получения напишите письмо на адрес сайта prowodoc@prowodoc.ru, я вышлю генератор ключа, после получения которого вышлю программу. Оплата путём внесения суммы на номер телефона. Поддержка (консультации) по телефону, электронной почте, icq.

ВложениеРазмер
Файл MikitkinFree.rar164.63 КБ

Комментарии

на 2012м акаде 64х битном программа не запускается, увы.
По видео - лучшее из сети

У нас есть и 12-е, и 13-й на прошой неделе с новым АРМом поставили. Хорошо, что написали, есть повод протестировать на бОльшем числе компьютеров, а то у меня девятка стоит, с коллегами на работе поделиться программой как-то пока не довелось (вне работы замечания более предметные), да и вообще пользуюсь в основном полной версией - сам не ожидал, насколько полезный инструмент получится в результате обычной просьбы друга :) За минутку безошибочно собрать данные с сотни чертежей и сформировать спецификацию - мечта поэта!
 Если у Вас есть желание, давайте "отловим" Вашу проблему, могу бесплатно послать полную версию - я пока раздаю коллегам на тестирование, собираю замечания и пожелания по функционалу.

версии на работе оказались только 32-разрядные. И 12-й, и 13-й автокады работают с этой программой корректно. Так что не на чем смоделировать возникшую у Вас ошибку и проверить причину. А в чем выражается проблема? Может быть причина не в программе? Недавно мне выставляли замечания, в результате выяснилось, что люди при тестировании создавали новый файл и пытались с ним работать. Нюанс в том, что до выполнения первого сохранения файл для самого автокада как бы не существует, даже переменная есть соответствующая :)  Поэтому и мои программы ничего с таким рисунком сделать не могут. То есть сначала надо дать файлу имя, сохранив его, желательно отличное от предлагаемого по умолчанию, а потом тестировать что-то. Я бы мог это сделать программно, но в данном случае считаю это неправильным.

Попробовал вашу программу. Очень удачное решение. Однако динамические блоки она считать не может. Это ограничение бесплатной версии?
Испробовано на Автокаде 2008.

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

Разобрался в проблемме: оказывается, динамические блоки иногда вставляются в автокаде под своими псевдонимами! Поэтому просто так их не всегда можно найти. Я добавил необходимую обработку для поиска и таких блоков. Правда, только в полной версии.

По описанию, Вами разработана и, наверное, уже протестирована версия с подсчетом сумм длин линий и полилиний по признаку (слой, тип, цвет и т.д.).

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

С уважением, Сергей.

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

Было бы не плохо чтобы программа считала ещё и блоки внутри блока. К примеру необходимо определить количество болтов, гаек в арматуре (блок в котором сама арматура + уплотнители, болты гайки).

Специально по Вашему заказу. Не уверен, что пригодится самому, но деморолик выполнил на основе своей предметной области - телекамер системы охранного телевидения.
Можно считать, что все обозначенные коллегами пожелания реализованы до нового года. С сознанием выполненного долга можно идти на завтрашний корпоратив :)
Внимательный читатель может заметить, что в принципе можно реализовать любой каприз. Весь вопрос в частоте повторения тех или иных операций. Когда эти операции выполняются изо дня в день большим числом специалистов, то есть смысл сэкономить на их зарплате или на сокращении времени проектирования (если в нашей стране это кого-то волнует), отдав Человеку более творческие задачи:)

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

Filtered HTML

  • Use [collapse] and [/collapse] to create collapsible text blocks. [collapse collapsed] or [collapsed] will start with the block closed.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Generate stylish tooltips. Format: [qtip:Text to display on page|Tooltip title (optional)|Text to appear in tooltip]
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <h2> <h3>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос проверяет, что Вы человек.