Эта тема создана для документации, обсуждения и предложения новых пре- и пост-процессоров для 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]