WEB APPLICATION: https://vsu-metacam.steptflow.tech
MetaCAM — часть дипломного проекта «Программно-аппаратный комплекс для автоматизированного изготовления метаматериалов методом ЧПУ-фрезерования».
Задача модуля — дать максимально доступный и простой способ превратить Gerber‑файл (например, .GTL) в траектории обработки и G‑code для ЧПУ, без лишнего интерфейса и без потери ключевого функционала.
Классические Gerber‑«слайсеры»/CAM‑инструменты часто требуют:
- установки большого набора зависимостей;
- сложной настройки окружения;
- наличия интерпретатора (например, Python) и совместимых библиотек;
- при этом некоторые решения не поставляются как готовый исполняемый файл и зависят от конкретной ОС/версии окружения.
MetaCAM решает проблему доступности и встраиваемости: один и тот же функционал доступен через несколько одинаково “легких” способов.
MetaCAM предоставляет лёгкий доступ при разработке и тестировании новых версий метаматериалов, за счёт:
- понятного минималистичного интерфейса;
- API для интеграции в научные/инженерные системы;
- возможности запуска в виде самостоятельной программы.
Поддерживаются пути использования:
- Binary file (Windows / Linux / macOS) — запуск как скомпилированной программы;
- HTTP API — управление через запросы (для автоматизации и интеграции);
- Web Application — минималистичное веб‑приложение;
- Multi‑platform PWA — установка как приложение (iOS, Android, Windows, macOS, Linux и др.) или запуск как обычный сайт.
-
backend/— FastAPI backend- разбор Gerber RS‑274X (апертуры, вспышки, штрихи, регионы)
- генерация траекторий для NCC (Non‑Copper Clearing) и подготовка данных превью
- генерация базового G‑code (GRBL‑совместимый стиль)
- файловое хранение проектов/конфигов/артефактов (
backend/data/, в Docker монтируется как volume)
-
frontend/— Vite + React + Tailwind- пошаговый “wizard” настройки
- канвас‑превью с панорамированием/зумом
- проекты и последние конфиги
- вкладка «О приложении» с QR на GitHub
-
docker/— деплой через Docker Compose- Nginx отдаёт статику фронта и проксирует
/api/v1/*на backend - кеширование и rate‑limit под сценарий “один пользователь”
- Nginx отдаёт статику фронта и проксирует
Внутри используются распространённые для CAM задачи и методы:
- Polygon offsetting / tool clearance: геометрическое “расширение/сужение” областей на величину радиуса инструмента (для расчёта безопасных зон обработки).
- Pocket clearing (area clearing): заполнение области траекторией с заданным overlap (подходы типа seed‑fill/спирального заполнения).
- Path ordering / connection: упорядочивание и “склейка” сегментов для уменьшения холостых перемещений; применяется пространственный индекс (R‑tree).
Из папки docker/:
docker compose up -d --buildОткрыть:
- UI:
http://localhost/ - API:
http://localhost/api/v1
В корне репозитория (рядом с frontend/, backend/, docker/) создай .env:
METACAM_API_URL=http://<HOST>Фронтенд читает это значение в рантайме через /env.js, который генерируется контейнером frontend.
В дипломном комплексе MetaCAM предполагается как модуль, который можно вызывать:
- как исполняемый файл (CLI),
- либо через HTTP API.
Типовые параметры интеграции (концептуально):
- входной файл Gerber (
.gbr/.gtl/...) - конфигурация генерации (единый конфиг NCC + Milling: диаметр инструмента, overlap, margin, feedrate и т.д.)
- путь выходного G‑code (
.nc) - директория проекта/данных (для сохранения артефактов и кэширования)
- режим работы:
serve(API сервер) /run(одиночная генерация)
Примечание: конкретный CLI‑интерфейс зависит от сборки бинарника и может отличаться по флагам, но смысл параметров сохраняется.
- Спецификация Gerber RS‑274X (Ucamco):
https://www.ucamco.com/en/gerber - Справочник по G‑code / GRBL:
https://github.com/gnea/grbl/wiki - Геометрическая база для clearance/offset (Minkowski sum):
https://en.wikipedia.org/wiki/Minkowski_addition