Автоматизация рутины в КОМПАС-3D: как мы укротили импорт сборок из STEP

Обмен 3D-моделями между разными САПР почти всегда идёт через формат STEP. Геометрию он переносит отлично, а вот про структуру изделия не знает почти ничего.

Поэтому после импорта инженер открывает технически верную, но совершенно сырую сборку. Сотни компонентов со служебными именами вроде Solid1 и Part_42, ни обозначений, ни наименований, ни материалов, плюс дубли и разъехавшиеся разделы спецификации. Разгребать это вручную приходится часами, а на крупных узлах счёт идёт на дни, и к вечеру глаз замыливается так, что ошибки начинаешь делать сам.

Чтобы не заниматься этим руками, мы сделали утилиту, которая разбирает сборку сама.

Что умеет утилита

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

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

Сначала покажи, потом делай

Любая запись в реальные файлы необратима, поэтому сначала утилита всегда работает вхолостую, в режиме проверки (dry-run). Она строит подробный план и показывает его отчётом, не трогая ни одного файла. Исходники в это время открыты только на чтение.

Автоматизация рутины в КОМПАС-3D: как мы укротили импорт сборок из STEP

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

Как это выглядит на практике

Автоматизация рутины в КОМПАС-3D: как мы укротили импорт сборок из STEP

1. Инженер кладёт рядом таблицу структуры и папку с импортом.

2. Запускает проверку. Утилита сканирует файлы, сопоставляет их с заданием и выдаёт план: какие детали уедут в какие папки и с какими обозначениями, какому крепежу проставиться единое обозначение, для какой строки задания файла не нашлось вовсе.

3. Инженер читает отчёт и убеждается, что всё размечено верно.

Автоматизация рутины в КОМПАС-3D: как мы укротили импорт сборок из STEP

4. Запускает запись. Утилита сохраняет файлы, проставляет свойства и пересобирает корневую сборку так, чтобы она открывалась без окна «не удалось найти файл».

5. В конце отдельный проход перепроверяет результат и пишет итоговый отчёт.

Немного про устройство

Автоматизация рутины в КОМПАС-3D: как мы укротили импорт сборок из STEP

Внутри это конвейер из независимых шагов: разбор таблицы, сканирование папки, связывание строк с файлами по набору правил, сборка плана. К самой сборке план применяется только в самом конце.

Логику разбора, сопоставления и планирования мы держим отдельно от САПР и покрываем тестами. Работа с КОМПАС вынесена в свой слой через COM/API, а самые тяжёлые по нагрузке операции отданы отдельному быстрому модулю.

Ограничения и открытые вопросы

Утилита заточена под согласованный формат таблицы, произвольные Excel она пока не понимает. Для реальной записи нужна Windows с установленным КОМПАС-3D и доступом к COM/API.

Часть операций API ведёт себя по-разному в зависимости от версии КОМПАС. Там, где операция не поддерживается, утилита честно пишет «пропущено» или «сделано частично», а не рисует зелёный статус поверх проблемы. Транзакционного отката после начала записи нет, и это ещё одна причина, по которой предварительный план так важен. Производительность упирается в размер сборки: самые дорогие шаги мы уже ускорили пакетной обработкой, но запас ещё остаётся.

Если проект кажется полезным, расскажите, чего вам не хватает в работе с КОМПАС и какую рутину хотелось бы свалить на программу. Идеи и пожелания пишите в комментариях или на почту: Vanamasorub@gmail.com

22