Files

4.5 KiB

Исполнения: одна модель — несколько геометрий

Дополнение к 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").