kompas 0.3.0 (из fcedb44f5661313ffd0570e3808a5309f6ae8cb7)

This commit is contained in:
gitea-actions
2026-08-16 10:02:12 +00:00
parent c62794b415
commit 94e044bd03
21 changed files with 762 additions and 433 deletions
@@ -38,10 +38,46 @@
критичные — рассверливать.
- **Горизонтальные (ось в XY)** → **teardrop** или **D-отверстие** (плоский верх). Мин. Ø **2 мм**.
Круглая часть тоже печатается уже → **+0.10.2 мм** к её Ø.
- **Геометрия teardrop:** боковины касательны окружности под углом `θ_max` к вертикали (с двух
сторон), сходятся в вершине на вертикальной оси. Высота вершины над центром = **`r / sin θ_max`**;
включённый угол при вершине = **`2·θ_max`**. При `θ_max`=45° → `r/sin45° = √2·r ≈ 1.414·r` над
центром (= **0.414·r над верхом окружности**), угол 90°. Низ — оставшаяся дуга окружности.
- **Геометрия teardrop (полная капля):** боковины касательны окружности под углом `θ_max` к вертикали
(с двух сторон), сходятся в вершине на вертикальной оси. Высота вершины над центром =
**`r / sin θ_max`**; включённый угол при вершине = **`2·θ_max`**. При `θ_max`=45° →
`r/sin45° = √2·r ≈ 1.414·r` над центром (= **0.414·r над верхом окружности**), угол 90°.
Низ — оставшаяся дуга окружности. Это единственная форма, у которой ВСЯ крыша самонесущая по
критерию `θ_max`; платой идёт максимальное искажение круга (при `θ_max`=45° некруглыми становятся
90° дуги из 360°).
- **Усечённая касательная капля — когда клюв мешает глазу.** Полная капля при `θ_max`=45° выступает
на 0.414·r, и на мелком отверстии это заметно. Та же конструкция, но с точкой касания на `±φ` от
макушки при `φ < θ_max`: боковины остаются КАСАТЕЛЬНЫМИ (контур гладкий, излома на стыке с дугой
нет, круг не срезается вовсе), а
- вершина над центром = **`r / cos φ`**, то есть выступ над окружностью = **`r·(1/cos φ 1)`**;
- боковины наклонены к вертикали на **`90° φ`** — тем положе, чем короче клюв;
- перекрываемый пролёт = **`2r·sin φ`**.
**Судить эту форму по углу боковин бесполезно — судите по пролёту.** У маленького отверстия
`2r·sin φ` укладывается в единицы миллиметров, а мост такой длины FDM печатает не задумываясь:
`θ_max` — критерий для ПРОТЯЖЁННЫХ нависаний, а не для перемычки в пару миллиметров.
Замер (Ø6, `φ`=22.5°): выступ **0.247 мм** против 1.243 у полной капли, пролёт **2.30 мм**,
боковины 67.5° от вертикали — печатается без поддержек, крыша отверстия чистая.
- **Мягкий колпачок — когда круглость важнее, чем полная самонесущесть.** Посадка вала, подшипник,
штифт: полная капля съедает верхнюю четверть окружности, и сопряжение по ней уже не работает.
Тогда заменяют не сектор `±(90−θ_max)`, а УЗКИЙ сектор `±φ` у самой макушки, подняв вершину на
`k` слоёв (`k·h`) над окружностью:
- точки стыка — на `±φ` от макушки, вершина — на оси, на `r + k·h` над центром;
- включённый угол при вершине = **`2·arctan( r·sin φ / (r + k·h r·cos φ) )`**;
- **угол остаётся ТУПЫМ, пока `r·(sin φ + cos φ 1) > k·h`** — это и есть связь между шириной
сектора и подъёмом: ужимая `φ`, синхронно снижайте `k`, иначе колпачок вырождается в шпиль.
- Замер (Ø8, `φ`=12°, `k`=2 при `h`=0.2, т.е. подъём 0.4 мм): круглыми остаются **336° из 360°**,
стык отходит от оси на **±0.83 мм**, угол при вершине **119°**, боковины — 59.6° от вертикали.
- **Честная граница приёма:** у чистой окружности зона нависания — сектор `±(90−θ_max)` от макушки
(при 45° это ±45°, ширина `2r·sin45°`≈1.41·r). Колпачок `±12°` снимает только самую макушку —
участок от 12° до 45° остаётся нависанием. То есть это НЕ решение по `θ_max`, а замена плоского
потолка на микро-мост шириной ~`2r·sin φ` за `k` слоёв. Берите его осознанно: круглость в обмен
на частичное улучшение печати, а не на полное.
- **Точки касания задавайте с ПОЛНОЙ точностью — округление рвёт контур.** Дуга плюс две касательные
замыкаются у КОМПАС по допуску жёстче обычного округления: те же координаты, срезанные до 6 знаков
(16.668356 вместо 16.6683532), дали «код 19: контур должен быть замкнут», и вырез развалился.
Коварство в том, что `sketch_update` отчитался габаритом как об успехе — невалидность вылезла
только предупреждением «2 операц. в ошибке». Считайте `r·sin φ`/`r·cos φ` и подставляйте все знаки.
- **Глухое отверстие:** дно = внутренний мост → **толщина дна ≥2–3 мм** или купольное/
вентилируемое. Сквозные предпочтительнее.
- **Отступ от края** — через остаточную перемычку: стенка между отверстием и краем **≥23·w**
@@ -73,6 +109,9 @@
## 6. Ориентация и прочность
- **Z (межслойная) прочность от XY:** PLA ~4055%, PETG ~3550%, **ABS ~2035% (выброс)**. Несущую
нагрузку — в **XY (вдоль слоёв)**.
- **В абсолютных числах** (нужны, чтобы посчитать запас — SKILL.md §«Ориентация: когда три
требования не сходятся»): XY на разрыв PLA ~5060 МПа, PETG ~4550, ABS ~3540 ⇒ межслойная
**PLA ~2030, PETG ~1525, ABS ~815 МПа**. Порядок величины, не паспорт конкретного филамента.
- **Z-сжатие допустимо** (слои в сжатии не расслаиваются); избегать **Z-растяжения и Z-среза**.
- Изгиб: слои в растяжении/сжатии, не на срез по линии слоя.
- Z-нагрузка неизбежна → **увеличить несущее сечение** ~×2 относительно XY-расчёта.
@@ -84,6 +123,13 @@
- **Выпуклый** текст: штрих **≥0.5 мм**, высота **≥2·h (~0.4 мм)**, sans-serif bold.
- **Гравированный** текст: штрих **≥2·w (~0.80.9 мм)** (нужно ≥2 периметра; 0.6 мм не влезает),
глубина **≥2·h (~0.4 мм)**. (pt не используем — геометрия в мм.)
- **Штрих задаёт ШРИФТ, а не кегль, и чертёжные шрифты под печать не годятся.** По ГОСТ 2.304
толщина линии чертёжного шрифта равна `h/14`: кегль 8 даёт 0.57 мм — полторы ширины сопла, то
есть ниже порога 2·w. Такой шрифт берёт порог только с кегля ~13 мм, а уверенно читаемые 3·w —
с ~18 мм. У жирного гротеска штрих ≈ `h/4.5` (Arial Black при кегле 10 → ~2.2 мм), и порог
выполняется с запасом уже на кегле 4–5 мм. Замер: «2» кеглем 8 шрифтом GOST type A на
вертикальной стенке не читается вовсе; тот же символ кеглем 10 шрифтом Arial Black читается
издалека. Маркировку набирайте жирным sans-serif и проверяйте штрих, а не высоту.
## 8. «Лесенка» (staircase) — критерий ориентации
- Наклонные/криволинейные поверхности дают ступени: глубина ≈ **`h / tan(α)`** (α — угол от
@@ -107,6 +153,13 @@
верхнего слоя (там видны швы и «лесенка»). Тогда деталь и моделируют в этой ориентации — лицом
к XOY, — а несимметричный рисунок (логотип, текст) **зеркалят**: на лицевую грань смотрят
со стороны −Z. Проверка — снимок со стороны лица (`model_snapshot(view=rear)` для эскиза на XOY).
- **Зеркалит не только лицо на столе — зеркалит ЛЮБАЯ грань, обращённая против нормали эскиза.**
Надпись читается с той стороны, куда смотрит нормаль плоскости: XOY → **+Z**, XOZ → **+Y**,
YOZ → **−X** (нормаль YOZ уходит в МИНУС X — тот же замер, что разворачивает на ней выдавливание).
Значит гравировка по эскизу на YOZ, положенная на щеку с бОльшим X, выйдет зеркальной, а на
щеку X=0 — правильной. Замер: цифра на щеке X=20.4 читалась зеркально при ЛЮБОМ `angle`; тот же
эскиз, перенесённый на X=0, встал верно. **Поворотом это не лечится**`angle` вращает, а не
отражает; лечится выбором грани (или зеркальным контуром).
- **Фаска по лицевому контуру — это ещё и размер первого слоя.** При 45° она сжимает силуэт лица
на катет `c` по всему периметру, поэтому её потолок задаёт не эстетика, а то, что останется:
`ширина_штриха − 2c ≥ 2·w`. У широкого рисунка (штрих ~10 мм) ограничением становится толщина
@@ -118,24 +171,19 @@
вписанную окружность, узкое место с координатами и таблицу «офсет `c` → на сколько кусков
распалось лицо» — ничего не строя.
- **Узкое место зависит от СОСТОЯНИЯ контура, поэтому порядок такой: чистка → замер чищеного →
катет.** Замеры на обводке логотипа шириной 105 мм (штрих по наибольшей вписанной 11.5 мм):
| контур | узкое место | лицо распадается при |
|---|---|---|
| исходный, 54 примитива | 1.98 мм | c = 0.99 |
| чищеный порогом 0.5, 34 примитива | **1.82 мм** | **c = 0.91** |
Чистка (`minSegment`) заменяет скругления острыми углами: в выпуклом углу это добавляет материал,
в вогнутом — срезает, а перемычки между штрихами образованы как раз вогнутыми углами. То есть
операция, которую делают РАДИ фаски, уменьшает допустимый катет. Мерьте после неё.
- **Норматив катета — `c = stroke_min/2 w`**, где `stroke_min` узкое место, `w` — ширина нити.
Он и есть решение неравенства `ширина 2c ≥ 2w`. На том же логотипе: `1.82/2 0.4 = 0.51`,
и в узком месте остаётся ровно 0.80 мм — два прохода сопла.
**Осторожно с «эталонными» значениями из прошлых работ:** принятая когда-то на этом логотипе
фаска 0.8 собственному правилу НЕ удовлетворяет (`1.82 1.6 = 0.22 мм` против нужных 0.8; даже
по нечищеному контуру `1.98 1.6 = 0.38`). Она оставляет в узком месте одну нить экструзии —
тело там сплошное, рвётся косметика лицевой грани, а это как раз та поверхность, ради которой
деталь и кладут лицом на стол.
катет.** Чистка (`minSegment`) заменяет скругления острыми углами: в выпуклом углу это добавляет
материал, в вогнутом — срезает, а перемычки между штрихами образованы как раз вогнутыми углами.
То есть операция, которую делают РАДИ фаски, уменьшает допустимый катет — на обводке логотипа это
единицы процентов, и хватает, чтобы катет перестал проходить свой же критерий. Мерьте после неё,
тем же порогом, каким будете строить.
- **Норматив катета — `c = stroke_min/2 w`**, где `stroke_min` — узкое место ЧИЩЕНОГО силуэта,
`w` — ширина нити. Он и есть решение неравенства `ширина 2c ≥ 2w`: в узком месте остаётся
ровно `2w`, два прохода сопла. Считайте его на своём контуре — величина принадлежит рисунку.
**Осторожно с «эталонными» значениями из прошлых работ:** катет, принятый когда-то на похожем
знаке, своему же правилу обычно не удовлетворяет — он подбирался под другой рисунок, другой порог
чистки или вовсе на глаз. Катет вдвое сверх норматива оставляет в узком месте одну нить экструзии:
тело там сплошное, рвётся косметика лицевой грани — та самая поверхность, ради которой деталь и
кладут лицом на стол. Сверьте нормативом, а не воспоминанием.
- **Верхние рёбра — скругление** (R0.5–2.0); **но** радиус **> ~½ толщины стенки** сам даёт
нависание > `θ_max` → тогда фаска/ступень.
- **Внутренние углы — всегда скругление ≥R0.5**.