Documents & Calculations

3D-модели STEP/STL (твердотельное моделирование)

Твердотельные 3D-модели и сборки на build123d (ядро OCC): деталь как Python-исходник, который живёт рядом со STEP и правится между ходами; проверка массы, габаритов, зазоров, пересечений и соосности; стандартные и покупные изделия (крепёж, подшипники, моторы) со спецификацией; технологичность под фрезеровку, литьё, печать и лист; интерактивный 3D-вид со ссылками на грани; экспорт STEP, GLB, STL, DXF-сечения. Бери, когда нужно нарисовать, поправить или проверить деталь.

Skill instructions

3D-модели и сборки STEP/GLB (твердотельное моделирование)

S0. ЧЕТЫРЕ ПРАВИЛА

2. STEP пишет ядро. Файл появляется только из cad_export (или params_table). STEP, набранный текстом, проходит взгляд и не открывается ни в одном ядре.

3. После каждой правки cad_check, и только потом картинка. Числа стоят доли секунды, рендер секунды и токены. Сошлись масса, габариты и отношения: тогда cad_render и сверка формы.

S2. ГЕОМЕТРИЯ И МОДУЛЬ ДЕТАЛИ

Алгебраический режим build123d: Box(l, w, h), Cylinder(radius, height), Cone(...), Sphere(r), Torus(R, r); Pos(x, y, z) * shape, Rot(X, Y, Z) * shape; булевы +, -, &. Скругления и фаски берут рёбра запросом: fillet(part.edges().filter_by(Axis.Z), radius=3), chamfer(part.edges().group_by(Axis.Z)[-1], length=1.5). Запросы: .filter_by(...), .group_by(...)[-1], .sort_by(...).

Готовые тела solid_build: revolve_profile(points, angle=360, plane="XZ") (точки (радиус, высота), половина сечения с чертежа), extrude_profile(points, height, plane="XY", taper=0) (taper в градусах даёт литейный уклон), hole_pattern(part, positions, diameter, depth=None), bolt_circle(count, circle_diameter, start_angle=0), flange(...). Неверный профиль и болтовая окружность за наружным диаметром отвергаются с обоими числами.

S3. СБОРКА

assembly({"метка": тело, ...}) собирает компаунд без сплавления: каждое тело остаётся листом со своей меткой, и метка уходит в STEP именем изделия (кириллица и пробелы сохраняются). Метка: непустая строка без # и запятой; экземпляры одного изделия различай суффиксом :2. Метка, подходящая под грамматику ссылки (буква, потом буквы, цифры, _, :), называет лист в ссылках (#вал.f3); лист с меткой вроде ISO 4762 M6x20 называется путём (#o3.f2). Положение задаёт Pos/Rot при сборке. Кинематика (ход, вращение) не моделируется: проверяется одно положение.

S4. ЯДРО ЦИКЛА: cad_check

Ответ: JSON, первые ключи status и hint. hint читается первым: это готовая подсказка, что делать дальше. Код выхода 0 при ok.

Гейт: watertight ∧ volume > 0 ∧ manifold ∧ valid. Гейт красный: экспорта нет, cad_export печатает тот же отчёт и не пишет ничего.

  • по файлу или листу: mass_kg, volume_mm3, bbox_x/y/z, face_count, edge_count, solid_count, area_mm2;
  • отношения: distance(#A,#B) (зазор, касание и вложенность дают 0), overlap_mm3(#A,#B) и overlap_mm3(*) (пересечение; * берёт худшую пару), outside_mm3(#A,#B) (сколько A торчит из B), offset(#A,#B) (расстояние между базами: плоскость, ось, точка), angle(#A,#B) (0..90°, соосность и параллельность), diameter(#A).

Натяг, который задуман, заявляй утверждением с нижней границей больше нуля: overlap_mm3(#вал,#ступица)>=1. Такая пара выходит из перебора overlap_mm3(*), прочие пересечения остаются ошибкой.

Посадка. Модель строится в номинале: вал и отверстие 20, зазор 0. Посадка H7/g6 пишется на чертеже, а в модели проверяется diameter обеих граней в номинале, offset(#вал.f1,#втулка.f3)<=0.01 (оси совпали) и angle(...)<=0.05. Смоделированный зазор (distance>=0.1) это отдельное решение, а не посадка.

Неразрешённая ссылка или сбой ядра дают ok: false с note: непроверенное не проходит.

Материал именем (сталь, чугун, алюминий, латунь, бронза, медь, титан, нержавейка, abs, pla, petg) или плотностью в кг/м³; по умолчанию сталь 7850.

S5. ССЫЛКИ НА ГРАНИ

Ссылка: [файл@ревизия]#селектор. Примеры: Фланец.step@3f9a1c2e#f7, Узел.step@3f9a1c2e#o2.f3,f4, #вал.e5, #втулка. Ревизия это первые 8 знаков sha256 того STEP, с которого снят номер; её печатает 3D-вид, сам её не пиши: свои ссылки в --assert, --highlight и --ref пиши без файла (#f7 это текущая деталь). Лист называется меткой или путём o1.2 (с 1, по детям сборки), сущность: f грань, e ребро, v вершина; у детали из одного тела лист не пишется. Номер это порядок part.faces() у листа, и он действителен для одной сохранённой ревизии: следующая пересборка может перенумеровать.

Человек кликает грань в 3D-виде GLB и вставляет в сообщение ссылку вида Фланец.step@3f9a1c2e#f7. Первым делом разреши её на том STEP, который он видит:

S6. РЕНДЕР: cad_render

PNG с ракурсами одним листом в $WORK_ROOT/cad/<имя>_views.png: это картинка для тебя, для сверки формы с чертежом. Человеку деталь показывает GLB, который он крутит сам, а картинку <Имя>.png (изометрия) cad_export кладёт в артефакты сам: в мессенджере 3D не открыть, и деталь приходит картинкой. Отдельный PNG в артефакты не пиши; -o нужен, только когда картинка идёт в документ. --highlight красит грани по ссылкам. Ракурсы: iso, front, back, left, right, top, bottom.

S7. СТАНДАРТНЫЕ И ПОКУПНЫЕ ИЗДЕЛИЯ: cad_parts

Покупное по памяти не рисуется: заглушку вместо реального мотора человек заметит только на сборке.

Сведения для спецификации (раздел, наименование, примечание) едут на самом теле из cad_parts и уходят в STEP вместе с ним, поэтому метку в assembly выбирай свободно ("винт:2" так же годится, как обозначение). Тело, собранное самостоятельно, в спецификации стоит в «Деталях» под своей меткой, даже если метка похожа на обозначение: изделием его делают только сведения из cad_parts. Перемещение (Pos, Rot) сведения сохраняет, булева операция над самим изделием даёт новое тело без них. cad_export пишет рядом со сборкой спецификацию <Имя>.bom.csv по разделам ГОСТ 2.106, когда в сборке есть стандартные или покупные изделия.

S8. ТЕХНОЛОГИЧНОСТЬ: cad_dfm

«А это можно сделать?» это вызов, а не мнение:

Процессы: cnc (внутренние радиусы против фрезы и глубины, стенка, глубина отверстий), mold (уклон к направлению выемки, поднутрения), fdm, sla, sls (стенка, нависания), sheet (постоянная толщина, радиус гиба, отверстия у гиба; --thickness). --pull это направление выемки для литья, ось шпинделя для фрезеровки и направление печати. Процесс неизвестен: спроси, или прогони два-три и сравни.

S9. СЕРИЯ ИСПОЛНЕНИЙ: params_table

Таблица исполнений с чертежа это одна модель с параметрами. Колонки таблицы совпадают с аргументами build:

Каждая строка проходит гейт и те же --assert; файл получают только прошедшие, у остальных свой hint. Исходник модуля сохраняется в рабочей памяти ($WORK_ROOT/durable/cad/<модуль>.py), а не рядом с серией, и checkout("<модуль>") возвращает его. Без --out-dir серия пишется в $WORK_ROOT/cad/<модуль>_series.

S10. ЧУЖОЙ STEP: cad_inspect

Печатает листья с путями и метками, объёмы, габариты, заголовок файла и вердикт гейта: был ли донор сломан ещё до правок. --split раскладывает листья по отдельным STEP в $WORK_ROOT/cad. Правка донора живёт в модуле:

S11. ЭКСПОРТ: cad_export

  • <Имя>.png, изометрия детали: её видит человек в мессенджере, где 3D не открыть;
  • <Имя>.step, STEP AP214 с деревом сборки и метками; схема и число тел читаются из записанного файла;
  • <Имя>.glb, 3D-вид для человека: вращение, клик по грани или ребру даёт ссылку (S5);
  • по флагам <Имя>.stl (печать, --tolerance) и <Имя>.dxf (плоское сечение, --dxf-plane XY|XZ|YZ);
  • <Имя>.bom.csv, если в сборке есть изделия (S7).

S12. ГРАНИЦЫ

Деталь это исходник; cad_check решает, тело ли это и сходятся ли размеры и отношения; ссылка на грань разрешается запросом, а не номером; экспорт кладёт картинку, STEP и 3D-вид одной дверью, исходник в рабочую память, и дверь заперта, пока гейт красный.

Similar skills

Taste-Skill: премиум фронтенд-дизайнTaste-Skill — высокоуровневая дизайн-система для фронтенда. Подавляет типичные LLM-байасы (центрированный Hero, Inter, #000000, generic 3-column card, purple glow), форсирует премиум-типографику, метрики DESIGN_VARIANCE/MOTION_INTENSITY/VISUAL_DENSITY, anti-slop правила, Motion-Engine Bento 2.0. Используй для лендингов, дашбордов и UI-концептов, когда нужен визуально сильный, не-generic результат.Анализ CommerceML (обмен 1С с сайтом)Парсинг и анализ XML CommerceML 2.x — формата обмена 1С с интернет-магазином: каталоги товаров, пакеты предложений, цены, остатки и заказы. Сверка выгрузок и диагностика ошибок импорта.Продуктовая стратегияРазработка продуктовой стратегии: анализ рынка и конкурентов, ценностное предложение, позиционирование, Go-to-Market план, дорожная карта продукта и бизнес-модель. Для основателей, продакт-менеджеров и команд роста.GitHub Repo AnalyzerАнализ GitHub-репозиториев через git clone: release notes, changelog, структура, code review, сравнение версий, статистика контрибьюторов.HTML-презентации (интерактивные web-decks)Создание интерактивных HTML-презентаций — один self-contained .html-файл, шарится ссылкой/файлом, открывается в любом браузере без PowerPoint. 6 тем, 10 layout-ов, CSS+canvas-анимации, presenter-mode по клавише S. Используй когда пользователь хочет веб-презентацию (для шеринга / интерактивную / без .pptx).P&L, финмодель и финансовый анализОтчёт о прибылях и убытках (P&L), маржинальность, EBITDA, рентабельность, ROE/ROA/ROIC, unit-экономика (LTV, CAC, Churn), финансовое моделирование, DCF и оценка стоимости бизнеса (прогноз FCF, терминальная стоимость, чувствительность), план-факт анализ, отраслевые бенчмарки — полный цикл финансового анализа для российского рынка 2026
Platform
Samreshuuu

Try this skill

Sign up and use the "3D-модели STEP/STL (твердотельное моделирование)" skill for free.