Всем доброго времени суток.
Заранее прошу простить, если ошибся разделом и не туда воюю.
Я несчастный обладатель максимально несерьезной китайской игрушки -- 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-код. Если знаете таковое -- не сочтите за труд, пните в нужном направлении, улетая, скажу, спасибо.
Конвертация G-кода. Реально ли?
Re: Конвертация G-кода. Реально ли?
NativeCAM, судя по показанному, выдает совершенно нормальный и рабочий код. Другое дело, что этот код вызывает пдпрограммы типа o<select>, т.е. имя подпрограммы select, get_min и т.п. и или это подпрограмма "объявлена" выше по тексту файла, либо лежит (должна лежать) в месте, типа /home/юзер/linuxcnc/nc_files
Из показанного не ясно, понимает ли контроллер команды G2 G3, или только "прямые отрезки".
Рабочая и кроссплатформенная достаточно простая альтернатива - FreeCAD, в одной программе от эскиза до рабочего g-code, включая симуляцию.
Из показанного не ясно, понимает ли контроллер команды G2 G3, или только "прямые отрезки".
Рабочая и кроссплатформенная достаточно простая альтернатива - FreeCAD, в одной программе от эскиза до рабочего g-code, включая симуляцию.
-
- Мастер
- Сообщения: 1152
- Зарегистрирован: 16 окт 2017, 16:07
- Репутация: 97
- Контактная информация:
Re: Конвертация G-кода. Реально ли?
Vectric Aspire пробовал?
Простая программа, я в ней всё делаю.
Простая программа, я в ней всё делаю.
-
- Новичок
- Сообщения: 3
- Зарегистрирован: 17 окт 2024, 11:50
- Репутация: 1
- Контактная информация:
Re: Конвертация G-кода. Реально ли?
Проблема в том, что этот код хотелось бы выполнить в виндовс-среде, на программе Candle, которая таких подпрограмм не понимает.
Линукс же у меня в виртуалке, и я не уверен, что linuxCNC дружит с "дятлом". Просто понравился NativeCAM, и я захотел создавать код в нем, а затем переносить в винду и выполнять Candlе-ом.
G02/G03 точно понимает.
Весь код сгенерированый плагином gcodetools принимается без проблем (без постпроцессора). Код из ArtCAM тоже обрабатывается (с построцессором grbl).
ФриКАД мне не зашел. Не та концепция. Там создается готовая деталь, что удобно было бы для 3Д-принтера. А мне нужно создавать дырки, пазы, прорези в некой неограниченных размеров заготовке. Т.е. задача стоит не "выпили мне шестеренку", а сделай мне отверстие по таким-то координатам, на такую-то глубину.
Короче, попробовал -- не зашел.
То же касается и АртКАМа. Всякие рельефы гравировать -- да, а для раскроя листовых материалов -- не подходит.
Сейчас, сижу изучаю.
Однозначный ВИН -- адекватный генератор кода. И наклонное врезание умеет, и лишних движений фрезой нет. Русифицирован и довольно прост. Второй ВИН -- понимает файлы Inscape, по мне в последнем проще кроить материал.
Пара минусов (может просто не знаю как сделать):
а) не нашел, как создавать наклонные плоскости. В первую очередь интересуют конусные отверстия (типа как, под головки винтов "впотай").
б) нет одноконтурных шрифтов для гравировки. Вернее есть, но на выходе получается ерунда (жалуется на незамкнутые контуры и либо ничего не делает, либо гравирует шрифт частично)
Впрочем, гравировку можно делать через Inscape, она там получается отлично и шрифт Хёрше есть. Жаль только русские символы Херше не создает...
Re: Конвертация G-кода. Реально ли?
Ну, если "отверстие там-то", то делаете микро-программы для отверстия с центром ХУ и диаметром Р. Вызываете их и пр. Сам такое активно использую. Аналогично с линией, четырехугольником и вриантами обработки плоскости в круге или четырехугольнике (плоскостная, в свою очередь, вызывает периметровую). Всего 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.
Например, файл 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.
-
- Новичок
- Сообщения: 3
- Зарегистрирован: 17 окт 2024, 11:50
- Репутация: 1
- Контактная информация:
Re: Конвертация G-кода. Реально ли?
В общем я выяснил, что мой станок, и программы управляющие им не понимают все эти подпрограммы и переходы. Только плоский, последовательный код. А следовательно мне нужна какая-то программа-конвертер, разворачивающая этот оптимизированный код, с подпрограммами, в простой последовательный код.
Что касается Aspire, то в нем разобраться как что делать, получилось довольно-таки быстро. Лишнего -- минимум. Не такой удобный как NativeCAM, но код выдает приличный, при этом понимает файлы Inscape.
Если нет удобной программы конвертирующей сложный g-код в простой, так чтобы за несколько кликов мышей, то для меня теряется вся прелесть NativeCAM. Увы, придется с этим жить...
Даже разобраться не могу, как это сделать. В ней куча всего лишнего, чего мой станок делать явно не умеет. Мне не нужен универсальный комбайн (с комбайнером), мне нужна специализированная программа. Чем и хорош NativeCAM -- он предлагает ровно то, на что способен станок, даже чуть меньше, основное-базовое... но это немногое он делает удобно быстро и довольно-таки, оптимально.
Что касается Aspire, то в нем разобраться как что делать, получилось довольно-таки быстро. Лишнего -- минимум. Не такой удобный как NativeCAM, но код выдает приличный, при этом понимает файлы Inscape.
Не это слишком муторно... Искать где-то тексты этих подпрограмм (черт его знает где, кстати), перелопачивать код в поисках точек вызова... консоль та же... Может для линуксоида это как на кухню за чаем сходить, а для меня консоль осталась в далеких бородатых 80-х. Всегда считал, что компьютеры должны упрощать жизнь. Нажал пару кнопок мышой, а лучше голосом скомандовал, и получил результат, а не вводить двоичный код полночи, тщательно сверяясь с бумажными записями в тетрадке... Одна только установка NativeCAM меня порадовала... небольшой плагин на десяток килобайт устанавливал двое суток... и так и не смог установить самостоятельно, пришлось просить помощи.a321 писал(а): Что до требуемого преобразования - находите тексты подпрограмм и заменяете их вызов на тексты этим подпрограмм. В текстовом редакторе автозаменой правите (рекомендую Geany, прописав файлы ж-кода в класс Haskel (в конфиге, для сервися по сворачиванию блоков кода и пр.). Ну или в консоли чем-то в духе sed.
Если нет удобной программы конвертирующей сложный g-код в простой, так чтобы за несколько кликов мышей, то для меня теряется вся прелесть NativeCAM. Увы, придется с этим жить...