Repository navigation
RU docs assembly fit
Доступны только для чтения маршрут 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.