Repository navigation
RU codex docs document model 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.