Skip to content

RU docs assembly fit

rkfsociety edited this page Oct 21, 2026 · 1 revision

Проверка зазоров и пересечений в сборке с привязкой к ревизии

Доступны только для чтения маршрут POST /api/v1/agent/projects/{id}/validations/assembly-fit и инструмент MCP cadyx_validate_assembly_fit. Они измеряют минимальное расстояние между OCCT-телами и общий объём их булева пересечения для размещённых конечных экземпляров, в том числе во вложенных подсборках. Результат привязан к точной сохранённой ревизии документа и SHA-256 исходной геометрии, графа сборки, выбранных пар экземпляров и входных положений. Его можно сохранить как неизменяемую запись валидации без изменения ревизии модели. Этот маршрут отличается от общего этапа assembly команды check_project, который пока имеет статус untested; см. проверку проекта.

Запрос

{
  "expected_revision": 7,
  "minimum_clearance": 0.5,
  "tolerance": 0.01,
  "instance_pairs": [["instance:first", "instance:second"]],
  "pose_samples": [
    {"joint_values": [{"mate_id": "mate:slider", "offset_mm": 4.0}]},
    {"joint_values": [{"mate_id": "mate:slider", "offset_mm": 8.0}]}
  ],
  "persist": false
}
  • instance_pairs необязателен. Идентификаторы — это развёрнутые конечные id из сцены сборки, например instance:root/instance:child, а не только ID детали или тела. Если поле пропущено, проверяются все пары в сборках максимум с восемью конечными экземплярами. Разрешено до 32 различных пар. Пара должна содержать разные пути конечных экземпляров; экземпляры могут ссылаться на одну исходную деталь. B-rep источника не объединяются.
  • pose_samples необязателен (0–16). Сохранённое положение всегда образует образец 0. Каждый дополнительный образец переопределяет координаты 1–16 существующих сопряжений и повторно вычисляет детерминированные жёсткие размещения в копии графа сборки. Одно сопряжение можно переопределить один раз в образце; остальные сохраняют записанные значения. Существующий валидатор сопряжений отклоняет недопустимые значения; несовместимое положение замкнутого контура вернёт untested с пояснением. Одновременное нелинейное решение замкнутых контуров не поддерживается.
  • Всего допускается не более 128 измерений пар и положений. При выборе разрешено до 256 развёрнутых конечных экземпляров. minimum_clearance и tolerance обязательны, должны быть конечными неотрицательными числами в мм. Размещения сборки заданы в мм; объём пересечения выводится в мм³.
  • persist по умолчанию равен false. При сохранении отчёт записывается в существующую боковую SQLite-базу валидаций.

Интерпретация результата

Для каждого образца указываются его индекс, запрошенные значения сопряжений, рассчитанные размещения конечных экземпляров, статус и измерения выбранных пар. Для измеримой пары возвращаются пути обоих экземпляров и ID исходных тел, расстояние с интервалом, рассчитанным по допуску геометрии, объём пересечения, флаг внутреннего решения OCCT, классификация (interfering, touching_or_indeterminate, separate) и две ближайшие точки-свидетеля в глобальных XYZ.

Точный ненулевой булев объём пересечения OCCT либо подтверждённое внутреннее решение дают fail. Проверка также не пройдена, если верхняя граница расстояния меньше max(0, minimum_clearance - tolerance). Результат pass возможен, когда тела раздельны и нижняя граница удовлетворяет этому порогу. Контакт около предела отклонения и численно неопределённые случаи получают untested. Некорректная или отсутствующая B-rep приводит к явной ошибке; тела только из треугольной сетки и нерешаемые выборочные кинематические положения дают untested.

Общий статус равен fail, если хотя бы одно проверенное положение не прошло; иначе untested, если есть неопределённые измерения; иначе pass. Всегда указываются coverage: "discrete_poses_only" и continuous_motion_certified: false. Статус pass не подтверждает зазор на непрерывной траектории между образцами, прочность, допуски изготовленных деталей или соответствие в непроверенном положении. Вызывающая сторона должна выбрать и обосновать достаточный набор положений.

Реализация: cadyx/assembly_fit.py, cadyx/kernel.py, cadyx/core_services.py. HTTP/MCP-контракт формируется на основе cadyx/api_contracts.py.

Clone this wiki locally