Автоматизация рутины в КОМПАС-3D: как мы укротили импорт сборок из STEP
Обмен 3D-моделями между разными САПР почти всегда идёт через формат STEP. Геометрию он переносит отлично, а вот про структуру изделия не знает почти ничего.
Поэтому после импорта инженер открывает технически верную, но совершенно сырую сборку. Сотни компонентов со служебными именами вроде Solid1 и Part_42, ни обозначений, ни наименований, ни материалов, плюс дубли и разъехавшиеся разделы спецификации. Разгребать это вручную приходится часами, а на крупных узлах счёт идёт на дни, и к вечеру глаз замыливается так, что ошибки начинаешь делать сам.
Чтобы не заниматься этим руками, мы сделали утилиту, которая разбирает сборку сама.
Что умеет утилита
Утилита берёт сборку из STEP и приводит её к нужной структуре по таблице, которую инженер готовит заранее. Из таблицы она понимает, каким должен быть результат: обозначения, наименования, материалы, разделы спецификации, вложенность дерева.
Дальше она сопоставляет строки задания с реальными файлами, раскладывает детали и сборки по нужным папкам и проставляет свойства. Крепёж и повторяющиеся детали идут по отдельным правилам, иначе спецификация быстро разъезжается. После сохранения утилита заново связывает ссылки внутри сборки на новые файлы и собирает отчёты в двух видах: один для человека, второй для машины.
Сначала покажи, потом делай
Любая запись в реальные файлы необратима, поэтому сначала утилита всегда работает вхолостую, в режиме проверки (dry-run).
Она строит подробный план и показывает его отчётом, не трогая ни одного файла. Исходники в это время открыты только на чтение.
Оператор смотрит план и подтверждает его вручную. Только после этого запускается запись, причём ровно та, что была в плане. Результат пишется в отдельную папку, а от случайного второго запуска по той же папке стоит блокировка.
Как это выглядит на практике
1. Инженер кладёт рядом таблицу структуры и папку с импортом.
2. Запускает проверку. Утилита сканирует файлы, сопоставляет их с заданием и выдаёт план: какие детали уедут в какие папки и с какими обозначениями, какому крепежу проставиться единое обозначение, для какой строки задания файла не нашлось вовсе.
3. Инженер читает отчёт и убеждается, что всё размечено верно.
4. Запускает запись. Утилита сохраняет файлы, проставляет свойства и пересобирает корневую сборку так, чтобы она открывалась без окна «не удалось найти файл».
5. В конце отдельный проход перепроверяет результат и пишет итоговый отчёт.
Немного про устройство
Внутри это конвейер из независимых шагов: разбор таблицы, сканирование папки, связывание строк с файлами по набору правил, сборка плана. К самой сборке план применяется только в самом конце.
Логику разбора, сопоставления и планирования мы держим отдельно от САПР и покрываем тестами. Работа с КОМПАС вынесена в свой слой через COM/API, а самые тяжёлые по нагрузке операции отданы отдельному быстрому модулю.
Ограничения и открытые вопросы
Утилита заточена под согласованный формат таблицы, произвольные Excel она пока не понимает. Для реальной записи нужна Windows с установленным КОМПАС-3D и доступом к COM/API.
Часть операций API ведёт себя по-разному в зависимости от версии КОМПАС. Там, где операция не поддерживается, утилита честно пишет «пропущено» или «сделано частично», а не рисует зелёный статус поверх проблемы. Транзакционного отката после начала записи нет, и это ещё одна причина, по которой предварительный план так важен. Производительность упирается в размер сборки: самые дорогие шаги мы уже ускорили пакетной обработкой, но запас ещё остаётся.
Если проект кажется полезным, расскажите, чего вам не хватает в работе с КОМПАС и какую рутину хотелось бы свалить на программу. Идеи и пожелания пишите в комментариях или на почту: Vanamasorub@gmail.com



