Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WEB APPLICATION: https://vsu-metacam.steptflow.tech

MetaCAM — Gerber → G-code

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 под сценарий “один пользователь”

Используемые алгоритмы (стандартные CAM‑подходы)

Внутри используются распространённые для CAM задачи и методы:

  • Polygon offsetting / tool clearance: геометрическое “расширение/сужение” областей на величину радиуса инструмента (для расчёта безопасных зон обработки).
  • Pocket clearing (area clearing): заполнение области траекторией с заданным overlap (подходы типа seed‑fill/спирального заполнения).
  • Path ordering / connection: упорядочивание и “склейка” сегментов для уменьшения холостых перемещений; применяется пространственный индекс (R‑tree).

Запуск всего приложения (Docker Compose)

Из папки docker/:

docker compose up -d --build

Открыть:

  • UI: http://localhost/
  • API: http://localhost/api/v1

Единая настройка адреса API для фронтенда (один файл .env в корне)

В корне репозитория (рядом с 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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages