GAVA ExportGAVA Export
Що ми перевіряємо

Перевірки CatCut над вашим проектом

Перед тим, як CatCut експортує ваш проект у цільовий формат, він проганяє його через набір перевірок: чи коректно описаний документ, чи всі інструменти у активному наборі інструментів, чи цільовий формат взагалі вміє все, що ви хочете. Кожна знайдена проблема стає попередженням або помилкою у панелі валідації біля деталей.

Нижче — повний перелік. Зелений значок означає «зараз перевіряємо», жовтий — «у планах». Цей перелік оновлюється разом із кодом, тому якщо щось у роботі — ви побачите це тут.

14перевіряємо
3у планах

Структура файлу

Базові перевірки самого GrakML-документа: чи є в кожній панелі контур, габарити, товщина. Без них експортер не зможе обробити проект взагалі.

Деталь має габаритні розміри

перевіряємо

Кожна панель повинна мати поле dimensions: [width, height]. Без нього експортер не знає габаритів заготовки.

Рівень: помилкаschema-panel-has-dimensions

Деталь має контур

перевіряємо

Кожна панель повинна мати замкнутий contour із сегментів line/arc. Без контуру неможливо зрозуміти форму деталі.

Рівень: помилкаschema-panel-has-contour

Деталь має товщину

перевіряємо

Кожна панель повинна мати поле thickness — використовується як dz у XNC програмах і для вибору листа матеріалу.

Рівень: помилкаschema-panel-has-thickness

Інструмент

Чи має активний набір інструментів всі діаметри сверл, фрез і пил, потрібні для машинних операцій у вашому проекті. Якщо чогось бракує — у звіті з'явиться попередження, а в майбутньому ми будемо автоматично пропонувати заміни.

Свердло для лиця відсутнє в активному наборі інструментів

перевіряємо

Якщо в проекті є face/back drilling діаметром, якого немає в toolset.face_drills, цех не зможе його зробити цим інструментом. Перед перевіркою застосовуємо substitutions з набору — якщо є правило «5→4», то проект з 5мм пройде з info-повідомленням про заміну.

Рівень: попередженняtooling-face-drill-not-in-toolset

Свердло для торця відсутнє в активному наборі інструментів

перевіряємо

Аналогічно до face: якщо edge drilling має діаметр, якого немає в toolset.edge_drills — попередження. Substitutions для торцевих свердел теж застосовуються (це окремий список, бо торцевий станок зазвичай має свій набір патронів).

Рівень: попередженняtooling-edge-drill-not-in-toolset

Ширина пазу не відповідає жодній пилі в наборі інструментів

перевіряємо

Кожен паз має ширину, яка дорівнює ширині пили (або фрези). Якщо такої ширини в toolset.groove_saws немає — цех не зробить паз точно тієї ж ширини. Перевіряємо після застосування substitutions.

Рівень: попередженняtooling-groove-width-not-in-toolset

У наборі інструментів немає жодної фрези

перевіряємо

Якщо в проекті є хоча б один вибірка або фрезерувальна обробка, в активному наборі інструментів повинна бути хоча б одна фреза. Інакше їх немає чим зробити.

Рівень: помилкаtooling-toolset-has-no-mills

Автоматичні заміни інструменту

перевіряємо

На рівні набору інструментів можна задати правила заміни: «свердло 5мм → 4мм», «маркерне 3мм → 2мм» тощо. Перед перевіркою «чи є цей діаметр у наборі» валідатор спочатку прогоняє діаметр через список замін, і експортер фактично малює XNC-програму вже з підміненим діаметром. У звіт потрапляє info-попередження про кожну заміну.

Рівень: інформаціяtooling-substitutions

Геометрія

Перевірки фізичної реалізованості: радіус кутка не менший за половину фрези, мінімальна стінка між отворами, глибина не більша за товщину тощо. Тут ще багато чого треба зробити — нижче перелік запланованих перевірок.

Радіус кутка вибіркаа vs діаметр фрези

у планах

Якщо у вибіркаі мінімальний радіус закруглення R менший за половину діаметру обраної фрези, фреза фізично не пролізе в куток і реальний радіус буде більшим. Це не помилка, але треба попереджати, щоб юзер свідомо вибирав фрезу.

Рівень: попередженняgeometry-pocket-corner-radius

Мінімальна стінка між свердловинами

у планах

Якщо два сусідніх отвори стоять занадто близько, перемичка між ними може лопнути. Ми ще не перевіряємо цю відстань — буде налаштовуватись через набір інструментів (мінімальна стінка для конкретного матеріалу і свердла).

Рівень: попередженняgeometry-min-wall-between-drillings

Глибина свердловини більша за товщину

у планах

Якщо depth більше ніж thickness деталі — це наскрізне отвір, і його треба маркувати інакше. Поки що ми не перевіряємо, але буде додано як автоматична конвертація drilling → through-hole.

Рівень: попередженняgeometry-drill-too-deep

Компенсація mill-path на товщину крайки вирізу

перевіряємо

Коли на сегменті вирізу (внутрішнього або зовнішнього) задана крайка, експортер перед малюванням mill-path зсуває цей сегмент перпендикулярно тангенсу всередину матеріалу деталі на товщину крайки. Консекутивні зсунуті сегменти з'єднуються miter-стиковкою (для прямих), або коротким bevel-мостиком (для стиків з дугами). Завдяки цьому після ручного оклеювання вирізу реальний розмір збігається з design. Товщина бреться per-segment, тож виріз, у якого на сегментах різна крайка, компенсується коректно.

Рівень: інформаціяtooling-cutout-mill-offset

Сумісність із цільовим форматом

Деякі особливості GrakML просто не вміщуються в обраний цільовий формат. GibLab, наприклад, не вміє торцевих вибірок і зрізів під кутом — такі деталі мають бути попередженими і чекати окремого PDF-додатку.

Торцеві вибіркаи (GibLab)

перевіряємо

GibLab формально не підтримує торцеві вибіркаи (вибірка на торці деталі). Найближчим часом ми будемо виносити такі деталі окремою сторінкою у PDF-додаток до експорту, щоб майстер міг зробити їх вручну. Поки що — попередження, ці вибіркаи в .project не потраплять.

Рівень: попередженняФормат: GibLabcompat-giblab-edge-pocket

Зрізи під кутом (GibLab)

перевіряємо

GibLab не вміє представляти зрізи торця під кутом (miter). Як і торцеві вибіркаи, такі деталі підуть у PDF-додаток. Поки експортер їх просто пропускає з попередженням.

Рівень: попередженняФормат: GibLabcompat-giblab-miter

Не-прямокутний контур деталі (GibLab)

перевіряємо

Якщо контур деталі не є прямокутником (зовнішній виріз, закруглені кути, вільна форма), експортер залишає в GibLab прямокутну заготовку з розмірами bounding box, а реальний контур вирізає фрезою через XNC mill-path з компенсацією c=1 (right — GrakML контур CCW, deталь залишається зліва). Фреза береться з preferred.contour_mill активного набору інструментів.

Рівень: інформаціяФормат: GibLabcompat-giblab-non-rectangular

Внутрішні вирізи (GibLab)

перевіряємо

Деталі з внутрішніми вирізами (наприклад, отвір під раковину) експортуються як XNC mill-програма з компенсацією c=3 і глибиною на всю товщину деталі. Фреза обирається з preferred.cutout_mill активного набору інструментів. Наскрізні вибіркаи (pocket depth = товщина) автоматично розпізнаються як внутрішні вирізи.

Рівень: помилкаФормат: GibLabcompat-giblab-cutouts

Зовнішні вирізи (GibLab)

перевіряємо

«Зовнішній виріз» — це виріз, що відкушує частину зовнішнього контуру деталі (наприклад, пропил під трубу на краю полиці). У GrakML такі сегменти просто лежать у panel.contour разом із звичайними сторонами (spec §4.8), ми їх виявляємо за ознакою «сегмент не у panel.sides» і переносимо в mill-path зовнішнього контуру разом з іншими не-прямокутними деталями. Крайка на сегментах зовнішнього вирізу в GibLab не передається — йде в PDF-додаток окремим попередженням.