(author: Chris P) (version: 0.1) (date: 04/23/19) (Probe back right top corner for x,y,z 0,0,0 position) (Start probe position is over back right corner of stock) (inside the step off width square and within max z distance) (ensure all settings have been set properly according to help diagrams) o sub (uses NGCGUI style arg spec) (number after "=" in comment is default value) # = #1 (=99) # = #2 (=0.5000) # = #3 (=0.5000) # = #4 (=0.1000) # = #5 (=0.1000) # = #6 (=0.5000) # = #7 (=0.0000) # = #8 (=0.0) # = #9 (=10.0) # = #10 (=0.0000) # = #11 (=1.0000) # = #12 (=1.0000) # = #13 (=1.0000) # = #14 (=0.5000) # = #15 (=0) (Cancel G92 offsets) G92.1 # = #[5201 + [20 * #5220]] # = #[5202 + [20 * #5220]] (Probe Tool Safety Check) o<110> if [#5400 NE #] (MSG, Specified probe tool # not in spindle, aborting) o return o<110> endif (Probe Diameter) # = #5410 (Probing depth from the z probed clearance height, used for z moves) # = [# + # + #] (Probe X Positioning Move, Step Off Width) G91 G0 X[#] (Probe X Positioning Move, to Probing Depth) F[#] G1 Z-[#] (Call sub "probe_x_minus" to Probe x- side of Workpiece) o call [#1][#3][#4][#8][#9][#10] # = #<_value> (value returned safety check, aborts if no value returned) o<120> if [# EQ 1 AND #<_value_returned> NE 1] (MSG, Missing X Sub returned edge parameter, aborting) o return o<120> endif (Probe Y Positioning Move, up to Z clearance plane) G91 G0 Z[#] (Probe Y Positioning Move) G0 X-[#] Y[#] (Probe Y Positioning Move,to Probing Depth) F[#] G1 Z-[#] (Call sub "probe_y_minus" to Probe y- side of Workpiece) o call [#1][#3][#4][#8][#9][#10] # = #<_value> (value returned safety check, aborts if no value returned) o<130> if [# EQ 1 AND #<_value_returned> NE 1] (MSG, Missing Y Sub returned edge parameter, aborting) o return o<130> endif (Probe Completion Move to Z Clearance Plane, and XY Zero) G91 G0 Z[#] G90 G0 X[#] Y[#] (probe mode rules for WCO or probe position measuring only) o<140> if [# EQ 0] (Record Zero in selected axes and WCO) G10 L2 P#5220 X[# + #] G10 L2 P#5220 Y[# + #] o return o<140> endif o endsub M2 (end program)