На данный момент мы имеем код в виде:
- Либо линия G01
- Либо дуга G02 и G03
- Либо перемещение G00
- Либо служебные коды.
Значит, четвертую координату нужно приписать только первым двум пунктам.
Причем, для дуги она изменяется, для прямой нет. Еще один нюанс, четвертую координату нужно дописать как для начала линии / дуги, так и для конца. Т.к. при обработке угла нужно сначала нож повернуть, а потом уже ехать. Т.е. нужно править функцию generate_gcode.
По интерфейсу, нужно придумать логичное место для "галки" или реализовать через библиотеку инструмента или еще как-то.
По параметрам станка, если делать через библиотеку инструментов, то можно обойтись без постпроцессора. По умолчанию выставить стандартные настройки, но если у кого-то появится необходимость их можно будет изменить.
Со сменой инструмент тоже вопрос решаемый. Точнее уже решенный

. Если при смене произойдет сдвиг, то есть несколько вариантов:
1. В коде смены инструмента задаем новую систему координат используя Gкод
2. Помимо второго инструмента создаем дополнительные точки ориентации и при помощи них задаем необходимый сдвиг.