Новости ChatGPT

Генерируем G-code прямо в браузере: как я написал карманную CAM-систему на JS+WebGL, чтобы не запускать тяжелый CAD

Всем привет. Я в 3D-индустрии уже 30 лет, есть свой фрезерный станок. И, как и многих владельцев ЧПУ, меня преследовала одна и та же боль.

Чтобы вырезать простую плоскую деталь — фланец, прокладку, панель управления или нервюру — нужно пройти через "ад" тяжелого софта. Запустить условный Fusion 360 или ArtCAM (пока он загрузится, можно чай заварить), создать проект, импортировать DXF, настроить вектора, настроить инструмены, сохранить... Это избыточно долго для простых 2D-задач.

Мне нужен был инструмент по принципу "Автомата Калашникова": Загрузил DXF → Нажал кнопку → Получил G-code. Без регистраций, облаков, установки и лишних кликов.

В итоге я написал Single Click CAM. Это полностью браузерный инструмент (Vanilla JS + Three.js), который делает подготовку файла к резке делом нескольких секунд.

А еще это был мой первый полноценный эксперимент по разработке сложного инженерного софта в паре с ИИ. Спойлер: нейросети (в данном случае Gemini) уже способны писать не только "Hello World", но и вполне рабочую математику, если ими управляет опытный инженер.

Кому это нужно (кроме меня)?

Изначально я делал это для себя, чтобы быстро кроить листовые материалы. Но в процессе понял, что у инструмента есть два важных применения для бизнеса:

  1. Мастерские фрезеровки на заказ.
    Большая часть заказов — это 2D раскрой. Клиенты постоянно пишут: "Посчитайте, сколько будет стоить вырезать вот эту кракозябру?". Менеджер тратит время, открывает файл, меряет длину кривых...
    Этот сервис можно использовать как калькулятор. Закинул файл — он сразу показал общую длину реза (Total DXF Length) и количество врезок. Умножил на тариф — цена готова. Можно даже дать ссылку клиенту, чтобы он сам прикинул стоимость.

  2. Мейкеры и хоббисты.
    Те, кто не хочет пиратить ArtCAM или платить за подписку Fusion, но кому нужно просто вырезать деталь на домашнем станке.

Что под капотом? (Tech Stack)

Я сознательно отказался от React, Vue и тяжелых фреймворков. Я считаю, что интерфейс инженерного софта должен быть под полным контролем, каждый пиксель на счету. Поэтому — чистый jаvascript (ES Modules).

Для визуализации используется Three.js. Весь софт весит копейки и грузится мгновенно.

1. Автоматический Нестинг и Оффсеты

Самая большая проблема простых CAM-ов — они не понимают, где "дырка", а где "внешний контур". Обычно пользователю приходится тыкать мышкой и указывать: "это режем внутри, это снаружи".

Я реализовал алгоритм, который сам определяет вложенность контуров.

  • Синие линии на скриншотах — это рассчитанный оффсет (смещение на радиус фрезы). Он строится сразу при загрузке.

  • Софт автоматически понимает: если контур внутри другого — это отверстие (режем изнутри). Если снаружи — это деталь (режем снаружи).

2. Спиральное врезание

Фрезеровщики знают: вертикальное врезание (Plunge) — это зло. Фреза горит, нагрузка на подшипники дикая.
Здесь реализовано наклонное врезание (Ramping) и спиральный заход в отверстия. Фреза заходит в материал плавно, по спирали, что бережет инструмент.

3. Мосты (Bridges)

Килер-фича, на которую я потратил немало времени. Чтобы деталь при финишном проходе не "отстрелила" и не сломала фрезу, нужны перемычки.
В интерфейсе есть режим Bridge Mode. Включил, кликнул в нужное место на контуре — мост готов (для всех контуров в области действия моста). Софт сам поднимет фрезу на безопасную высоту и опустит обратно.

4. Таймлайн и Визуализация

Снизу есть ползунок (Timeline). Можно прокрутить его и посмотреть симуляцию движения фрезы: где она поднимется, где опустится, в каком порядке будут вырезаться детали. Оранжевые линии — рабочий ход (G1), голубые — аутлайн.

ИИ как Экзоскелет для инженера

На написание этого ушло не "пара выходных", а приличное время, но без нейросети (Gemini) на это ушли бы месяцы. Я использовал ИИ не просто как "автокомплит", а как полноценного соавтора кода.

Мой вывод: ИИ всё еще не может придумать архитектуру и логику продукта за вас. Если вы не понимаете, как должен работать CAM "под капотом", вы не сможете поставить задачу.

Но если вы знаете «Что» нужно сделать, ИИ великолепно справляется с тем «Как» это сделать.

Весь код визуализации на Three.js, математика пересечений, парсинг DXF и генерация строк G-кода были написаны в плотном диалоге с нейросетью. Я выступал в роли Tech Lead, определяя логику и требуя исправлений, а ИИ взял на себя реализацию сложной геометрии, кватернионов и рутину верстки.

Это не "Джуниор", за которым надо переписывать. Это мощнейший ускоритель, который позволяет инженеру-одиночке создавать продукты уровня целой команды разработки.

Планы и ссылка

Сейчас у меня есть мысли о создании полноценного 3D-редактора в браузере. С таким же минималистичным, "инженерным" интерфейсом, без лишней мишуры, но с серьезными возможностями моделирования. Но это огромная работа, и мне нужно понять, есть ли на это спрос.

А пока — пользуйтесь CAM-ом. Он полностью бесплатен.

? Ссылка на инструмент: https://schoolscience.org/cam/index.htm

Если этот инструмент сэкономил вам рабочее время или избавил от рутины — внизу интерфейса есть кнопка "На чай автору". Буду благодарен за поддержку, это мотивирует развивать проект дальше.

Жду ваших комментариев: каких функций не хватает? Глючит ли на ваших DXF?