For anyone who's written even a little code in most any other language, and knows how to use a manual mill or lathe, learning Gcode is not all that difficult. Knowing how your machine moves the cutting bit in the X-Y-Z coordinate system is half the learning process, and you already know that
On the current turbine I'm making, the back plate where the steam exits, also holds one of the bearings for the center shaft, and of course needs some holes for the spent steam to get out.
All those trapezoidal holes are identical, so I only need to write the Gcode to mill one hole, and then have the code tell the machine to rotate the work plane to the start point of the next hole, and start milling that one. That process is repeated 8 times, which is accomplished by calling the subroutine that rotates the work plane, 8 times,... that sub then calls the trapezoid hole subroutine once. Below is the Gcode followed by a video:
% Title: Bearing Plate Windows
% Purpose: Mill 8 trapezoidal steam-exit windows
% start at 3:00 hole
% Use 2mm end mill.
% X0, Y0 = center of full circle bearing plate
% Z0 = top surface of stock
%
G20 (set inchs/minute mode)
G94 (set feed rate to inchs/minute mode)
G01 (set linear mode)
#1 = 0 (initial Z position)
#3 = 22.5 (set & increment degrees of rotation for next hole)
#4 = 3 (feed rate)
#5 = 0.005 (milling depth)
#6 = #3 (Incremental constant)
#7 = #1 (incremented hole depth)
G68 A0 B0 R0 (Reset Rotation of X Y Coordinate System)
F44 Z0.1 (move Z above surface)
X2.762 Y0.147 (move to drilled hole at 3:00)
Z[0.005 + #1] (rapid drop to near surface)
M98 P42 Q8 (call sub O42 Q times)
G68 A0 B0 R0 (Reset Rotation of X Y Coordinate System)
% X2.762 Y0.147 (move to first hole at 3:00)
F64 Z0.1 (move Z up)
M30
% <<<<<<<<<<<<<<< milling opperation is complete! >>>>>>>>>>>>>>>>
% <<<< Begin Subroutine >>>>
O42 (begin subroutine O42)
F42 X2.762 Y0.147 (move to next hole)
F8 Z#1 (move Z to top surface)
F#4 X2.770 Y0.140 (move into corner)
M98 P52 Q23 (call sub O52 Q times)
#7 = 0 (reset incramented depth)
F22 Z0.050 (raise Z above surface)
G68 A0 B0 R#3 (Rotate X Y Coordinate System #3 degrees)
#3 = [#3 + #6] (calculate rotation for next hole)
M99 (end of subroutine O42)
% <<<<<<<<<<<<<<< milling opperation is complete! >>>>>>>>>>>>>>>>
% <<<< Begin Subroutine >>>>
O52 (begin subroutine O52)
#7 = [#7 - #5] (decrement milling depth)
F1 Z#7 (plung mill Z to next milling depth)
F#4 (set general milling feed rate)
G3 X2.612 Y0.931 R2.774 (mill across top of window)
G1 X1.764 Y0.58 (mill down side of window)
G2 X1.851 Y0.140 R1.856 (mill window bottom)
G1 X2.770 Y0.140 (mill to start corner)
M99 (end of subroutine O52)