diff --git a/demo/gcodes/cnc.gcode b/demo/gcodes/cnc.gcode
new file mode 100644
index 00000000..c8989ebc
--- /dev/null
+++ b/demo/gcodes/cnc.gcode
@@ -0,0 +1,183 @@
+T1
+G43 H1
+M03 S18000
+G00 X176.604 Y554.890
+G00 Z10.000
+F4000
+G01 Z-12.100
+F12000
+G02 X183.675 Y561.961 I3.536 J3.536
+G02 X176.604 Y554.890 I-3.536 J-3.536
+F4000
+G00 Z20.000
+G00 X-4.000 Y785.175
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-0.000 Y789.175 I4.000 J0.000
+G01 X380.139 Y789.175
+G02 X384.139 Y785.175 I0.000 J-4.000
+G01 X384.139 Y331.675
+G02 X380.139 Y327.675 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y323.675
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X461.500 Y327.675 I4.000 J0.000
+G01 X915.000 Y327.675
+G02 X919.000 Y323.675 I-0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X457.500 Y256.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X453.500 Y260.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y176.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X461.500 Y172.000 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y168.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X453.500 Y172.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y88.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X461.500 Y84.000 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y80.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X453.500 Y84.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y0.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X453.500 Y-4.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X461.500 Y-4.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X457.500 Y-0.000 I-0.000 J4.000
+G01 X457.500 Y80.000
+G02 X461.500 Y84.000 I4.000 J0.000
+G01 X915.000 Y84.000
+G03 X919.000 Y88.000 I0.000 J4.000
+F4000
+G00 Z20.000
+G00 X915.000 Y84.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X919.000 Y80.000 I-0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X915.000 Y172.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X919.000 Y176.000 I-0.000 J4.000
+F4000
+G00 Z20.000
+G00 X919.000 Y256.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X915.000 Y260.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X919.000 Y264.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X915.000 Y260.000 I-4.000 J0.000
+G01 X461.500 Y260.000
+G03 X457.500 Y256.000 I-0.000 J-4.000
+G01 X457.500 Y176.000
+G02 X453.500 Y172.000 I-4.000 J0.000
+G01 X0.000 Y172.000
+G03 X-4.000 Y168.000 I-0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X0.000 Y172.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-4.000 Y176.000 I-0.000 J4.000
+F4000
+G00 Z20.000
+G00 X-0.000 Y260.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-4.000 Y264.000 I0.000 J4.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y323.675
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-0.000 Y327.675 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y331.675
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X0.000 Y327.675 I4.000 J0.000
+G01 X453.500 Y327.675
+G02 X457.500 Y323.675 I0.000 J-4.000
+G01 X457.500 Y264.000
+G02 X453.500 Y260.000 I-4.000 J0.000
+G01 X-0.000 Y260.000
+G03 X-4.000 Y256.000 I0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y88.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X-0.000 Y84.000 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y80.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-0.000 Y84.000 I4.000 J0.000
+G01 X453.500 Y84.000
+G03 X457.500 Y88.000 I0.000 J4.000
+G01 X457.500 Y168.000
+G02 X461.500 Y172.000 I4.000 J0.000
+G01 X915.000 Y172.000
+G02 X919.000 Y168.000 I0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X461.500 Y260.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X457.500 Y264.000 I0.000 J4.000
+F4000
+G00 Z20.000
+M05
+M17
+M30
\ No newline at end of file
diff --git a/demo/gcodes/xuzhen1994.gcode b/demo/gcodes/xuzhen1994.gcode
new file mode 100644
index 00000000..c8989ebc
--- /dev/null
+++ b/demo/gcodes/xuzhen1994.gcode
@@ -0,0 +1,183 @@
+T1
+G43 H1
+M03 S18000
+G00 X176.604 Y554.890
+G00 Z10.000
+F4000
+G01 Z-12.100
+F12000
+G02 X183.675 Y561.961 I3.536 J3.536
+G02 X176.604 Y554.890 I-3.536 J-3.536
+F4000
+G00 Z20.000
+G00 X-4.000 Y785.175
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-0.000 Y789.175 I4.000 J0.000
+G01 X380.139 Y789.175
+G02 X384.139 Y785.175 I0.000 J-4.000
+G01 X384.139 Y331.675
+G02 X380.139 Y327.675 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y323.675
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X461.500 Y327.675 I4.000 J0.000
+G01 X915.000 Y327.675
+G02 X919.000 Y323.675 I-0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X457.500 Y256.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X453.500 Y260.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y176.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X461.500 Y172.000 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y168.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X453.500 Y172.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y88.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X461.500 Y84.000 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y80.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X453.500 Y84.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X457.500 Y0.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X453.500 Y-4.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X461.500 Y-4.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X457.500 Y-0.000 I-0.000 J4.000
+G01 X457.500 Y80.000
+G02 X461.500 Y84.000 I4.000 J0.000
+G01 X915.000 Y84.000
+G03 X919.000 Y88.000 I0.000 J4.000
+F4000
+G00 Z20.000
+G00 X915.000 Y84.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X919.000 Y80.000 I-0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X915.000 Y172.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X919.000 Y176.000 I-0.000 J4.000
+F4000
+G00 Z20.000
+G00 X919.000 Y256.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X915.000 Y260.000 I-4.000 J0.000
+F4000
+G00 Z20.000
+G00 X919.000 Y264.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X915.000 Y260.000 I-4.000 J0.000
+G01 X461.500 Y260.000
+G03 X457.500 Y256.000 I-0.000 J-4.000
+G01 X457.500 Y176.000
+G02 X453.500 Y172.000 I-4.000 J0.000
+G01 X0.000 Y172.000
+G03 X-4.000 Y168.000 I-0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X0.000 Y172.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-4.000 Y176.000 I-0.000 J4.000
+F4000
+G00 Z20.000
+G00 X-0.000 Y260.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-4.000 Y264.000 I0.000 J4.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y323.675
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-0.000 Y327.675 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y331.675
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X0.000 Y327.675 I4.000 J0.000
+G01 X453.500 Y327.675
+G02 X457.500 Y323.675 I0.000 J-4.000
+G01 X457.500 Y264.000
+G02 X453.500 Y260.000 I-4.000 J0.000
+G01 X-0.000 Y260.000
+G03 X-4.000 Y256.000 I0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y88.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G03 X-0.000 Y84.000 I4.000 J0.000
+F4000
+G00 Z20.000
+G00 X-4.000 Y80.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X-0.000 Y84.000 I4.000 J0.000
+G01 X453.500 Y84.000
+G03 X457.500 Y88.000 I0.000 J4.000
+G01 X457.500 Y168.000
+G02 X461.500 Y172.000 I4.000 J0.000
+G01 X915.000 Y172.000
+G02 X919.000 Y168.000 I0.000 J-4.000
+F4000
+G00 Z20.000
+G00 X461.500 Y260.000
+G00 Z10.000
+G01 Z-12.100
+F12000
+G02 X457.500 Y264.000 I0.000 J4.000
+F4000
+G00 Z20.000
+M05
+M17
+M30
\ No newline at end of file
diff --git a/demo/index.html b/demo/index.html
index 2ce1e78d..90fb01f2 100644
--- a/demo/index.html
+++ b/demo/index.html
@@ -37,9 +37,11 @@
GCode Preview
File: