kompas 0.3.0 (из fcedb44f5661313ffd0570e3808a5309f6ae8cb7)
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Работа с импортом / сборками
|
||||
|
||||
Дополнение к SKILL.md — конвейер разбора ЧУЖОЙ модели/сборки: «импорт → разбор → извлечение детали →
|
||||
осмотр → модификация → экспорт». Сборка С НУЛЯ — `reference/assembly-playbook.md`.
|
||||
|
||||
1. **`import_model`** — `type` задаёт документ: `assembly` (по умолчанию) или `part`.
|
||||
Формат берётся из расширения; `.prt` и `.asm` носят несколько САПР сразу — там задавай `format`
|
||||
явно. Нужна отдельная деталь файлом — включай `createComponentFiles` (по умолчанию `false`).
|
||||
**Выключенный переключатель чистого диска НЕ гарантирует:** конвертер пишет файлы рядом с
|
||||
ИСХОДНИКОМ и помимо него — замерено, четыре импорта положили четыре незапрошенных `.m3d`.
|
||||
Что реально изменилось в каталоге исходника, ответ перечисляет поимённо; не хочешь засорять
|
||||
чужой каталог — копируй файл во временный (`help(topic="model-exchange")`).
|
||||
**STL/OBJ приходят СЕТКОЙ:** «тел 0, объём 0.0 мм³» после такого импорта — норма, а не провал,
|
||||
проверяй габаритом; ответ говорит это вслух и называет число треугольников из самого файла.
|
||||
Плоский чертёж (.dxf/.dwg) читает не он, а `import_drawing`.
|
||||
2. **Разбор:** `describe_model(sections=components)` (у каждого компонента — origin, поворот,
|
||||
фиксация) и `describe_model(sections=mates)`, если сборка пришла со связями; грани компонента —
|
||||
`list_faces(component=N)`. Извлечённую деталь открывай самостоятельным документом.
|
||||
Гашение видимости компонента на снимок **не влияет** — изоляция так не делается.
|
||||
3. **Осмотр — структурно** (`describe_model`: какая ось «высота», МЦХ, топология). Снимок
|
||||
`model_snapshot(view=…)` — ракурс выбирай по плоскости детали (плоскую смотри сверху или
|
||||
спереди, не в изометрии); один и тот же `view` даёт воспроизводимый кадр «до/после».
|
||||
**Пары ракурсов противоположны по оси:** `front` смотрит из +Z, `rear` — из −Z, так же
|
||||
`top`/`bottom` и `left`/`right`. Следствие, которое нужно чаще всего: деталь, лежащая на столе
|
||||
гранью Z=0 (эскиз на XOY, выдавливание вперёд), видна столу как **`rear`**, а `front` покажет
|
||||
зеркальную картинку. Читаемость надписи или логотипа доказывают снимком с нужной стороны, а не
|
||||
рассуждением.
|
||||
**Но «ортогонально» — правило про ПЛОСКУЮ деталь.** Как только форма выходит из одной плоскости
|
||||
(кронштейн, косынка, изогнутый профиль), ортогональный кадр перестаёт читаться: он плоский,
|
||||
подписей осей на нём нет, и сопоставить увиденное с координатами не выходит — `right` даёт
|
||||
картинку, по которой не сказать, где перёд. Профиль такой детали смотри `view="iso"`: там видно,
|
||||
что куда загнуто.
|
||||
4. **Модификация «тупой» B-rep** (итог — в ответе каждой операции). Инструмент выбирается по тому,
|
||||
ЧТО задано в требовании, а не по тому, что привычнее:
|
||||
|
||||
| Требование звучит как | Инструмент | Почему не `move_face` |
|
||||
|---|---|---|
|
||||
| «сдвинуть грань на N мм» | `move_face` | это он и есть |
|
||||
| «диаметр отверстия (бобышки) должен стать D» | **`resize_face`** | задаётся ДИАМЕТР, ось не двигается; `move_face` сдвинул бы стенку на (D−d)/2, и это пришлось бы считать самому |
|
||||
| «грань должна встать НА объект: на плоскость, на грань соседнего тела» | **`replace_face`** | расстояние считает КОМПАС; `move_face` требует вычислить его заранее |
|
||||
| вставка N мм в призматическую ножку | `split_solid_by_plane` → `move_body` → `move_face` (мост) → `boolean_union` | цепочка проверена end-to-end: проставка 39.45 → 41.45 мм |
|
||||
|
||||
`resize_face` и `replace_face` требуют КОМПАС v25; на версиях старше они отвечают отказом с
|
||||
номером установленной версии, и тогда остаётся `move_face` с арифметикой.
|
||||
|
||||
**Проверяйте прямое редактирование РАЗНОСТЬЮ ОБЪЁМОВ против аналитической формулы** — объём и так
|
||||
печатается в сводке каждой операции, лишних вызовов не нужно. Расточка отверстия обязана снять
|
||||
ровно `π(R²−r²)·h`, наращивание грани — добавить ровно `площадь_грани × Δh`. Считайте формулу по
|
||||
СВОИМ числам и сверяйте с тем, что напечатала операция: одно число ловит и «операция ушла не
|
||||
туда», и «отверстие перестало быть сквозным».
|
||||
|
||||
**Оси отверстий сверяют полем `axis`.** У грани типа `cylinder`, `cone`, `torus` `list_faces`
|
||||
отдаёт `axis` — точку на оси и направление, в мировых координатах; у цилиндра и сферы там же
|
||||
`radius`. Требование «оси сдвигать нельзя» доказывается сравнением `axis` до и после, а не
|
||||
арифметикой по расстояниям. Осторожно с двумя соседними полями: `normal` у цилиндра — про
|
||||
сторону поверхности, а не про ось, а `pointOnFace` лежит на стенке (help(topic="cylinder-axis")).
|
||||
5. **Перед выдачей:** последняя операция «Построение чистое» → `export_model` (STEP для обмена,
|
||||
STL для печати).
|
||||
Reference in New Issue
Block a user