Skip to content

RU codex docs document model v8

rkfsociety edited this page Oct 21, 2026 · 1 revision

Модель документа v8 — параметры, выражения и перестроение элементов

Версионный контракт v8, не текущая схема. Здесь описано поведение, введённое в Document v8. Текущие документы сохраняются в формате v12, оболочка проекта остаётся v1. До трактовки исторических ограничений как текущих прочтите актуальную карту документации и контракты последующих версий. Примеры команд и схемы ниже сохранены для миграций и поддержки совместимости.

Документ v8 расширяет граф объектов v7 верхнеуровневыми именованными параметрами и привязками-выражениями. При миграции документа v7 коллекции model_parameters и parameter_bindings создаются пустыми; идентичность проекта, объекты, история и ревизия сохраняются.

Именованные параметры и выражения

model_parameters сопоставляет имена идентификаторов конечным числовым объектам {value, unit}. Поддерживаемые единицы метаданных: mm, deg и unitless; выражения вычисляют хранимые численные значения. Привязка — запись {object_id, path, expression} на числовой параметр элемента, смещение эскиза или поддерживаемое числовое свойство элемента эскиза. У одного целевого поля может быть только одна привязка.

Выражения принимают имена параметров, числовые константы, скобки, унарные знаки, операции +, -, *, / и функцию min() с 2–8 числовыми аргументами. Вычисления ограничены по ресурсам. Отклоняются неизвестные имена, любые вызовы кроме min, обращения к атрибутам, нечисловые конечные значения и деление на ноль.

create_model_parameters и bind_model_parameters сначала проверяют весь пакет изменений и только затем фиксируют его. set_model_parameter вычисляет все зависимые выражения, перестраивает затронутые редактируемые эскизы и цепочки элементов в подготовленном документе, проверяет результат и фиксирует его атомарно. Ошибка выражения, операции ядра, валидации документа или сохранения оставляет предыдущий документ без изменений. Инспектор Geometry показывает именованные значения и отправляет изменения через командный путь Agent API.

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

Перестроение рёбер, выбранных по топологии

Ключи edge_keys в топологии — отпечатки текущей геометрии, не постоянные имена рёбер. Элемент обработки ребра дополнительно хранит компактные геометрические ссылки. При перестроении вышестоящего элемента CADYX находит по ним актуальное ребро и сохраняет обновлённые edge_indices вместе с новой B-rep. Сначала используются точные совпадения семантических ключей. Геометрический поиск учитывает тип кривой, ориентацию, длину и близость; если нельзя выбрать единственное ребро, перестроение завершается ошибкой. Перед созданием нового элемента ребра снова осмотрите топологию.

fillet_edges принимает несколько уникальных индексов рёбер одного исходного тела и один радиус. Предпочтительно выполнить всё одним элементом, если у выбранных рёбер один эффективный радиус, все доступны на том же теле до скругления, а общая операция ядра проходит. Оставляйте раздельные элементы, если отличаются геометрия или выражения радиуса либо общая операция недопустима.

merge_consecutive_fillet_features атомарно заменяет линейную последовательность из двух и более элементов fillet одним скруглением на общем исходном теле в начале цепочки. Числовой радиус должен быть один; привязки — если они есть — должны использовать одно выражение. Все сохранённые ссылки на рёбра обязаны однозначно разрешаться на исходном теле. Ветвящиеся зависимости от промежуточных тел отклоняются. Зависимые от финального скругления элементы перепривязываются и перестраиваются в подготовленном документе. Если объединённое скругление или перестроение потомков не проходит, сохранённый документ не меняется.

insert_fillet_before_feature атомарно вставляет скругление у основания бобышки перед расположенным ниже карманом по эскизу, перепривязывает зависимые элементы, меняет порядок цепочки и перестраивает её потомков. Сначала выбирается вся аналитическая базовая окружность бобышки, пока её не пересёк карман. Это общая операция над редактируемой цепочкой элементов, не импорт геометрии.

Реестр валидации сохраняемых элементов

Канонический реестр видов объектов и специфичных для операции валидаторов элементов находится в cadyx/persisted_schemas.py. Добавляйте туда новую операцию элемента вместе с её эмиттером Command System. Регистрацию буквальных записей элементов проверяет tests/test_persisted_schemas.py.

Исторически существовавшие операции без дополнительных ограничений полей и неизвестные расширения сохраняют прежнее разрешительное поведение; регистрация не удостоверяет геометрию. Document.validate проверяет уникальность типизированных ID, взаимные связи тела/элементов и привязки параметров. Зарегистрированные валидаторы разрешают исходные ссылки через общий индекс объектов. Поля эскизов и ограничения по-прежнему обрабатывает пакетный валидатор validate_sketches. Проверки геометрического ядра выполняются отдельно.

Ограничения эскизов решаются ограниченным решателем, описанным в семантике ограничений Document Model v7. Ограничение fixed сохраняет зафиксированное положение точки; координаты, привязанные к именованным параметрам, являются фиксированными входами решателя. Эта функция не вводит новую версию документа или миграцию; прежние проверенные ограничения остаются корректными и решаются при редактировании.

Историческая версия документа остаётся v8. Перед валидацией последовательно выполняются миграции-копирования, включая поддерживаемые преобразования v1–v7 в v8.

Clone this wiki locally