26 KiB
name, description
| name | description |
|---|---|
| kompas-fdm-design | Методика проектирования деталей под 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»:
M = F·L— момент в корне:F = m·g(Н),L— плечо до корневого сечения (мм) → Н·мм.W = b·h²/6— момент сопротивления прямоугольного сечения (h— размер В ПЛОСКОСТИ изгиба), мм³. Размеры сечения бериdescribe_model(sections="box")илиmeasureпо граням, а не из головы.σ = M/W(Н/мм² = МПа).- Порог — межслойная прочность: доля от 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» читается как запрет и уводит в худшую по печати ориентацию.
Постановки перебирают по граням габарита, их немного: у плоско-изогнутой детали — две «плашмя»
(широкой гранью вниз, посадочной гранью вниз) и одна «стоя» (корневым торцом вниз). Выпиши для
каждой три числа — площадь нависающих граней, площадь опорного пятна и σ — и выбор перестанет
быть спором вкусов. «Стоя» обычно выигрывает по нависаниям и проигрывает по устойчивости; её
проверяют отдельно (гео-аудит, проверка центра масс).
Рабочий цикл
- Калибровка: сопло→
w; слой→h→θ_max; материал→поправки. - Ориентация (правило 1 + §«когда три требования не сходятся»): нагрузка/косметика — опросом или допущением → перебор постановок с числами → ось слоёв, сопряжения, «лесенка», поддержки.
- Правила эскиза/операции (строй через
kompas-3d): стенкиn·w; нависания → скос подθ_max; горизонтальные отверстия → teardrop (полная капля; усечённая касательная, если клюв мешает виду; мягкий колпачок, если по отверстию идёт посадка — выбор и формулы вreferences/fdm-rules.md§3), причём у МЕЛКОГО отверстия форму выбирают по ПРОЛЁТУ крыши, а не по углу боковин; вертикальные → компенсация Ø; фаска у основания; зазоры посадок (со знаком); заходные фаски; мин. элементы/текст; бобышки/инсёрты/защёлки. Числа — вreferences/fdm-rules.md. - Гео-аудит (
references/geometry-audit.md) — инструментами осмотра. - Предусловия выдачи: единое тело/манифолд (
boolean_unionпри необходимости) → построение чистое. - Чек-лист → выдача. Обменный файл кладите только если о нём попросили: модель самоценна,
а нарезает её человек сам. Попросили —
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 мм между стойками). Сравнивать с §2fdm-rules.md: 49 мм при потолке PLA 15–25 мм — это редизайн, а не «как-нибудь напечатается». -
Устойчивость высокой печати — самая дешёвая проверка из всех и единственная, которой нет больше нигде, но стоит она ТРЁХ вызовов, а не одного, и площади пятна для неё НЕ хватает:
list_facesотдаёт по грани площадь, нормаль и центр — ни границ, ни полуширины из них не выводится. Очертание пятна даётlist_edges: он печатает координаты концов рёбер, а окно по Z оставляет только рёбра первого слоя.describe_model(sections="box")→Zmin.describe_model(sections="mass")→ центр масс в мировых координатах (даром).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/geometry-audit.md. - Механика построения через MCP: навык
kompas-3d.