231 lines
26 KiB
Markdown
231 lines
26 KiB
Markdown
---
|
||
name: kompas-fdm-design
|
||
description: >
|
||
Методика проектирования деталей под FDM/FFF 3D-печать в КОМПАС-3D через MCP-сервер плагина:
|
||
правила DFM (нависания и угол θ_max, толщины стенок n·w, отверстия и teardrop,
|
||
посадки/зазоры, ориентация под прочность, elephant foot, бобышки/инсёрты/защёлки) ПЛЮС
|
||
лёгкая самопроверка геометрии инструментами осмотра. Используй, когда задача — спроектировать
|
||
или ДОВЕСТИ деталь, чтобы она хорошо ПЕЧАТАЛАСЬ на FDM. Триггеры: «сделай деталь
|
||
печатнопригодной / под FDM», «спроектируй … под печать», «напечатается ли без поддержек?»,
|
||
«подбери зазоры для печатной посадки», «как ориентировать деталь под печать», «почему деталь
|
||
плохо печатается / где будут нависания», «доведи деталь под FDM». Строит через навык kompas-3d.
|
||
НЕ для: механики построения через MCP (это kompas-3d); слайсинга/нарезки/g-code (вне границ).
|
||
---
|
||
|
||
# kompas-fdm-design — проектирование деталей под FDM-печать
|
||
|
||
## Что это (и чем НЕ является)
|
||
|
||
Методический слой **поверх** навыка `kompas-3d`. Отвечает на вопрос **«как спроектировать, чтобы
|
||
напечаталось на FDM»**, а не «чем строить».
|
||
|
||
- **`kompas-3d`** = *чем и как строить* через MCP (эскиз→операция→осмотр→проверка построения). Этот
|
||
навык **опирается** на него для механики.
|
||
- Этот навык = *какие правила геометрии* соблюдать, чтобы FDM-печать удалась.
|
||
- **Слайсинг — вне границ.** Навык не нарезает и не оценивает g-code.
|
||
|
||
## Когда применять / когда НЕ применять
|
||
|
||
**Применять:** «сделай печатнопригодным / под FDM», «спроектируй … под печать», «напечатается без
|
||
поддержек?», «подбери зазоры печатной посадки», «как ориентировать под печать», «почему плохо
|
||
печатается», «доведи деталь под печать».
|
||
|
||
**НЕ применять:** чистая механика построения (→ `kompas-3d`); слайсинг/нарезка/g-code (вне границ).
|
||
|
||
## Калибровка (выполни первым шагом)
|
||
|
||
Все правила масштабируются от трёх параметров (часть значений — абсолютные эмпирические мм,
|
||
помечены «калибровать тестом»):
|
||
|
||
- **`w` = ширина линии ≈ диаметр сопла.** Дефолт: сопло 0.4 → `w ≈ 0.4–0.45 мм`. → стенки `n·w`.
|
||
- **`h` = высота слоя.** Дефолт `h ≈ 0.5·сопло` (0.2 мм); структурная печать 0.2–0.25.
|
||
- **`θ_max` = предельный угол самонесущей поверхности ОТ ВЕРТИКАЛИ.** `θ_max ≈ arctan(w/2h)`
|
||
(≈45° при `w`=0.4, `h`=0.2). **Дефолт 45°** (PLA, хороший обдув); **40°** для PETG/ABS
|
||
(эмпирическая поправка на провис, не вывод формулы) или для толстого слоя (`h≥0.3` → формула
|
||
даёт ~34°). Нависания, teardrop, фаски, зенковки берут угол из `θ_max`.
|
||
- **Материал** (PLA / PETG / ABS) — модификатор зазоров/мостов/коробления/`θ_max`. См.
|
||
`references/fdm-rules.md`.
|
||
|
||
Если сопло/слой/материал не заданы — прими дефолты (сопло 0.4, `h`=0.2, PLA) и скажи об этом.
|
||
|
||
## Два правила (соблюдай всегда)
|
||
|
||
**1. Ориентация печати — первое проектное решение.**
|
||
- **Путь нагрузки и косметические грани из геометрии не выводятся** — их задаёт задача. Спроси
|
||
пользователя, **если есть кого спрашивать**; работаешь автономно (субагент, пакетный прогон) —
|
||
выведи из постановки: что деталь держит, куда смотрит рабочая поверхность, чем она крепится.
|
||
Выведенное — **запиши допущением** в ответ («принято: нагрузка — вес камеры 150 г вниз на плече
|
||
53 мм; косметика не задана»), чтобы человек увидел, что именно ты предположил. Молчаливое
|
||
«спросить некого» — не повод пропустить решение об ориентации: без него все дальнейшие правила
|
||
повисают.
|
||
- Реши постановку на стол (ось Z = рост слоёв). От неё зависит: где нависания; куда смотрят
|
||
отверстия (вертикальные → компенсация Ø; горизонтальные → teardrop); путь нагрузки (**держи в
|
||
XY**; Z-сжатие можно, Z-растяжение/срез — нет); плоскости сопряжения (на XY-гранях); «лесенка» на
|
||
наклонных функциональных поверхностях; если поддержки неизбежны — чтобы опорные грани были
|
||
некритичными/скрытыми.
|
||
- Зафиксируй ориентацию и проектируй под неё.
|
||
|
||
**2. Чек-лист печатнопригодности перед выдачей** (ниже). Сначала **валидность построения** (её
|
||
дописывает к ответу каждая операция, см. `kompas-3d`; вручную — `describe_model(sections=errors,bodies,mass)`), затем
|
||
**FDM-чек-лист** (деталь *печатнопригодна*) — разные проверки. **Гео-аудит
|
||
эвристический и не доказывает печатнопригодность** (не ловит путь нагрузки/анизотропию).
|
||
|
||
## Ориентация: когда три требования не сходятся
|
||
|
||
У консольной детали (кронштейн, полка, держатель) требования правила 1 — **нагрузка в XY**,
|
||
**нависания ≤ `θ_max`**, **опорная площадка** — одновременно невыполнимы. Постоянного приоритета у
|
||
них нет: он решается ЧИСЛОМ, и число считается за две минуты.
|
||
|
||
**Прикидка «прочность против ориентации».** Напряжение в корневом сечении против межслойной
|
||
прочности — то есть против той самой величины, ради которой требуют «нагрузку в XY»:
|
||
|
||
1. `M = F·L` — момент в корне: `F = m·g` (Н), `L` — плечо до корневого сечения (мм) → Н·мм.
|
||
2. `W = b·h²/6` — момент сопротивления прямоугольного сечения (`h` — размер В ПЛОСКОСТИ изгиба), мм³.
|
||
Размеры сечения бери `describe_model(sections="box")` или `measure` по граням, а не из головы.
|
||
3. `σ = M/W` (Н/мм² = МПа).
|
||
4. Порог — межслойная прочность: доля от XY-прочности по §6 `fdm-rules.md`, для **PLA ~20–30 МПа**
|
||
(PETG ~15–25, ABS ~8–15).
|
||
|
||
**Точность прикидки — ПОРЯДОК, и в узкой полосе этого мало.** `W = b·h²/6` — это сплошное сечение,
|
||
а печатная деталь сплошной не бывает: тот же навык требует стенки `n·w` и оставляет заполнение
|
||
по умолчанию, так что настоящий момент сопротивления корневого сечения заметно ниже габаритного
|
||
(у оболочки в три периметра на сечении 34×24 — примерно вдвое). Пока запас идёт порядками, это
|
||
не мешает; в полосе **<3×**, где число и решает, погрешность метода равна ширине полосы. Поэтому:
|
||
при запасе <3× пересчитайте `W` по фактическому сечению (оболочка `n·w` + заполнение) либо просто
|
||
возьмите `W` вдвое меньше габаритного и посмотрите, в какой строке таблицы окажетесь.
|
||
|
||
| Запас `σ_меж/σ` | Что делать |
|
||
|---|---|
|
||
| **< 3×** | «Нагрузка в XY» — жёсткое требование, ориентацию выбирает оно; нависания лечим поддержками, площадку — фланцем, вплоть до разбиения детали (§13) |
|
||
| **3–10×** | Держать XY, если это не стоит поддержек на функциональных гранях; несущее сечение поднять (§6: ×2 при неизбежной Z-нагрузке) |
|
||
| **≥ 10×** | Требование СНИМАЕТСЯ — «слои на отрыв» здесь не размерный случай. Ориентацию выбирай по печати: сначала нависания, затем опорная площадка и устойчивость |
|
||
|
||
**Замер (кронштейн камеры):** 150 г на плече 53 мм → `M = 0.150·9.81·53 ≈ 78 Н·мм`; корневое сечение
|
||
34×24 → `W = 34·24²/6 ≈ 3.3·10³ мм³`; `σ ≈ 24 кПа` против ~30 МПа межслойной PLA — запас **три
|
||
порядка**. Слои здесь не решают ничего, и постановка выбрана по нависаниям, а не по прочности.
|
||
Без этой прикидки правило «нагрузка в XY» читается как запрет и уводит в худшую по печати ориентацию.
|
||
|
||
**Постановки перебирают по граням габарита**, их немного: у плоско-изогнутой детали — две «плашмя»
|
||
(широкой гранью вниз, посадочной гранью вниз) и одна «стоя» (корневым торцом вниз). Выпиши для
|
||
каждой три числа — площадь нависающих граней, площадь опорного пятна и `σ` — и выбор перестанет
|
||
быть спором вкусов. «Стоя» обычно выигрывает по нависаниям и проигрывает по устойчивости; её
|
||
проверяют отдельно (гео-аудит, проверка центра масс).
|
||
|
||
## Рабочий цикл
|
||
|
||
1. **Калибровка**: сопло→`w`; слой→`h`→`θ_max`; материал→поправки.
|
||
2. **Ориентация** (правило 1 + §«когда три требования не сходятся»): нагрузка/косметика — опросом
|
||
или допущением → перебор постановок с числами → ось слоёв, сопряжения, «лесенка», поддержки.
|
||
3. **Правила эскиза/операции** (строй через `kompas-3d`): стенки `n·w`; нависания → скос под
|
||
`θ_max`; горизонтальные отверстия → teardrop (полная капля; усечённая касательная, если клюв
|
||
мешает виду; мягкий колпачок, если по отверстию идёт посадка — выбор и формулы в
|
||
`references/fdm-rules.md` §3), причём у МЕЛКОГО отверстия форму выбирают по ПРОЛЁТУ крыши,
|
||
а не по углу боковин; вертикальные → компенсация Ø; фаска у основания;
|
||
зазоры посадок (со знаком); заходные фаски; мин. элементы/текст; бобышки/инсёрты/защёлки.
|
||
Числа — в `references/fdm-rules.md`.
|
||
4. **Гео-аудит** (`references/geometry-audit.md`) — инструментами осмотра.
|
||
5. **Предусловия выдачи**: единое тело/манифолд (`boolean_union` при необходимости) →
|
||
построение чистое.
|
||
6. **Чек-лист** → выдача. Обменный файл кладите **только если о нём попросили**: модель самоценна,
|
||
а нарезает её человек сам. Попросили — `export_model` (`.stl` — двоичная сетка для слайсера,
|
||
`.step` — для передачи модели в другую САПР).
|
||
|
||
## Чек-лист печатнопригодности
|
||
|
||
- [ ] Направление нагрузки и косметические грани **получены от пользователя или выведены из
|
||
постановки и записаны допущением**; ориентация выбрана числом (запас `σ_меж/σ`), а не по
|
||
умолчанию; нагрузка в XY (или Z только на сжатие, или запас ≥10×); сопряжения на XY-гранях.
|
||
- [ ] Стенки кратны `w` (≥2·w; несущие ≥3·w, т.е. 3 периметра); нет «не кратных `w`» (кроме
|
||
функциональных).
|
||
- [ ] Нет 90°-полок; нависания ≤`θ_max` или заменены скосами — отбор ровно в той форме, что в
|
||
§«Гео-аудит»: `list_faces(normal="0,0,-1", normalTolerance=90−θ_max, minZ=<Zmin+0.1>)`
|
||
(дефолтный допуск 15° ловит только почти горизонтальные потолки, а без `minZ` в улов
|
||
попадает опорное пятно, без `minArea` — микрогрань, которая нависанием быть не может);
|
||
пролёт каждого моста **замерен** `measure`, а не прикинут, и
|
||
укладывается в `references/fdm-rules.md` §2 по короткой стороне; внутренним поддержкам — доступ.
|
||
- [ ] Горизонтальные отверстия — teardrop/D (геометрия из `θ_max`), усечённая касательная там, где
|
||
клюв мешает виду, либо мягкий колпачок там, где отверстие несёт посадку, и тогда компромисс
|
||
назван вслух; у формы положе `θ_max` пролёт крыши посчитан и укладывается в норму моста;
|
||
вертикальные — компенсация Ø; глухие — дно ≥2–3 мм.
|
||
- [ ] Фаска у основания (elephant foot); внутренние углы ≥R0.5; опорная площадка есть, и для
|
||
высокой детали проверена устойчивость по §«Гео-аудит»: очертание пятна —
|
||
`list_edges(minZ=<Zmin−0.1>, maxZ=<Zmin+0.1>)`, проекция ЦМ
|
||
(`describe_model(sections="mass")`) внутри этого прямоугольника, высота ЦМ над столом
|
||
≲3× полуширины пятна в узком направлении.
|
||
- [ ] Посадки по таблице со **знаком** (натяг — вычесть); допуск ±0.2 **НЕ** прибавлен к зазору;
|
||
заходные фаски на сопряжениях.
|
||
- [ ] Мин. элементы/текст ≥ порогов (у надписи проверен ШТРИХ, а не кегль: чертёжный шрифт даёт
|
||
`h/14` и порога не берёт — `references/fdm-rules.md` §7); сторона грани под надпись выбрана
|
||
так, чтобы она не вышла зеркальной (§10); аспект тонких выступов ≤4–5×.
|
||
- [ ] Бобышки/инсёрты (бор отверстия ≤ OD инсёрта, ставить с Z-грани)/резьба/защёлки (изгиб в XY) по правилам.
|
||
- [ ] Полости — дренаж/вент; критичные поверхности не под «лесенкой»/поддержкой.
|
||
- [ ] Предусловия экспорта: единое тело/манифолд; построение чистое.
|
||
|
||
## Гео-аудит (кратко)
|
||
|
||
Лёгкая самопроверка построенной модели **существующими** инструментами осмотра MCP — вызовами,
|
||
а не пожеланиями:
|
||
|
||
- **Нависания одним отбором:** `list_faces(normal="0,0,-1", normalTolerance=90−θ_max,
|
||
minZ=<Zmin+0.1>)` — всё вернувшееся кандидаты в нависания, и тем хуже, чем ближе нормаль
|
||
к чистому −Z (горизонтальный потолок). При дефолтном `θ_max`=45° допуск равен 45 — это совпадение
|
||
чисел, а не тождество: для PETG с `θ_max`=40° допуск **50**.
|
||
**`minZ` тут не украшение, а условие правильности.** Отбор по нормали ЗНАКОВЫЙ, а у грани,
|
||
лежащей на столе, внешняя нормаль равна ровно (0, 0, −1) — она проходит при ЛЮБОМ допуске и
|
||
выглядит САМЫМ страшным нависанием, хотя это опорное пятно. Замер на кронштейне: тот же отбор
|
||
без `minZ` (допуск 45°) вернул девять граней, и наибольшая из них — 515.44 мм² с центром ровно
|
||
на `Zmin` (−50.50) — была пятном первого слоя. Первый слой печатается по столу и нависанием не
|
||
бывает: отсекайте его окном, `Zmin` берите из `describe_model(sections="box")`.
|
||
**`minArea` — вторая половина того же отбора.** Угол наклона грани — критерий для ПРОТЯЖЁННОГО
|
||
нависания; на грани в единицы мм² он не значит ничего, потому что перекрыть надо не угол, а
|
||
пролёт. Замер: крыша отверстия Ø6, срезанная касательными под 22.5° к горизонтали, приходит в
|
||
улов как нарушение (нависание 67.5° при пороге 45°) — при площади 2.84 мм² и пролёте 2.30 мм,
|
||
который печатается заведомо. Ставьте `minArea` порядка 5–10 мм², а всё мелкое, что всё же
|
||
хотите проверить, судите пролётом (`measure`), а не углом: иначе аудит гонит на редизайн там,
|
||
где всё в порядке.
|
||
Дальше `list_faces(index=N)` по подозрительным; цилиндр с горизонтальной осью → нужен teardrop.
|
||
- **Пролёт моста меряют, а не считают по эскизу:** `measure(kind1="face", index1=…, kind2="face",
|
||
index2=…)` между ВНУТРЕННИМИ гранями опор (замер: 49.0 мм между стойками). Сравнивать с §2
|
||
`fdm-rules.md`: 49 мм при потолке PLA 15–25 мм — это редизайн, а не «как-нибудь напечатается».
|
||
- **Устойчивость высокой печати** — самая дешёвая проверка из всех и единственная, которой нет
|
||
больше нигде, но стоит она ТРЁХ вызовов, а не одного, и площади пятна для неё НЕ хватает:
|
||
`list_faces` отдаёт по грани площадь, нормаль и центр — ни границ, ни полуширины из них не
|
||
выводится. Очертание пятна даёт `list_edges`: он печатает координаты концов рёбер, а окно по Z
|
||
оставляет только рёбра первого слоя.
|
||
1. `describe_model(sections="box")` → `Zmin`.
|
||
2. `describe_model(sections="mass")` → центр масс в мировых координатах (даром).
|
||
3. `list_edges(minZ=<Zmin−0.1>, maxZ=<Zmin+0.1>)` → концы рёбер пятна; их разброс по X и по Y и
|
||
есть прямоугольник пятна, а половина меньшей стороны — полуширина в узком направлении.
|
||
У КРУГЛОГО пятна так не выйдет: у замкнутой окружности концы совпадают, разброс схлопывается
|
||
в точку. Тогда полуширина — радиус, и берут его `list_faces(index=N)` (у грани печатается
|
||
радиус) или из длины ребра (`πD`).
|
||
|
||
Проверок две: проекция ЦМ `(x, y)` обязана лежать **внутри** этого прямоугольника (у консольной
|
||
детали «стоя» она легко уходит за него — деталь падает недопечатанной), и высота ЦМ **над столом**
|
||
(`z_ЦМ − Zmin`) ≲3× полуширины (эвристика; выше — интегральный фланец §5 или разбиение §13).
|
||
**Замер (кронштейн «стоя»):** габарит `Z −50.50…180.00`, ЦМ `(0.00, 4.93, 56.61)`;
|
||
`list_edges(minZ=−51, maxZ=−50)` вернул четыре ребра — `X −50.50…50.50`, `Y 0.00…8.00`, то есть
|
||
пятно 101 × 8 мм. Проекция ЦМ (0.00, 4.93) внутри прямоугольника — первая проверка пройдена;
|
||
высота ЦМ над столом 56.61 − (−50.50) = **107.1 мм** при полуширине узкого направления **4 мм**,
|
||
это **27×** при пороге 3× — вторая провалена. Сработало именно второе число, и без очертания
|
||
пятна взять его было неоткуда.
|
||
- **Тело, габарит, номиналы:** `describe_model(sections="bodies")` + чистое построение (единое
|
||
тело), `describe_model(sections="box")` (как ось слоёв соотносится с габаритом), `measure`.
|
||
|
||
**Границы и методика — `references/geometry-audit.md`.** Аудит эвристический; истинная мин. толщина
|
||
стенки и полный детект криволинейных нависаний не решаются — это **не приговор и не доказательство
|
||
печатнопригодности**.
|
||
|
||
**Просвет канала и толщину перемычки спрашивают, а не считают.** `measure(kind1="body", index1=0,
|
||
kind2="body", index2=1)` даёт минимальное расстояние между телами целиком — не нужно угадывать, какие
|
||
именно стенки сближаются. Ответ включает координаты двух ближайших точек, то есть показывает, *где*
|
||
узко. Сравнивайте с 2·w (два прохода сопла): канал уже этого не пропечатается, а найти его арифметикой
|
||
по эскизу — значит найти его случайно. То же для двух конкретных стенок: `kind=face` с индексом из
|
||
`list_faces` или с точкой на грани (`x1,y1,z1`).
|
||
|
||
## Связанное
|
||
|
||
- Полный численный свод DFM: [`references/fdm-rules.md`](references/fdm-rules.md).
|
||
- Рецепты самопроверки и границы: [`references/geometry-audit.md`](references/geometry-audit.md).
|
||
- Механика построения через MCP: навык **`kompas-3d`**.
|