Files

59 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Работа с импортом / сборками
Дополнение к 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 для печати).