# Исполнения: одна модель — несколько геометрий Дополнение к SKILL.md. Типоразмеры (профиль на 100, 200, 500 мм), правое и левое зеркало, версии с отверстием и без часто живут **в одном файле** исполнениями. Тогда всё, что ты меришь и экспортируешь, относится к **текущему** исполнению — не к «детали вообще». - **Признак замечаешь не ты, а ответ.** У модели с несколькими исполнениями `describe_model` сам пишет, сколько их и какое сейчас текущее. Увидел эту строку — прежде чем считать массу или резать чертёж, посмотри `describe_model(sections=embodiments)`: там габарит и масса **каждого**, и это чтение ничего не переключает. - **Переключение равно смене документа.** `embodiment(action="set", target="L200")` обнуляет сессию построения: хендлы `sk_…`/`op_…` после него мертвы. Сохраняй документ до переключения. - **Индекс живёт до первой правки дерева**: после `delete` индексы смещаются. Адресуй обозначением («L500»), а индексом — только сразу после того, как увидел список. У **варианта** обозначение родительское, и адресовать его номером нельзя вовсе — под «-01» подходят двое; зови его по имени («M5-01») или индексом. - **Исполнения делай ПОСЛЕДНИМ шагом.** Переключение убивает хендлы, и дальнейшая правка дерева идёт уже через `feature_delete(featureIndex=…)` по `describe_model(sections=tree)` — путь рабочий, но менее удобный. Сначала доведи базовую геометрию и параметризацию, потом размножай. - **Строишь новое исполнение** — `embodiment(action="add", number="02")`; оно сразу становится текущим, строй в нём немедленно. `depended=false` нужен, когда правки НЕ должны наследоваться от родителя, — иначе изменение уедет и в него. - **В сборку исполнение выбирается явно**: `assembly_add_component(embodiment="L500")`. Без параметра встанет **базовое** исполнение, а не то, что сохранено в файле текущим. Обозначение нужно ПОЛНОЕ («ПРОБА.001-01», а не «-01»); сервер откажет, если КОМПАС подсунет базовое. - **«Удлинить эти профили с 500 до 600» — это смена исполнения экземпляра, а не новая вставка**: `embodiment(action="set", target="L600", component=N)` и затем `rebuild`. Сопряжения при этом **сохраняются** — пересоздание вставки, наоборот, порвало бы их все. Какие исполнения есть у конкретного экземпляра, показывает `describe_model(sections="embodiments", component=N)`. - **Выгнать всю линейку на печать** — `export_model(embodiment="all")`: каждое исполнение в свой файл с суффиксом обозначения. - **После смены исполнения в собранном узле проверь сопряжения** (`sections="mates"`): если у нового исполнения нет объекта, на который опиралась связь, она рвётся — «ССЫЛКА ПОТЕРЯНА», `valid: false`, компонент недоопределён. Что было потеряно, хранит имя сопряжения; `assembly_delete` сотрёт и его. Подробности и границы — `help(topic="embodiments")`.