CNC programming is the foundation of modern manufacturing, enabling machines to cut, drill, and shape parts with extreme precision. To learn CNC programming effectively, you must master G-codes, M-codes, coordinate systems, and tool offsets. This guide provides a practical, step-by-step approach based on industry standards (ISO 6983) and real-world machining practices.
01Core Concepts You Must Know
G-codes (Preparatory Functions)
Control machine movements and modes. Common examples:
G00 – Rapid positioning (move fast without cutting)
G01 – Linear interpolation (straight line cutting)
G02 – Circular interpolation clockwise
G03 – Circular interpolation counterclockwise
G90 – Absolute positioning
G91 – Incremental positioning
M-codes (Miscellaneous Functions)
Control auxiliary machine actions:
M03 – Spindle on (clockwise)
M05 – Spindle stop
M08 – Coolant on
M30 – Program end and rewind

Coordinate Systems
Machine Zero – Fixed reference point on the machine
Work Zero (Part Zero) – Programmable origin set by G92 or work offsets (G54–G59)
Absolute vs. Incremental – Use G90 for absolute coordinates (all positions from a single zero), G91 for incremental (each move from current position)
Tool Offsets (Length & Diameter)
Compensate for actual tool dimensions using H (length offset) and D (diameter offset) codes.
02Step-by-Step CNC Programming Process
Step 1: Analyze the Engineering Drawing
Identify dimensions, tolerances, features (holes, pockets, contours), and material. Example: A 100×80×20 mm aluminum block requires a 50×40 mm rectangular pocket, 5 mm deep.
Step 2: Select Cutting Tools and Parameters
Tool diameter: 10 mm end mill
Spindle speed: 3000 RPM
Feed rate: 500 mm/min
Depth per pass: 2 mm
Step 3: Write the Program (Manual Example)
O1001 (RECTANGULAR POCKET)
G90 G17 G21 G40 G80 (Absolute, XY plane, metric, cancel offsets)
G54 (Work coordinate system)
M06 T01 (Change to tool 1)
M03 S3000 (Spindle on, 3000 RPM)
G00 X10 Y10 Z5 (Rapid to start point above part)
G01 Z-2 F100 (Plunge first cut)
G01 X90 F500 (Cut right side)
G01 Y70 (Cut top side)
G01 X10 (Cut left side)
G01 Y10 (Cut bottom side)
G00 Z5 (Retract)
G00 X0 Y0 (Return to home)
M05 (Spindle off)
M30 (End)

Step 4: Simulate and Verify
Use a CNC simulator (e.g., LinuxCNC, or built-in machine simulation) to check for collisions, overtravel, or wrong moves. Always simulate before running on real material.
Step 5: Run on Machine (Test in Air First)
Set work offset (G54) by touching off the part
Load program
Run with “Single Block” and low rapid override
Verify first part with calipers/micrometer
03Common Real-World Case: Drilling 6 Holes on a Pitch Circle
A workshop operator needs 6 equally spaced holes on a 60 mm diameter circle, 10 mm deep. Using G-code with a canned cycle (G81):
G90 G54 G17
G00 X30 Y0 (Hole 1 position)
G81 Z-10 R2 F200 (Drill cycle)
G68 X0 Y0 R60 (Rotate 60 degrees – but simpler: calculate coordinates)
Alternative manual coordinates:
Hole 1: (30,0)
Hole 2: (15,25.98)
Hole 3: (-15,25.98)
Hole 4: (-30,0)
Hole 5: (-15,-25.98)
Hole 6: (15,-25.98)
Write each with X Y and repeat G81.
04Safety and Quality Rules (ISO 12100)
Never leave the machine unattended during program execution
Always set a safe tool change position (e.g., G91 G28 Z0)
Use feed hold and emergency stop as needed
Verify tool offsets before cutting
05Actionable Recommendations to Master CNC Programming
1. Start with simple 2D parts – mill a square, drill a hole, then a pocket.
2. Practice writing code by hand for 10 different features before using CAM software.
3. Use a free simulator – e.g., CNC Simulator Pro (trial) or NCViewer.
4. Study official documentation – Download the ISO 6983 standard summary from national standards bodies (e.g., ANSI, DIN).
5. Keep a reference card of G-codes and M-codes near your machine.
Core takeaway: CNC programming is systematic – understand G01, G02, G03, work offsets, and canned cycles. Every complex part is just a sequence of these basic moves. Commit to writing one program daily, simulate it, and validate the toolpath. This practice builds the precision and confidence needed for professional machining.




