Конвертация G-кода. Реально ли?
Добавлено: 17 окт 2024, 12:43
Всем доброго времени суток.
Заранее прошу простить, если ошибся разделом и не туда воюю.
Я несчастный обладатель максимально несерьезной китайской игрушки -- CNC-3018. Это (если кто не знает) GRBL-станок фрезерно-гравировочный, с платой управления типа "Дятел". Подключается к компу оно шнурком USB, управляется программами типа Candle.
Я на нем режу, в основном, оргстекло, для создания таких вот вещей: Для этого создаю 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-код. Если знаете таковое -- не сочтите за труд, пните в нужном направлении, улетая, скажу, спасибо.
Заранее прошу простить, если ошибся разделом и не туда воюю.
Я несчастный обладатель максимально несерьезной китайской игрушки -- CNC-3018. Это (если кто не знает) GRBL-станок фрезерно-гравировочный, с платой управления типа "Дятел". Подключается к компу оно шнурком USB, управляется программами типа Candle.
Я на нем режу, в основном, оргстекло, для создания таких вот вещей: Для этого создаю 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-код. Если знаете таковое -- не сочтите за труд, пните в нужном направлении, улетая, скажу, спасибо.