Конвертация G-кода. Реально ли?

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
NewPlayer
Новичок
Сообщения: 3
Зарегистрирован: 17 окт 2024, 11:50
Репутация: 1
Контактная информация:

Конвертация G-кода. Реально ли?

Сообщение NewPlayer »

Всем доброго времени суток.
Заранее прошу простить, если ошибся разделом и не туда воюю.

Я несчастный обладатель максимально несерьезной китайской игрушки -- CNC-3018. Это (если кто не знает) GRBL-станок фрезерно-гравировочный, с платой управления типа "Дятел". Подключается к компу оно шнурком USB, управляется программами типа Candle.

Я на нем режу, в основном, оргстекло, для создания таких вот вещей:
20240903_202654.jpg (576 просмотров) <a class='original' href='./download/file.php?id=212615&sid=047040d650ab0724ac20a7914e2b33a6&mode=view' target=_blank>Загрузить оригинал (3.05 МБ)</a>
20240917_160751.jpg (576 просмотров) <a class='original' href='./download/file.php?id=212616&sid=047040d650ab0724ac20a7914e2b33a6&mode=view' target=_blank>Загрузить оригинал (3.9 МБ)</a>
Для этого создаю G-код в Inscape с помощью плагина gcodetools. Код получается не идеальным, лишние подъемы фрезы, после каждого прохода, нет возможности задать очередность обработки, нет возможности задать разные глубины, разным элементам, всё режется на одну и туже глубину, с одним и тем же шагом. В общем, недостатков куча, но заморочившись, можно получить нужный результат.

Однако, мне довелось поработать на более серьезном станке, под управлением LinuxCNC. И очень мне зашла программулина NativeCAM. ОЧЕНЬ удобная, простая в работе, и что самое важно -- делающая именно то что мне надо! Мне не нужно рисовать какие-то сложные детали, не нужно искать часами, где задать глубину и шаг резки... Мне нужно, вот буквально, то что делает NativeCAM -- добавляем прямоугольничек, сразу подразумевается -- это путь фрезы, остается только задать размеры и глубину. И готово -- никаких лишних подъемов фрезы, и погружение фрезы под углом -- ну просто красота.

Установил виртуальную машину, накатил туда LinuxCNC, с матами и прибаутками прикрутил NativeCAM. Заработало! Ну думаю, вот оно -- счастье моё... Создам код, перекину в винду, скормлю станку и можно устраивать перекур. Не тут-то было.
Внезапно оказалось, что G-код бывает разным. Причем, сильно разным.
gcodetools выдает код, который понимает Candle (программа управления станком), в таком виде:
G00 Z3.000000
G00 X100.098310 Y63.401689
G01 Z-0.500000 F70.0(Penetrate)
G01 X113.901690 Y63.401689 Z-0.500000 F400.000000
G01 X113.901690 Y49.598312 Z-0.500000
G01 X100.098310 Y49.598312 Z-0.500000
G01 X100.098310 Y63.401689 Z-0.500000
G00 Z3.000000
(End cutting path id: rect3-96-3)
(Start cutting path id: rect3-96-3)
(Change tool to Cylindrical cutter)
G00 Z3.000000
G00 X100.098310 Y63.401689
G01 Z-0.750000 F70.0(Penetrate)
G01 X113.901690 Y63.401689 Z-0.750000 F400.000000
G01 X113.901690 Y49.598312 Z-0.750000
G01 X100.098310 Y49.598312 Z-0.750000
G01 X100.098310 Y63.401689 Z-0.750000
G00 Z3.000000

Кривой, косой, но понятный и простой код. Станок его выполняет без проблем.
Однако, NativeCAM выдает код совсем другого вида:
o<rectangle_002_active> if [1]
o<rectangle_002_00> if [50.800000 GT 69.000000] (if narrower than high)
#<h10> = [69.000000]
#<w10> = [50.800000]
#<rot10> = [90.0 + 54.000000]
o<select> CALL [31] [0] [-#<h10> / 2] [0] [#<h10> / 2]
o<select> CALL [32] [2] [-#<w10> / 2] [0] [#<w10> / 2]

o<rectangle_002_00> else
#<w10> = [69.000000]
#<h10> = [50.800000]
#<rot10> = 54.000000
o<select> CALL [32] [0] [#<w10> / 2] [0] [-#<w10> / 2]
o<select> CALL [31] [2] [-#<h10> / 2] [0] [#<h10> / 2]
o<rectangle_002_00> endif

#<fcs10> = [1.016000]
o<get_min> CALL [37] [2] [0.000000] [#<h10> / 2]

o<select> CALL [33] [1] [0.000000] [#<surface>] [#<surface> - #<wp_depth> / 2] [#<surface> - #<wp_depth> / 4] [#<bottom> + #<wp_depth> / 4] [0]


... и Candle (а так же, программы-аналоги) его не понимают, от слова "совсем". При этом LinuxCNC понимает оба вида кода.

Отсюда вопрос -- реально ли конвертировать этот сложный nativecam-код в простой g-код (координаты,глубина, подача)?

ЗЫ: Долго искал, но так и не нашел альтернативу NativeCAM под винду, ну или хотя бы под Линукс, но чтобы на выходе был простой g-код. Если знаете таковое -- не сочтите за труд, пните в нужном направлении, улетая, скажу, спасибо.
a321
Мастер
Сообщения: 610
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 70
Контактная информация:

Re: Конвертация G-кода. Реально ли?

Сообщение a321 »

NativeCAM, судя по показанному, выдает совершенно нормальный и рабочий код. Другое дело, что этот код вызывает пдпрограммы типа o<select>, т.е. имя подпрограммы select, get_min и т.п. и или это подпрограмма "объявлена" выше по тексту файла, либо лежит (должна лежать) в месте, типа /home/юзер/linuxcnc/nc_files

Из показанного не ясно, понимает ли контроллер команды G2 G3, или только "прямые отрезки".

Рабочая и кроссплатформенная достаточно простая альтернатива - FreeCAD, в одной программе от эскиза до рабочего g-code, включая симуляцию.
Cvazist
Мастер
Сообщения: 1152
Зарегистрирован: 16 окт 2017, 16:07
Репутация: 97
Контактная информация:

Re: Конвертация G-кода. Реально ли?

Сообщение Cvazist »

Vectric Aspire пробовал?
Простая программа, я в ней всё делаю.
NewPlayer
Новичок
Сообщения: 3
Зарегистрирован: 17 окт 2024, 11:50
Репутация: 1
Контактная информация:

Re: Конвертация G-кода. Реально ли?

Сообщение NewPlayer »

a321 писал(а): Другое дело, что этот код вызывает пдпрограммы типа o<select>, т.е. имя подпрограммы select, get_min и т.п. и или это подпрограмма "объявлена" выше по тексту файла, либо лежит (должна лежать) в месте, типа /home/юзер/linuxcnc/nc_files
Проблема в том, что этот код хотелось бы выполнить в виндовс-среде, на программе Candle, которая таких подпрограмм не понимает.
Линукс же у меня в виртуалке, и я не уверен, что linuxCNC дружит с "дятлом". Просто понравился NativeCAM, и я захотел создавать код в нем, а затем переносить в винду и выполнять Candlе-ом.
a321 писал(а): понимает ли контроллер команды G2 G3, или только "прямые отрезки".
G02/G03 точно понимает.
Весь код сгенерированый плагином gcodetools принимается без проблем (без постпроцессора). Код из ArtCAM тоже обрабатывается (с построцессором grbl).
a321 писал(а): достаточно простая альтернатива - FreeCAD
ФриКАД мне не зашел. Не та концепция. Там создается готовая деталь, что удобно было бы для 3Д-принтера. А мне нужно создавать дырки, пазы, прорези в некой неограниченных размеров заготовке. Т.е. задача стоит не "выпили мне шестеренку", а сделай мне отверстие по таким-то координатам, на такую-то глубину.
Короче, попробовал -- не зашел.
То же касается и АртКАМа. Всякие рельефы гравировать -- да, а для раскроя листовых материалов -- не подходит.
Cvazist писал(а): Vectric Aspire пробовал?
Сейчас, сижу изучаю.
Однозначный ВИН -- адекватный генератор кода. И наклонное врезание умеет, и лишних движений фрезой нет. Русифицирован и довольно прост. Второй ВИН -- понимает файлы Inscape, по мне в последнем проще кроить материал.
Пара минусов (может просто не знаю как сделать):
а) не нашел, как создавать наклонные плоскости. В первую очередь интересуют конусные отверстия (типа как, под головки винтов "впотай").
б) нет одноконтурных шрифтов для гравировки. Вернее есть, но на выходе получается ерунда (жалуется на незамкнутые контуры и либо ничего не делает, либо гравирует шрифт частично)
Впрочем, гравировку можно делать через Inscape, она там получается отлично и шрифт Хёрше есть. Жаль только русские символы Херше не создает...
a321
Мастер
Сообщения: 610
Зарегистрирован: 03 дек 2016, 00:30
Репутация: 70
Контактная информация:

Re: Конвертация G-кода. Реально ли?

Сообщение a321 »

Ну, если "отверстие там-то", то делаете микро-программы для отверстия с центром ХУ и диаметром Р. Вызываете их и пр. Сам такое активно использую. Аналогично с линией, четырехугольником и вриантами обработки плоскости в круге или четырехугольнике (плоскостная, в свою очередь, вызывает периметровую). Всего 5 подпрограмм для примитивов общего характера.


Например, файл line.ngc -
O<line> sub
/Подпрограмма Линия, контур по линии оси фрезы
(высота выполнения 1=Z, 2=Х0; 3=Y0; 4=X2 5=Y2)
G0 X[#2 ] Y[#3]
G01 F[#<_pm>] Z[#1]
G01 F[#<_pb>] X[#4 ] Y[#5]
O<line> endsub

ну и где надо ее вызываете.

Про ФК Вы, видимо, сгоряча. Ну сделайте дежурную поверхность сто на тыщу метров (условно) нужной толщины, и делайте по-быстрому пазы и отверстия нужной формы. Все сразу внутри программы пересчитывается и пр. И когда связанные между собой (размерами) детали, да еще и с зазорами - без такого рода сервиса будет много ошибок и поломанных фрез от забытых подъемов на безопасную высоту

Что до требуемого преобразования - находите тексты подпрограмм и заменяете их вызов на тексты этим подпрограмм. В текстовом редакторе автозаменой правите (рекомендую Geany, прописав файлы ж-кода в класс Haskel (в конфиге, для сервися по сворачиванию блоков кода и пр.). Ну или в консоли чем-то в духе sed.
NewPlayer
Новичок
Сообщения: 3
Зарегистрирован: 17 окт 2024, 11:50
Репутация: 1
Контактная информация:

Re: Конвертация G-кода. Реально ли?

Сообщение NewPlayer »

В общем я выяснил, что мой станок, и программы управляющие им не понимают все эти подпрограммы и переходы. Только плоский, последовательный код. А следовательно мне нужна какая-то программа-конвертер, разворачивающая этот оптимизированный код, с подпрограммами, в простой последовательный код.
a321 писал(а): Про ФК Вы, видимо, сгоряча. Ну сделайте дежурную поверхность сто на тыщу метров (условно) нужной толщины, и делайте по-быстрому пазы и отверстия нужной формы.
Даже разобраться не могу, как это сделать. В ней куча всего лишнего, чего мой станок делать явно не умеет. Мне не нужен универсальный комбайн (с комбайнером), мне нужна специализированная программа. Чем и хорош NativeCAM -- он предлагает ровно то, на что способен станок, даже чуть меньше, основное-базовое... но это немногое он делает удобно быстро и довольно-таки, оптимально.
Что касается Aspire, то в нем разобраться как что делать, получилось довольно-таки быстро. Лишнего -- минимум. Не такой удобный как NativeCAM, но код выдает приличный, при этом понимает файлы Inscape.
a321 писал(а): Что до требуемого преобразования - находите тексты подпрограмм и заменяете их вызов на тексты этим подпрограмм. В текстовом редакторе автозаменой правите (рекомендую Geany, прописав файлы ж-кода в класс Haskel (в конфиге, для сервися по сворачиванию блоков кода и пр.). Ну или в консоли чем-то в духе sed.
Не это слишком муторно... Искать где-то тексты этих подпрограмм (черт его знает где, кстати), перелопачивать код в поисках точек вызова... консоль та же... Может для линуксоида это как на кухню за чаем сходить, а для меня консоль осталась в далеких бородатых 80-х. Всегда считал, что компьютеры должны упрощать жизнь. Нажал пару кнопок мышой, а лучше голосом скомандовал, и получил результат, а не вводить двоичный код полночи, тщательно сверяясь с бумажными записями в тетрадке... Одна только установка NativeCAM меня порадовала... небольшой плагин на десяток килобайт устанавливал двое суток... и так и не смог установить самостоятельно, пришлось просить помощи. :hehehe:
Если нет удобной программы конвертирующей сложный g-код в простой, так чтобы за несколько кликов мышей, то для меня теряется вся прелесть NativeCAM. Увы, придется с этим жить...
Ответить

Вернуться в «LinuxCNC»