Общие сведения о процедуре формирования спецификации
Получение спецификации оборудования, изделий и материалов (далее, для простоты – спецификации) является конечным итогом разработки рабочей документации. Но помимо этого это один из самых трудоемких и скучных этапов работы проектировщика.
Несмотря на большое разнообразие программных решений, механизм формирования спецификации в системе автоматизированного проектирования, в целом, состоит из 4-х этапов:
- Выбор необходимых графических объектов.
- Извлечение из этих объектов требуемых неграфических данных.
- Анализ и/или преобразование (при необходимости) неграфических данных.
- Формирование таблицы в нужном формате.
В общем виде после этапа 4 должна быть получена таблица следующего вида (порядок следования столбцов в данном случае не имеет значения):
ПОЛЕ_1 – ПОЛЕ_2 - обязательные столбцы спецификации. Содержат в себе наименования изделий, единицы измерения;
ПОЛЕ_3 – обязательный столбец спецификации. Содержит в себе суммарные значения количества изделий соответствующего наименования;
ПОЛЕ_4…ПОЛЕ_N – поля с дополнительной информацией по оборудованию (это может быть производитель оборудования, ГОСТ, вес единицы оборудования и т.п.).
К сожалению, в «голом» Автокаде (то есть без каких-либо надстроек, макросов, lisp-процедур) нет специального функционала для формирования спецификации, но тем не менее и в нем можно в некоторой степени автоматизировать процесс формирования спецификации.
Формирование спецификации в Автокаде
Реализовать механизм получения спецификации в «голом» Автокаде возможно с помощью команды «Извлечение данных…» меню «Сервис:
Также эту команду можно вызвать, если в русской версии Автокада набрать в командной строке «ДАННЫЕИЗВЛ» («_DATAEXTRACTION» в английской версии).
Но прежде, давайте поймем - что такое извлечение данных в Автокаде?
По сути, любой объект чертежа – графическое представление каких-то данных. Автокад в процессе своей работы обрабатывает и анализирует эти данные и выводит их на экран в виде графических объектов. Например, окружность для Автокада это набор данных о координатах центра, радиусе, слое расположения, типе и толщине линий и ряд еще данных которые нас сейчас не интересуют. Набор данных зависит от типа графического объекта – для окружности один набор данных, для отрезка другой, для блока – третий.
То есть между графическим объектом и неграфическими данными объекта, с точки зрения Автокада как компьютерной программы, можно поставить знак равно, но мы будем говорить, что неграфические данные прикреплены (или внедрены) к графическим объектам.
Отсюда можно определить извлечение данных как процедуру получения внедренных данных из различных графических объектов чертежа (графических примитивов, блоков и внешних ссылок) и из самого файла чертежа.
Какие данные можно извлечь из объектов чертежа?
Как было сказано выше, все графические объекты чертежа содержат в себе набор неграфических данных, зависящих от типа конкретного объекта. Например, из отрезка можно получить информацию о координатах вершин, весе линии, типе линии, слое размещения, из окружности – координаты центра, радиусе, площади и т.д.
Самый большой минус это то, что графические примитивы (отрезки, окружности, полилинии, штриховки и т.п.) содержат в себе только те свойства, которые в них заложили создатели Автокада и внедрить дополнительные данные в них простой пользователь не может. Хотя иногда и этих данных бывает достаточно – назвав слои определенным образом (например, по названию кабельной линии или трубопровода, наименованию территории) после извлечения данных можно получить, например, таблицу с суммарными длинами кабелей или труб, общую площадь благоустраиваемых территорий.
Но ведь в спецификации нам нужно иметь какие-то особенные данные (например артикул или название завода-изготовителя, массу изделия)? Каким образом можно «прицепить» эти данные к графическим объектам? Выход только один – нужно использовать блоки.
Возможность внедрения дополнительных (неграфических) данных - основное преимущество блоков перед графическими примитивами. Хранилищами таких данных в блоках могут выступать:
- атрибуты;
- пользовательские параметры;
- параметры операций;
- зависимости по параметру (размерные зависимости);
- кроме того, хранилищем дополнительной информации (при некоторых ограничениях использования) можно считать и имя блока.
На рисунке приведена палитра свойств блока, содержащего в себе все указанные выше источники дополнительных данных:
Набор и количество источников дополнительных данных – атрибутов и параметров, ограничивается лишь потребностями пользователя. Так что если вы планируете создавать полноценную спецификацию, нужно работать с блоками - только блоки позволяют простому пользователю внедрять в графические объекты все необходимые для составления спецификации данные.
Использование же графических примитивов в чертеже для составления спецификаций имеет право на жизнь, но влечет за собой множество условностей, что весьма сужает спектр областей применения.
Поэтому дальнейшее рассмотрение извлечения данных для составления спецификации будем производить в разрезе использования в нем блоков с параметрами и атрибутами.
Извлечение данных из блоков
Но прежде чем бросаться в творческую пучину блокостроения, давайте посмотрим, как работает извлечение в Автокаде: а то вдруг получится так, что разработанные нами блоки Автокад не сможет правильно обработать при извлечении данных?
Процедура извлечения данных в Автокаде состоит из 8 шагов:
- Определение файла для хранения настроек извлечения данных
- Определение источника данных (файлов и объектов чертежа)
- Выбор конкретных объектов-источников данных
- Выбор свойств объектов
- Уточнение данных (компоновка таблицы)
- Выбор типа вывода
- Определение стиля таблицы для вставки в чертеж
- Окончание процедуры извлечения данных
Начнем с того, что вставим в чертеж пять одинаковых блоков с разными значениями атрибута:
Значения атрибута различаются для каждого вхождения блока «Круг»:
Значение атрибута "атр_Количество" | 5 | 6 | 8 |
Количество вхождений блока | 2 | 2 | 1 |
Суммарное значение параметра | 30 |
В строке «Суммарное значение» приведено сумма значений свойств блоков, которую мы должны получить в таблице после извлечения данных.
Переходим непосредственно к извлечению данных. Сразу переходим к шагу 3 – выбор конкретных объектов-источников данных – выбираем блоки «Круг»:
На шаге 4 выбираем нужные свойства для извлечения:
Наконец мы добрались до компоновки таблицы с извлеченными данными:
Но итог нас не устраивает – нам нужно суммарное значение в столбце «атр_Количество», нам нужна таблица вида:
Количество | имя | атр_КОЛИЧЕСТВО |
5 | Круг | 30 |
В справке к Автокаду читаем:
Мы сейчас как раз на странице «Исправление данных» (хотя в «Извлечении данных» она называется «Уточнение данных») - попробуем сделать все по инструкции. Галочка стоит около опции «Объединить идентичные строки», делаем правый клик мышкой по полю в столбце «атр_Количество:
Но почему-то мы не можем объединить режим записи – нужное строка в выпадающем списке не активна! В чем причина, что мы сделали не так – все ведь делали как в инструкции? Попробуйте изменить формат данных столбца «атр_КОЛИЧЕСТВО»:
Сразу увидим, что тип данных тут «Текст»:
И смена типа данных на «Десятичное число», с форматом «Десятичные» и точностью до 4-х знаков после запятой
никак не влияет на содержимое столбца:
Все дело в том, что Автокад, как любая компьютерная программа может производить математические операции только с числами. И в данном случае в столбце «атр_Количество» он видит только графические символы, которые выглядят как цифры 5, 6 и 8. Приведу пример. Найдите сумму:
V + V = ?
Вы понимаете, что V это римская цифра 5 и, следовательно, получаем 5 плюс 5 равно 10. Но пример-то мы записывали с помощью английских букв «V»! Так и с Автокадом – то, что мы видим цифрами, на самом деле ими не является и поэтому Автокад не может ни сложить их, ни поделить – он воспринимает их как текст.
И вот тут мы возвращаемся опять к видам хранилищ данных в блоках:
- атрибуты;
- пользовательские параметры;
- параметры операций;
- зависимости по параметру (размерные зависимости).
Отличие этих хранилищ (помимо разницы во взаимодействии с пользователем и воздействии на блок) в тех данных, которые они хранят – точнее в типе данных, хранимых в них.
Создадим блок «Квадрат» в котором у нас будут все указанные выше хранилища данных:
Откроем блок для редактирования и вызовем диспетчер параметров:
Обратите внимание на столбец «Тип» - это тип данных, хранимых в конкретном параметре или атрибуте. Причем только у пользовательских параметров есть возможность изменить тип данных:
Все становится еще запутаннее. На самом деле нет! Главное запомнить – атрибуты хранят в себе только текстовые значения и все что вы в них запишете Автокад преобразует тип данных «Строка». А как мы уже выяснили ранее – с такими значениями с помощью извлечения данных спецификацию не сделаешь.
Оставим тип данных пользовательского параметра «ПП_Количество» равным значению «Вещественное» - то есть любое число (целое, дробное, отрицательное или положительное). И давайте попробуем извлечь данные из блоков «Квадрат». Создадим следующую ситуацию:
В этих вхождениях блока «Квадрат» пользовательские параметры «ПП_Количество» имеют следующие значения:
Значение пользовательского параметра «ПП_Количество» | 5.5 | 6.5 | 7.5 |
Количество вхождений блока | 3 | 2 | 4 |
Суммарное значение | 59.5 |
В строке «Суммарное значение» приведено сумма значений свойств блоков, которую мы должны получить в таблице после извлечения данных.
Вызываем процедуру извлечения данных для блоков «Квадрат» и доходим до шага 4 – выбор свойств блока для извлечения – указываем уже свойство «ПП_Количество» из категории «Динамический блок»:
И после него получаем таблицу с извлеченными данными из блоков «Квадрат»:
Опять перед нами похожая таблица как у блока «Круг»: давайте сделаем правый клик мышкой по полю в столбце «ПП_Количество».
И опять неудача – все ровно также, как и в случае с блоком «Круг» и применением атрибутов! Но тут уже нет нашей вины, это, по всей видимости недоработка создателей Автокада – в случае если тип данных «Вещественное» извлечение данных все равно работает не так как нам нужно.
Тут есть два пути решения проблемы:
- Изменить тип данных пользовательского параметра.
- Использовать параметры операций или зависимости по параметру (размерные зависимости)
Минусы обоих этих путей – значение параметра становится зависимым от масштаба вхождения блока. При изменении масштаба значения параметров меняются следующим образом:
Тип данных |
Коэффициент преобразования по масштабу k блока |
---|---|
Вещественное | - |
Расстояние | k |
Площадь | k2 |
Объем | k3 |
Угол | - |
Строка | - |
Значения с типом данных «Угол» не зависит от масштаба, но при его вводе значение ограничиваются интервалом от 0 до 360 и отрицательные значения преобразуются в соответствующие положительные (т.е. 380 градусов станут 20-ю, а -40 станут 320 градусами).
Кроме того каждое вхождение блока должно иметь одинаковые масштабы по осям X, Y, Z иначе все его параметры, даже независящие от масштаба, станут недоступными для редактирования и извлечение данных не поможет их получить, о чем на пятом шаге извлечения данных незамедлительно сообщит:
Имея теперь такие знания, смоделируем следующую ситуацию – в блоке «Квадрат» изменим тип данных параметра «ПП_Количество» на значение «Расстояние»:
Сохраним блок, вызовем извлечение данных и дойдем до шага компоновки таблицы:
Таблица выглядит как и до манипуляций с типом данных параметра, но давайте кликнем правой кнопкой мыши по полю столбца «ПП_Количество»:
Строка «Объединить режим записи» стала активной. Раскроем ее и выберем пункт «Суммировать значения»:
И наша таблица внезапно становится похожей на спецификацию:
Мы имеем общее количество блоков, мы имеем суммарное значение параметра – все это отлично походит для спецификации.
Ну что ж - с одним блоком работает, а будет ли все работать в реальной ситуации, когда у нас несколько блоков с разными именами и разными значениями параметров. Давайте попробуем:
В чертеже мы имеем три разных блока «Круг», «Квадрат» и «Треугольник». Количество блоков со значениями параметров приведено в таблице:
После извлечения мы хотим получить таблицу следующего вида:
Для извлечения выбираем следующие свойства:
Получаем таблицу:
Производим с таблицей следующие преобразования:
- Галочка «Объединить идентичные строки» должна стоять;
- Снимаем галочку с «Показать столбце с данными о количестве»;
- Снимаем галочку с «Показать столбец наименований»;
- В столбце «ПП_Количество» делаем правый клик мышкой, выбираем «Объединить режим записи» - «Суммировать значения»;
- Ставим столбцы в нужном порядке.
И таблица приобретает следующий вид:
После этого переходим к шагу 6 – выбираем способ вывода для данного извлечения:
После выбора способа «Вставка в чертеж таблицы извлеченных данных» будет предложено выбрать стиль таблицы для вставки в чертеж:
После чего мы заканчиваем извлечение данных и переходим к расположению таблицы в требуемом месте чертежа:
Поработав со стилем таблицы и ее оформлением, атрибутами блока можно получить в итоге таблицу, полностью соответствующую форме спецификации по ГОСТ Р 21.101—2020. И что самое замечательное, данные в такой таблице можно будет обновлять в соответствии с изменением данных в чертеже буквально в два клика мышки, нужно только правильно сделать файл извлечения данных.
Заключение
Мы увидели, что даже в «голом» Автокаде можно в большой степени автоматизировать подсчет спецификации оборудования. Приведенное решение требует определенных предварительных действий – нужно правильно организовать хранение данных в блоках, нужно подготовить стиль таблицы и конечно же нужно создать с правильными настройками файл извлечение данных.
Однако и тут есть «ложка дегтя» - при описанном подходе мы не сможем сделать подсчет оборудования и материалов, учитываемых в разных единицах: то есть в одном месте мы берем, например краску в литрах, а в другом мы берем ее же, но уже в банках определенной массы.
Тут либо надо сразу все приводить к одной единице измерений либо подключать Excel. Благодаря такому подключению можно выполнять дополнительные расчеты с извлеченными данными, группировать изделия по категориям. Ведь для этого в современных версиях Excel (начиная с версии 2010) есть такая замечательные надстройки Power Query и Power Pivot, позволяющие автоматизировать преобразование и подсчеты в таблицах.
Используя Excel можно организовать базу данных оборудования, которая работая в связке с блоками, связями данных Автокада позволит еще более упростить работу по составлению спецификаций.
Нужно только пробовать искать новые методы работы и тогда все получится.
Комментарии
Авторизоваться
Это будет работать в LT версии?
должно работать - в ЛТ выпилены возможность запуска сторонних надстроек и поддержка 3Д, а извлечение данных относится к базовым командам.
В принципе - может. Специально для этого в AutoCAD были созданы еще в 1989 г. XData - Extended Data, а чуть позже Xrecord.
Другое дело, что Autodesk до сих пор не дал пользователям для них инструментов... (Можно не считать две слабые команды в Express - XDATA и XDLIST).
Но это вполне и прямо сейчас решаемо.
и блоки желательно с именами говорящими