Skip to content

RU docs assembly mass

rkfsociety edited this page Oct 21, 2026 · 1 revision

Масса и инерция сборки с привязкой к ревизии

Схема документа

В документе v11 в граф сборки v2 → v3 добавлено поле материала; текущая версия документа — v12, она продолжает использовать граф v3. У каждого определения детали есть поле material: null (значение после миграции, материал не задан) либо объект строго такой формы:

{"name":"Указанный сплав","density_kg_m3":2700,"source":"Спецификация материала поставщика"}

Поля name и source обязательны, содержат непустую строку длиной не более 256 символов. Плотность — конечное положительное число не больше 1e9 кг/м³. Это явно заданная номинальная плотность, не поиск по каталогу, значение по умолчанию, измеренное свойство или сертификат материала. При чтении изолированной записи v10 автоматически используется material: null; одно лишь чтение не переписывает файл. Миграция v10→v11 сохраняет ID деталей, экземпляров, сопряжений и тел.

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

{"type":"set_assembly_part_material","part_id":"part:...","material":{"name":"Указанный сплав","density_kg_m3":2700,"source":"Спецификация поставщика"}}

Чтобы удалить материал, передайте null. Материал назначается исходной детали, поэтому все экземпляры этой детали используют его. Браузер остаётся интерфейсом наблюдения; команды показываются через обычный поток активности Core.

Контракт вычислений только для чтения

Маршрут Agent API:

POST /api/v1/agent/projects/{id}/validations/mass-properties

Передайте точную сохранённую ревизию документа: {"expected_revision":<revision>,"persist":false}. Соответствующий инструмент MCP — cadyx_measure_assembly_mass_properties. Блокировка на запись не нужна. При persist:true отчёт сохраняется в существующей боковой базе валидаций проекта, не меняя ревизию документа.

Ответ содержит:

  • status: "pass", ревизию и SHA-256 графа сборки, материалов и описаний ссылочных тел, а также метод и явно указанные единицы;
  • parts[]: уникальные ID исходных деталей, ID исходных тел, материал и его происхождение, точный объём в мм³, массу в кг, локальный центр масс в мм и симметричную матрицу тензора относительно центра масс в кг·мм²;
  • instances[]: развёрнутый путь конечного экземпляра во вложенной сборке, ID источника, глобальный перенос и кватернион, глобальный центр масс и повёрнутый тензор инерции относительно его центра масс;
  • assembly: сумму масс размещённых экземпляров, взвешенный массой глобальный центр масс, центральный тензор инерции по теореме Штейнера и число конечных экземпляров.

Достоверной производственной геометрией здесь считаются только корректные замкнутые OCCT B-rep из одного тела. Существующая нативная cadyx_brep_metrics вычисляет интеграл BRepGProp::VolumeProperties один раз на каждую уникальную исходную деталь при единичной плотности и теперь возвращает центроид и полную матрицу инерции наряду с прежним полем volume. Перед использованием мост необходимо собрать заново в Windows.

Если плотность (\rho) задана в кг/м³, а геометрический объём (V) — в мм³, то (m=\rho V 10^{-9}) кг. Тот же множитель переводит нативный интеграл инерции из мм⁵ в кг·мм². Размещения выражены в явно заданных миллиметрах сборки; кватернионы поворачивают тензоры, а не копии тел.

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

Фикстуры tests/test_assembly_mass.py проверяют моменты инерции параллелепипеда, сдвиг центроида, вращение, повторные экземпляры, неизвестную плотность, недопустимые входы, миграцию и устаревшую ревизию с помощью аналитической фикстуры без нативного ядра. Они включены в исходный код; локально здесь не запускались. Авторитетная проверка OCCT/Windows выполняется в CI.

Clone this wiki locally