Как создать g code из 3d модели?
Может вам просто использовать подходящий инструмент?
Нет, синема хоть сколько дэ не для станков.
Для этой задачи есть CAM-системы. Это такой зверь в который загоняется 3D-модель, настраивается  система координат и строится технологический процесс. С допусками на обработку,, оптимизацией траектории инструмента, корректировками, указанием смены инструмента и т.д.
Но есть нюанс. Нюанс называется связка "станок+стойка", в рамках CAM имеющая вид  конкретного препроцессора под конкретную стойку и типа станка - 4 оси бывают разные. Есть т.н. 3.5, которые тоже 4, да не очень. В частности поворотный стол на некоторых умеет крутиться только на 180, а не на 360, в итоге команда на поворот более 180 выдаст ошибку на железе, хотя симуляция отработала. Иными словами G-код для одной стойки может быть весьма непохож на код для другой стойки, особенно по части понятий стойки относительно положения осей. В своё время я плотно работал со SprutCAM, поскольку там были мои стойки и типы станков и модельки любой сложности корректно перелопачивались в код, который успешно отрабатывался стойкой.
Но систем гораздо больше. Можете ознакомиться с рынком, обычно в доках есть модели стоек и станков. 
А вот по вопросу исходной модели.. ну CAD-файлы тот же Sprut ест любые. Кормил его sldprt, iges, step, m3d.. чем только не кормил, но насчет C4D ничего не скажу. "Не по феншую" оно точно, но экспорт в iges и stl там есть.
Так же многие CAM-системы, вроде MasterCAM или SurfCAM любят (во всяком случае могут) работать с облаком точек и даже парочка плотно связана с Rhino. Соответственно перегнать что-то из C4D в нужный формат не проблема. Вопрос требований точности. Импорт-Экспортные операции им явно не на пользу. Именно поэтому расчётный софт по гребным винтам часто даёт набор координат по которой CAM уже сама строит поверхность. Так нет проблем с кривизной поверхностей, переброшенных 10 раз из формата в формат.