Всем привет. Я в 3D-индустрии уже 30 лет, есть свой фрезерный станок. И, как и многих владельцев ЧПУ, меня преследовала одна и та же боль.
Чтобы вырезать простую плоскую деталь — фланец, прокладку, панель управления или нервюру — нужно пройти через "ад" тяжелого софта. Запустить условный Fusion 360 или ArtCAM (пока он загрузится, можно чай заварить), создать проект, импортировать DXF, настроить вектора, настроить инструмены, сохранить... Это избыточно долго для простых 2D-задач.
Мне нужен был инструмент по принципу "Автомата Калашникова": Загрузил DXF → Нажал кнопку → Получил G-code. Без регистраций, облаков, установки и лишних кликов.
В итоге я написал Single Click CAM. Это полностью браузерный инструмент (Vanilla JS + Three.js), который делает подготовку файла к резке делом нескольких секунд.
А еще это был мой первый полноценный эксперимент по разработке сложного инженерного софта в паре с ИИ. Спойлер: нейросети (в данном случае Gemini) уже способны писать не только "Hello World", но и вполне рабочую математику, если ими управляет опытный инженер.

Кому это нужно (кроме меня)?
Изначально я делал это для себя, чтобы быстро кроить листовые материалы. Но в процессе понял, что у инструмента есть два важных применения для бизнеса:
Мастерские фрезеровки на заказ.
Большая часть заказов — это 2D раскрой. Клиенты постоянно пишут: "Посчитайте, сколько будет стоить вырезать вот эту кракозябру?". Менеджер тратит время, открывает файл, меряет длину кривых...
Этот сервис можно использовать как калькулятор. Закинул файл — он сразу показал общую длину реза (Total DXF Length) и количество врезок. Умножил на тариф — цена готова. Можно даже дать ссылку клиенту, чтобы он сам прикинул стоимость.Мейкеры и хоббисты.
Те, кто не хочет пиратить ArtCAM или платить за подписку Fusion, но кому нужно просто вырезать деталь на домашнем станке.
Что под капотом? (Tech Stack)
Я сознательно отказался от React, Vue и тяжелых фреймворков. Я считаю, что интерфейс инженерного софта должен быть под полным контролем, каждый пиксель на счету. Поэтому — чистый JavaScript (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?

Комментарии (27)

VBKesha
27.11.2025 14:58на JS+WebGL, чтобы не запускать тяжелый CAD
Для меня сейчас вопрос, что тяжелей, "тяжелый" CAD или "легкое" приложение JS+WebGL
PS. Хотя на глаз работает шустро.

xSVPx
27.11.2025 14:58Вы ведь шутите ? Есть вагон и маленькая тележка готовых мелких камов начиная от каких-нибудь дескпрото и заканчивая флаткамами.
И в отличии от вашего решения они хоть как-то протестированы людьми.
Вообще в чем проблема с серьезными камами мне не очень понятно. Если они сильно долго стартуют - надо всё-таки ssd купить, хотябы бу с авито гигов на 60 рублей за триста...
ЗЫ. Для раскроя какие-то свои совершенно камы есть в которых буквально пяток кнопок.

MegaHard
27.11.2025 14:58В чём писали, сколько времени суммарно потратили на разработку и тестирование?

mozg4d Автор
27.11.2025 14:58Visual studio code, недели 3 примерно и еще неделю тестил, дорабатывал

shlmzl
27.11.2025 14:58еще неделю тестил, дорабатывал
Протокол испытаний в студию, какие станки, какие проекты, какие материалы, какие режимы работы, какие результаты. Неделю маловато будет, это месяцы. Устройство повышенной опасности.

MegaHard
27.11.2025 14:58Там только небольшая шапка и конец, остальное сплошной G0/G1, так что тестировать особо нечего. Да и в принципе в обработке принято запускать код осторожно. Хочешь - не хочешь, а горизонтальное движение при воткнутом сверле - это поломка.

dephonica
27.11.2025 14:58Очень круто и потенциально удобно монетизируемо. Как я понимаю, это пока что стадия PoC - не хватает некоторой базовой функциональности и тестирования (у меня почему-то не стал отрисовывать внешний контур), но это наживное.
А то, что сторонних камов много - это хорошо, значит ниша живая и можно найти в ней своё место, камы подвинутся.
Скрытый текст


mozg4d Автор
27.11.2025 14:58хмм.. странно, обычно такое - либо сплайн в сплайне, либо не замкнутый контур

d71
27.11.2025 14:58Это не "Джуниор", за которым надо переписывать. Это мощнейший ускоритель, который позволяет инженеру-одиночке создавать продукты уровня целой команды разработки.
Это лучшая формулировка для обозначения современного ФуллСтека. Утащил :) Спасибо.
Софт буду тестить, хотя раньше не оперировал dxf : полный цикл изучил и использую в FreeCad - но это толсто для большинства задач.

checkpoint
27.11.2025 14:58Круто! Но как самому захостить Ваше решение ? Не хочу загружать к Вам свои файлы. В наше трудное время от облачных решеный надо избавляться, а не плодить их.

mozg4d Автор
27.11.2025 14:58Правой кнопкой мыши, потом - save as. Здесь супер просто, это один HTML файл в который встроено все. Этот файл копируете себе на сервер, готово..


kraken2018
Кроите левой фрезой (стружка вниз) и ничего не будет отстреливать. Перемычки только для толстых материалов, которые за несколько проходов идут. Или для плавких, типа полистирола, потому что заплавившаяся стружка штука неприятная. ПВХ, АКП - перемычки не нужны. Их эже потом еще и зашлифовывать.
Реализуйте импорт pdf, а не только dxf.
А так - круто, завидую реализованной идее, хотя тоже использую ИИ для написания. Но у меня задачки помельче
dizatorr
Тонкие материалы, в том числе фанеру, такая фреза приподнимает, что может привести к нарушению геометрии и прочим радостям. Вплоть до поломки фрезы, если она тонкая.
kraken2018
Мне кажется, вы что-то путаете. Правая фреза выбрасывает стружку вверх, и тянет заготовку вверх, за счет чего заготовка гуляет и вылетает. Стружка при резке левой фрезой не удаляется, а остается в канавке и удерживает изделие. Я пилю почти каждый день, в основном ПВХ, АКП, акрил, реже полистирол, МДФ, дерево, фанеру. И как раз для тонких материалов почти всегда использую левые фрезы. А фанеру и слоистые материалы лучше всего пилить компрессионными фрезами, которые нижний слой стружки удерживают, как левые, а верхний выбрасывают, как правые, и не скалывают верхний слой