kompas 0.2.0 (из 53ac64e24c4930b29dc2125cf1b488e8b5a1463e)
This commit is contained in:
@@ -34,12 +34,21 @@ variables | errors | components` (`sections` сужает и ответ, и об
|
||||
форма, ориентация, правдоподобность, «куда смотрит грань»): снимок дорог по контексту и менее
|
||||
точен, чем числа.
|
||||
|
||||
**1а. Осмотр НЕ перестраивает документ.** Если модель правили снаружи (человек в GUI, соседний
|
||||
агент) или операция запросила перестроение, `describe_model` покажет числа ДО правки — и ответ
|
||||
будет выглядеть безупречным: размеры новые, положения старые, сопряжения валидны. Такой ответ сам
|
||||
скажет «Документ ТРЕБУЕТ ПЕРЕСТРОЕНИЯ» (`needsRebuild: true`); увидел — `rebuild` и повтори осмотр,
|
||||
выводов по непересчитанной модели не делай.
|
||||
|
||||
**2. Ответ мутирующей операции — это ТРИ проверки, читай все.** Любая операция может «пройти»
|
||||
(`Create()==true`), оставив деталь в ошибке, поэтому каждая мутирующая операция сама дописывает
|
||||
к ответу итог проверки построения и сводку состояния «Тел: N, объём V мм³»:
|
||||
|
||||
- **«⚠ N операц. в ошибке»** (напр. `et3dError54`) — деталь невалидна: не продолжай и не
|
||||
экспортируй, исправь или переделай другим методом. «Построение чистое» = порядок.
|
||||
Строки с «ℹ» — не отказы: «требуется перестроение» лечится `rebuild`, а «не определено
|
||||
положение (N)» означает, что компоненту не хватает сопряжений или фиксации. Бросать из-за них
|
||||
исправную сборку не нужно; в обеих названы имя и индекс компонента.
|
||||
- **«Тел: 2»** там, где ждёшь одно тело, — деталь распалась: касание объединением не считается
|
||||
(см. «Надписи»). Смотри на число ТЕЛ, а не граней: объединение сливает компланарные грани,
|
||||
и счётчик граней законно остаётся прежним.
|
||||
@@ -89,7 +98,12 @@ variables | errors | components` (`sections` сужает и ответ, и об
|
||||
- *Обмен:* `import_model` (3D: step, iges, sat, xt, stl, c3d, jt, obj + родные форматы чужих САПР),
|
||||
`import_drawing` (плоский .dxf/.dwg), `export_model` (`format=auto` по расширению: `.step` —
|
||||
точная геометрия в другую САПР, `.stl` — сетка в слайсер).
|
||||
- *Сборка:* `assembly_add_component` (положение + поворот `rx/ry/rz`), `assembly_add_mate`
|
||||
- *Исполнения:* `embodiment` (`set|add|delete|rename`; `kind=embodiment|mirror|variant`) — несколько
|
||||
геометрий одной модели в одном файле; список с габаритом и массой каждого —
|
||||
`describe_model(sections=embodiments)`.
|
||||
- *Сборка:* `assembly_add_component` (положение + поворот `rx/ry/rz`, `embodiment` — какое исполнение
|
||||
источника вставлять), `assembly_add_mate` (стороной может быть грань ИЛИ вспомогательный объект
|
||||
`object1/object2`: плоскости и оси СК компонента, а без `componentIndex` — самой сборки)
|
||||
(семь типов, `orientation`), `assembly_fix_component`, `assembly_delete`,
|
||||
`assembly_check_interference` (не налезли ли детали друг на друга — больше это не видно нигде),
|
||||
`assembly_transform_point` (`to=world|local` — точка между ЛСК компонента и СК сборки).
|
||||
@@ -207,7 +221,8 @@ variables | errors | components` (`sections` сужает и ответ, и об
|
||||
кроме помеченного `(ТЗ)`.
|
||||
- **После связывания правка паспорта перестраивает деталь** (проверено: `set_variable(badge_T=4)` →
|
||||
габарит по Z 3.00 → 4.00, объём 5154.5 → 5861.5 мм³). Это и есть параметрическая модель,
|
||||
а не комментарий к ней.
|
||||
а не комментарий к ней. **До связывания — не перестраивает**, и `set_variable` говорит об этом
|
||||
прямо: «⚠ НИЧЕГО НЕ ВЕДЁТ». Такой ответ — не успех: число поменялось, деталь нет.
|
||||
- **Сверка и уборка в конце:** `describe_model(sections=variables)` помечает «⚠ ничего не ведёт» — это либо забытая
|
||||
связь, либо мусор; разбери оба. `delete_variable(unused=true)` — только ПОСЛЕ `link_parameter`
|
||||
на всё, что должно вести геометрию: вычистка не отличает мусор от несвязанного размера из ТЗ.
|
||||
@@ -496,6 +511,38 @@ variables | errors | components` (`sections` сужает и ответ, и об
|
||||
5. **Перед выдачей:** последняя операция «Построение чистое» → `export_model` (STEP для обмена,
|
||||
STL для печати).
|
||||
|
||||
## Исполнения: одна модель — несколько геометрий
|
||||
|
||||
Типоразмеры (профиль на 100, 200, 500 мм), правое и левое зеркало, версии с отверстием и без часто
|
||||
живут **в одном файле** исполнениями. Тогда всё, что ты меришь и экспортируешь, относится к
|
||||
**текущему** исполнению — не к «детали вообще».
|
||||
|
||||
- **Признак замечаешь не ты, а ответ.** У модели с несколькими исполнениями `describe_model` сам
|
||||
пишет, сколько их и какое сейчас текущее. Увидел эту строку — прежде чем считать массу или резать
|
||||
чертёж, посмотри `describe_model(sections=embodiments)`: там габарит и масса **каждого**, и это
|
||||
чтение ничего не переключает.
|
||||
- **Переключение равно смене документа.** `embodiment(action="set", target="L200")` обнуляет
|
||||
сессию построения: хендлы `sk_…`/`op_…` после него мертвы. Сохраняй документ до переключения.
|
||||
- **Индекс живёт до первой правки дерева**: после `delete` индексы смещаются. Адресуй обозначением
|
||||
(«L500»), а индексом — только сразу после того, как увидел список.
|
||||
- **Строишь новое исполнение** — `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")`.
|
||||
|
||||
## Эвристики и подводные камни
|
||||
|
||||
- **Правила 1 и 2 действуют всегда:** осмотр структурный; «⚠ N операц. в ошибке» — в STEP/печать
|
||||
|
||||
Reference in New Issue
Block a user