Gcodetools - пре- и пост-процессоры

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Gcodetools - пре- и пост-процессоры

Сообщение Nick »

Эта тема создана для документации, обсуждения и предложения новых пре- и пост-процессоров для CAM расширения Inkscape - Gcodetools.
Основная необходимость темы - документация, а то уже даже я начал забывать, чего там понаписано :).

Общий синтаксис

Пре- и пост-процессоры определяются на вкладке Preferences. Процессоры могу объединяться для последовательного применения. Синтаксис процессоров выглядит как обычный скрипт, команды разделяются ";", параметры команд пишутся в круглых скобках.

Примеры

Быстрое заглубление на глубину реза -5мм (стандартный препроцессор Fast pre-penetrate):
regex("G01 Z([0-9\.\-]+).*\(Penetrate\)", lambda match: "G00 Z%f (Fast pre-penetrate)\n%s" %(float(match.group(1))+5, match.group(0)));
Отражение относительно оси Y и последующая параметризация Gкода:
flip(y);parameterize();


Препроцессоры

join_paths

Объединяет все контуры, также соединяет все близко расположенные части контуров. Этот препроцессор упрощает работу с файлами dxf.

Синтаксис

join_paths([допуск]);

Примеры

join_paths();
join_paths(0.01);

clip_angles

Обрезает все острые углы контуров. Создан для 4-осевой гравировки стекла алмазными дисками. Может быть полезен для недорезания углов.

Синтаксис

clip_angles(радиус[, допуск]);
Угол тупее чем 180-допуск, не считается углом.

Примеры

clip_angles(10,10);
clip_angles(1,20);
clip_angles(10);

Постпроцессоры

remap

Syntax:

remap("change from"->"change to",...,"change from"->"change to").
Remap works very like replace function the only difference that all replaces are done together not one after another.

Example:

Lets take the one line of Gcode: "x 10 y 20".
remap("x"->"y","y"->"z"); will give "y10 z20"
But if we'll do to consecutive replaces we'll have the following:
Original: "x 10 y 20"
after replace "x" -> "y" : "y 10 y 20"
after replace "y" -> "z" : "z 10 z 20"
See the difference?

round

Syntax:

round(int precision)
Rounds all floating point values to specified precision. Some controllers raises an error if it sees a floating point with long fraction part.

Example:

round(4);
will change "G01 Y 3.9912333333 X 11.0000003233 F 400.0000000000" to "G01 Y 3.9912 X 11.0000 F 400.0000"

regexp

Syntax:

regexp (str patern, str replacement);
Makes regular expression replace on each string. For regular expression syntax see the python's re. manual: http://docs.python.org/library/re.html .
You can use pythons r" " string format to escape "\" correctly. (Ex. regexp(r"G0(\d)", r"G\1");)

Example:

regexp(r"G0(\d)", r"G\1");
Replaces all G01, G02 ... G09 to G1, G2 ... G9.
Will change "G01 Y 3 X 11 F 400" to "G1 Y 3 X 11 F 400"

parameterize

Параметризует Gкод. Т.е. приводит все команды из простого статического вида:
G03 X123.730600 Y221.630274 Z-0.125000 I-5.188815 J-2.869567
в параметризованный, где можно задавать смещения, масшаб осей и подачу изменяя всего 1-2 параметра вначале файла с Gкодом:
#8 = 0 (Z axis offset)
#6 = 0 (X axis offset)
#7 = 0 (Y axis offset)
#10 = 1 (XY Scale factor)
#11 = 1 (Z Scale factor)
#21 = 400.000000 (Feed definition)
#20 = 100.000000 (Feed definition)
(...)
G03 X[167.833931*#10+#6] Y[-59.388993*#10+#7] Z[-0.125000*#11+#8] I[0.000005*#10] J[-23.831383*#10] F [#21]

Синтаксис

parameterize();

Пример

parameterize();

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