Files

7.3 KiB
Raw Permalink Blame History

Работа с импортом / сборками

Дополнение к SKILL.md — конвейер разбора ЧУЖОЙ модели/сборки: «импорт → разбор → извлечение детали → осмотр → модификация → экспорт». Сборка С НУЛЯ — reference/assembly-playbook.md.

  1. import_modeltype задаёт документ: 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_planemove_bodymove_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 для печати).