VetCAD

Получение спецификации оборудования в "голом" Автокаде

   3 оценки

размещено: 09 Января 2022
обновлено: 09 Января 2022

Общие сведения о процедуре формирования спецификации

Получение спецификации оборудования, изделий и материалов (далее, для простоты – спецификации) является конечным итогом разработки рабочей документации. Но помимо этого это один из самых трудоемких и скучных этапов работы проектировщика.

Несмотря на большое разнообразие программных решений, механизм формирования спецификации в системе автоматизированного проектирования, в целом, состоит из 4-х этапов:

  1. Выбор необходимых графических объектов.
  2. Извлечение из этих объектов требуемых неграфических данных.
  3. Анализ и/или преобразование (при необходимости) неграфических данных.
  4. Формирование таблицы в нужном формате.

В общем виде после этапа 4 должна быть получена таблица следующего вида (порядок следования столбцов в данном случае не имеет значения):

ПОЛЕ_1 – ПОЛЕ_2 - обязательные столбцы спецификации. Содержат в себе наименования изделий, единицы измерения;

ПОЛЕ_3 – обязательный столбец спецификации. Содержит в себе суммарные значения количества изделий соответствующего наименования;

ПОЛЕ_4…ПОЛЕ_N – поля с дополнительной информацией по оборудованию (это может быть производитель оборудования, ГОСТ, вес единицы оборудования и т.п.).

К сожалению, в «голом» Автокаде (то есть без каких-либо надстроек, макросов, lisp-процедур) нет специального функционала для формирования спецификации, но тем не менее и в нем можно в некоторой степени автоматизировать процесс формирования спецификации.

Формирование спецификации в Автокаде

Реализовать механизм получения спецификации в «голом» Автокаде возможно с помощью команды «Извлечение данных…» меню «Сервис:

Также эту команду можно вызвать, если в русской версии Автокада набрать в командной строке «ДАННЫЕИЗВЛ» («_DATAEXTRACTION» в английской версии).

Но прежде, давайте поймем - что такое извлечение данных в Автокаде?

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

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

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

Какие данные можно извлечь из объектов чертежа?

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

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

Но ведь в спецификации нам нужно иметь какие-то особенные данные (например артикул или название завода-изготовителя, массу изделия)? Каким образом можно «прицепить» эти данные к графическим объектам? Выход только один – нужно использовать блоки.

Возможность внедрения дополнительных (неграфических) данных - основное преимущество блоков перед графическими примитивами. Хранилищами таких данных в блоках могут выступать:

  1. атрибуты;
  2. пользовательские параметры;
  3. параметры операций;
  4. зависимости по параметру (размерные зависимости);
  5. кроме того, хранилищем дополнительной информации (при некоторых ограничениях использования) можно считать и имя блока.

На рисунке приведена палитра свойств блока, содержащего в себе все указанные выше источники дополнительных данных:

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

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

Поэтому дальнейшее рассмотрение извлечения данных для составления спецификации будем производить в разрезе использования в нем блоков с параметрами и атрибутами.

Извлечение данных из блоков

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

Процедура извлечения данных в Автокаде состоит из 8 шагов:

  1. Определение файла для хранения настроек извлечения данных
  2. Определение источника данных (файлов и объектов чертежа)
  3. Выбор конкретных объектов-источников данных
  4. Выбор свойств объектов
  5. Уточнение данных (компоновка таблицы)
  6. Выбор типа вывода
  7. Определение стиля таблицы для вставки в чертеж
  8. Окончание процедуры извлечения данных

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

Значения атрибута различаются для каждого вхождения блока «Круг»:

Значение атрибута "атр_Количество" 5 6 8
Количество вхождений блока 2 2 1
Суммарное значение параметра 30

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

Переходим непосредственно к извлечению данных. Сразу переходим к шагу 3 – выбор конкретных объектов-источников данных – выбираем блоки «Круг»:

 На шаге 4 выбираем нужные свойства для извлечения:

Наконец мы добрались до компоновки таблицы с извлеченными данными:

Но итог нас не устраивает – нам нужно суммарное значение в столбце «атр_Количество», нам нужна таблица вида:

Количество имя атр_КОЛИЧЕСТВО
5 Круг 30

В справке к Автокаду читаем:

Мы сейчас как раз на странице «Исправление данных» (хотя в «Извлечении данных» она называется «Уточнение данных») - попробуем сделать все по инструкции. Галочка стоит около опции «Объединить идентичные строки», делаем правый клик мышкой по полю в столбце «атр_Количество:

Но почему-то мы не можем объединить режим записи – нужное строка в выпадающем списке не активна! В чем причина, что мы сделали не так – все ведь делали как в инструкции? Попробуйте изменить формат данных столбца «атр_КОЛИЧЕСТВО»:

Сразу увидим, что тип данных тут «Текст»:

И смена типа данных на «Десятичное число», с форматом «Десятичные» и точностью до 4-х знаков после запятой

никак не влияет на содержимое столбца:

Все дело в том, что Автокад, как любая компьютерная программа может производить математические операции только с числами. И в данном случае в столбце «атр_Количество» он видит только графические символы, которые выглядят как цифры 5, 6 и 8. Приведу пример. Найдите сумму:

V + V = ?

Вы понимаете, что V это римская цифра 5 и, следовательно, получаем 5 плюс 5 равно 10. Но пример-то мы записывали с помощью английских букв «V»! Так и с Автокадом – то, что мы видим цифрами, на самом деле ими не является и поэтому Автокад не может ни сложить их, ни поделить – он воспринимает их как текст.

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

  1. атрибуты;
  2. пользовательские параметры;
  3. параметры операций;
  4. зависимости по параметру (размерные зависимости).

Отличие этих хранилищ (помимо разницы во взаимодействии с пользователем и воздействии на блок) в тех данных, которые они хранят – точнее в типе данных, хранимых в них.

Создадим блок «Квадрат» в котором у нас будут все указанные выше хранилища данных:

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

Обратите внимание на столбец «Тип» - это тип данных, хранимых в конкретном параметре или атрибуте. Причем только у пользовательских параметров есть возможность изменить тип данных:

Все становится еще запутаннее. На самом деле нет! Главное запомнить – атрибуты хранят в себе только текстовые значения и все что вы в них запишете Автокад преобразует тип данных «Строка». А как мы уже выяснили ранее – с такими значениями с помощью извлечения данных спецификацию не сделаешь.

Оставим тип данных пользовательского параметра «ПП_Количество» равным значению «Вещественное» - то есть любое число (целое, дробное, отрицательное или положительное). И давайте попробуем извлечь данные из блоков «Квадрат». Создадим следующую ситуацию:

В этих вхождениях блока «Квадрат» пользовательские параметры «ПП_Количество» имеют следующие значения:

Значение пользовательского параметра «ПП_Количество» 5.5 6.5 7.5
Количество вхождений блока 3 2 4
Суммарное значение 59.5

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

Вызываем процедуру извлечения данных для блоков «Квадрат» и доходим до шага 4 – выбор свойств блока для извлечения – указываем уже свойство «ПП_Количество» из категории «Динамический блок»:

И после него получаем таблицу с извлеченными данными из блоков «Квадрат»:

Опять перед нами похожая таблица как у блока «Круг»: давайте сделаем правый клик мышкой по полю в столбце «ПП_Количество».

И опять неудача – все ровно также, как и в случае с блоком «Круг» и применением атрибутов! Но тут уже нет нашей вины, это, по всей видимости недоработка создателей Автокада – в случае если тип данных «Вещественное» извлечение данных все равно работает не так как нам нужно.

Тут есть два пути решения проблемы:

  1. Изменить тип данных пользовательского параметра.
  2. Использовать параметры операций или зависимости по параметру (размерные зависимости)

Минусы обоих этих путей – значение параметра становится зависимым от масштаба вхождения блока. При изменении масштаба значения параметров меняются следующим образом:

Тип данных

Коэффициент преобразования

по масштабу 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 можно организовать базу данных оборудования, которая работая в связке с блоками, связями данных Автокада позволит еще более упростить работу по составлению спецификаций.

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

 

 

 

 

 

 

 

 

Комментарии

Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Комментарии 1-4 из 4
Сергей812 , 05 марта 2022 в 18:41
#4
Цитата:
Сообщение #3 от ltnchik1405
Это будет работать в LT версии?

должно работать - в ЛТ выпилены возможность запуска сторонних надстроек и поддержка 3Д, а извлечение данных относится к базовым командам.
ltnchik1405 , 04 марта 2022 в 11:43
#3
Это будет работать в LT версии?
АлексЮстасу , 01 февраля 2022 в 04:59
#2
"Самый большой минус это то, что графические примитивы (отрезки, окружности, полилинии, штриховки и т.п.) содержат в себе только те свойства, которые в них заложили создатели Автокада и внедрить дополнительные данные в них простой пользователь не может."

В принципе - может. Специально для этого в AutoCAD были созданы еще в 1989 г. XData - Extended Data, а чуть позже Xrecord.
Другое дело, что Autodesk до сих пор не дал пользователям для них инструментов... (Можно не считать две слабые команды в Express - XDATA и XDLIST).
Но это вполне и прямо сейчас решаемо.
HORSY , 15 января 2022 в 13:32
#1
bcount

и блоки желательно с именами говорящими