Предлагаю отвлечённо посмотреть на процесс.
1. Исходный файл чертежа хранится в px.
2. px однозначно связаны с дюймами (90) и мм (3.5...).
3. Выходной файл либо в мм, либо в дюймах. С точки зрения EMC² это только G20/21 строчка. Сами цифры - это масштабирование.
4. В Inkscape всё чертится в px, смена масштаба линеек и сетки сам чертёж не меняет.
5. В Inkscape нет масштаба (я не нашёл) как в многих чертёжных программах (т.е. нельзя задать "1:4", его как раз подменяют Orientation points)
Фактически, возможно задать масштаб только при помощи нашей рамки Orientation points, выкинув orientation_scale.
Масштаб линии на чертеже относительно Orientation points уже задаёт всё необходимое (Orientation points = 0(0,0,0),X(100,0,0),Y(0,100,0), длина линии OX=100мм=350px=4", если какой-то объект на чертеже имеет размер 50mm, то он сам собой получится правильным в результирующем G-коде, если преобразовывать дюймы/мм на стадии вывода)
6. В реальном мире (в дюймах или мм) даются: Area radius, все параметры фрез.
7. Процедуры Inkscape работают в px, поэтому обязательно надо конвертировать наши (причём для одних это mm, для других - in) единицы в px
8. Наши Orientation points задают только плоскость в 3D, а не куб (там требуется 4 точки!!!). Возможно сейчас самый повод сделать четвёртую точку Z (через 3D диагональ от точки O). Координаты точек направляющего куба 0(0,0,0),X(100,0,0),Y(0,100,0),Z(100,100,100). Такой куб задаст полный переход от реального мира обратно в плоские px (предполагаем пространство Inkscape однородным по px).
9. Отдельно останется только 1 параметр добавить к четвёртой Orientation point Z: Z-высоту в пространстве px (аналог самой длины линии OX, OY Orientation points). Наше преобразование это (XOYZ)→(X'O'Y'Z') и обратно. Можно либо честно сделать, либо костыли постоянно подставлять.
Выводы
1. Вместо 3-х точек XOY по две координаты сделать 4: XOYZ по 4 координаты и добавить Z-высоту.
2. Убрать orientation_scale как класс
3. Параметр units использовать только как G20/G21 в EMC² коде, всё масштабирование делать кубом, т.е. для перехода в дюймы будет достаточно изменить цифры в скобках у Orientation points.
4. Если хочется привязать units к автопересчёту in/mm, то точка смещения O в px пространстве должна остаться на месте, а размер рёбер куба XOYZ должен масштабироваться, предполагая её центром координат

При этом надо не забыть, что так же придётся пересчитывать все параметры скоростей и т.п. у библиотеки инструментов!
P.S. пары муфт будет достаточно? наконец-то purelogic готов её предоставить.