#<_z_clearance> = 0.2 M03 G20 ; G21 mm, G20 inches G91.1 ; absolute IJK G54 ; absolute coordinates #<_z_ctr> = 0.550 #<_x_start> = 0.0 #<_x_end> = 7.0 #<_r> = 0.945 #<_x_step> = 0.05 # = #<_x_start> # = 21 o200 sub ;[Y][Z] G0 Z[#<_z_clearance>] G0 X[#<_x_start>-#5410] Y[#1] G0 Z[#2] G1 X[#<_x_end>+#5410] G0 Y[-#1] G1 X[#<_x_start>-#5410] o200 endsub #<_r_adj> = [#<_r> - #5410/2] # = ACOS[[#<_z_ctr>-#5410/2]/#<_r_adj>] ;# = [#<_z_ctr> - #<_r_adj>] # = [#<_r_adj>*SIN[#]] o10 if [# EQ 1] F5 o200 call [0][-.35] o200 call [0.1][-.25] o200 call [0.2][-.10] o10 elseif [# EQ 2] F10 G0 Z#<_z_clearance> G0 X#<_x_start> Y0 G0 Z0 # = # ; o105 while [# LT #] o200 call [SIN[#]*#<_r_adj>][#<_z_ctr>-COS[#]*#<_r_adj>-#5410/2] # = [# + 2] ; o105 endwhile o10 elseif [# EQ 3] F30 G0 Z#<_z_clearance> G0 X#<_x_start> Y0 G0 Z0 G90.1; use IJK absolute G19; use YZ plane for round moves # = #<_x_start> # = 0 o100 while [# LT #<_x_end>] # = [# + #<_x_step>] # = [# + 1] ;G1 X# o101 if [# MOD 2] G1 X# Y+# Z0 G2 X# Y-# Z0 J0 K[#<_z_ctr>-#5410/2] o101 else G1 X# Y-# Z0 G3 X# Y+# Z0 J0 K[#<_z_ctr>-#5410/2] o101 endif o100 endwhile o10 elseif [# EQ 11] F4 #<_z_top> = 0.0 #<_z_bot> = -0.4 ;o call [1.476][-.232] [1.476][+.232] [5.5/25.4] [0.0][-0.4] o call [0] [2.264][-.232] [2.264][+.232] [7.0/25.4] o call [0] [2.264][-.232] [2.264][+.232] [8.5/25.4] o call [0] [2.264][-.232] [2.264][+.232] [10.0/25.4] ;o call [3.051][-.232] [3.051][+.232] [5.5/25.4] [0.0][-0.4] o10 elseif [# EQ 12] F4 #<_z_top> = 0.0 #<_z_bot> = -3.2/25.4 o call [0] [1.476][-.232] [1.476][+.232] [9.5/25.4] o call [0] [2.264][-.232] [2.264][+.232] [14/25.4] o call [0] [3.051][-.232] [3.051][+.232] [9.5/25.4] o10 elseif [# EQ 21] #<_rc> = 0.3 #<_yr> = 1.005 F10 # = 0 o300 while [# LT 90] # = [#<_yr>-#<_rc>+[#<_rc>+#5410/2]*COS[#]] # = [-#<_rc>+[#<_rc>+#5410/2]*SIN[#]-#5410/2] o200 call [#][#] # = [# + 10] o300 endwhile o10 endif G0 Z#<_z_clearance> M05 M30