o sub ; Use P-word as target pocket (if called as M21 Pn) # = #1 ; --- Parameter assignments for clarity --- # = #3979 # = #3980 # = #3981 # = #3982 # = #3983 # = #3984 # = #3985 # = #3986 # = #3987 # = #3988 ; --- Calculate pocket position --- # = [# - #] # = [# - #] # = [# - 1] # = [# + # * #] # = [# + # * #] ; --- Determine clearance position, axis, and direction --- # = # # = # # = 0 # = 1 o100 if [# EQ 1] ; -Y to +Y, clearance +X, store -X # = # # = 1 # = -1 o100 elseif [# EQ 2] ; -Y to +Y, clearance -X, store +X # = # # = 1 # = 1 o100 elseif [# EQ 3] ; +Y to -Y, clearance +X, store -X # = # # = 1 # = -1 o100 elseif [# EQ 4] ; +Y to -Y, clearance -X, store +X # = # # = 1 # = 1 o100 elseif [# EQ 5] ; -X to +X, clearance +Y, store -Y # = # # = 2 # = -1 o100 elseif [# EQ 6] ; -X to +X, clearance -Y, store +Y # = # # = 2 # = 1 o100 elseif [# EQ 7] ; +X to -X, clearance +Y, store -Y # = # # = 2 # = -1 o100 elseif [# EQ 8] ; +X to -X, clearance -Y, store +Y # = # # = 2 # = 1 o100 else (PRINT, "Error: Invalid rack_id!") o return o100 endif ; --- Motions --- G90 G0 G53 Z[#] G0 G53 X[#] Y[#] G1 G53 F[#] Z[#] M19 G4 P1 ; Move into pocket - single axis, correct direction o200 if [# EQ 1] G1 G53 F[#] X[#] o200 else G1 G53 F[#] Y[#] o200 endif M24 G0 G53 Z[#] o endsub M2