(author: Chris P) (version: 0.2) (date: 06/27/24) (Probe Boss in X and Y Axes, find center, Diam and z 0 position) (Start probe position is over center of stock in X and Y axis) (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) # = #3014 (=99) # = #3015 (=0) # = #3016 (=10.0) # = #3017 (=50) # = #3018 (=0.5000) # = #3019 (=0.1000) # = #3020 (=0.5000) # = #3021 (=0.1000) # = #3022 (=0.0000) # = #3023 (=0.5000) # = #3025 (=0) # = #3030 (=0) # = #3032 (=0) (Cancel G92 offsets) G92.1 (Cancel Feedrate Override) M50 P0 # = #[5201 + [20 * #5220]] # = #[5202 + [20 * #5220]] # = #[5203 + [20 * #5220]] (Probe Tool Safety Check) o100 if [#5400 NE #] (DEBUG, Specified probe tool %d# not in spindle, aborting) M50 P1 o return o100 endif (Probe Diameter) # = #5410 (Probe Radius) # = [# / 2] (Probe Centerline Offset) # = [# - #] (remove probe tip diam and cal offset from probed width calculations) # = [# - [# * 2]] # = [# + # + #] (Call sub "probe_z_minus_sub" to Probe top of Workpiece) o call [#3014][#3015][#3016][#3017][#3020][#3021][#3030] (Probe X Positioning Move, X hint/2 + Step Off Width) G91 F[#] G38.3 X-[[# / 2] + [#]] (Probe X Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_x_plus" to Probe x+ side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5061 (first side Probe Completion Move to Z Clearance Plane) G91 F[#] G38.3 Z[#] (Positioning move in X, X Hint + Step Off Width at Rapid Speed) G91 F[#] G38.3 X[# + # + #] (Probe X Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_x_minus" to Probe x- side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5061 (probed center calulation) # = [[# + #] / 2] #1002 = # (DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}]) G91 F[#] G38.3 Z[#] G90 F[#] G38.3 X[#] (Probe Y Positioning Move, Y hint/2 + Step Off Width) G91 F[#] G38.3 Y-[[# / 2] + [#]] (Probe Y Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_y_plus" to Probe y+ side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5062 (first side Probe Completion Move to Z Clearance Plane) G91 F[#] G38.3 Z[#] (Positioning move in Y, Y Hint + Step Off Width at Rapid Speed) G91 F[#] G38.3 Y[# + # + #] (Probe Y Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_y_minus" to Probe y- side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5062 (probed center calulation) # = [[# + #] / 2] #1004 = # (DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}]) (Move to z clearance plane) G91 F[#] G38.3 Z[#] (Move to Y Center) G90 F[#] G38.3 Y[#] (Probe X Positioning Move, X hint/2 + Step Off Width) G91 F[#] G38.3 X-[[# / 2] + [#]] (Probe X Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_x_plus" to Probe x+ side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5061 (first side Probe Completion Move to Z Clearance Plane) G91 F[#] G38.3 Z[#] (Positioning move in X, X Hint + Step Off Width at Rapid Speed) F[#] G38.3 X[# + # + #] (Probe X Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_x_minus" to Probe x- side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5061 (probed center calulation) # = [[# + #] / 2] (calculate X Width Probed) o110 if [# GT #] # = [# - #] o110 else # = [# - #] o110 endif (Completed probed width calculations) # = [# - #] #1001 = # (DEBUG, EVAL[vcp.getWidget{"x_probed_width"}.setValue{#1001}]) #1002 = # (DEBUG, EVAL[vcp.getWidget{"x_center_probed"}.setValue{#1002}]) G91 F[#] G38.3 Z[#] G90 F[#] G38.3 X[#] (Probe Y Positioning Move, Y hint/2 + Step Off Width) G91 F[#] G38.3 Y-[[# / 2] + [#]] (Probe Y Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_y_plus" to Probe y+ side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5062 (first side Probe Completion Move to Z Clearance Plane) G91 F[#] G38.3 Z[#] (Positioning move in Y, Y Hint + Step Off Width at Rapid Speed) F[#] G38.3 Y[# + # + #] (Probe Y Positioning Move, to Probing Depth) F[#] G38.3 Z-[#] (Call sub "probe_y_minus" to Probe y- side of Workpiece) o call [#3014][#3015][#3016][#3017][#3018][#3019][#3032] # = #5062 (probed center calulation) # = [[# + #] / 2] (calculate Y Width Probed) o120 if [# GT #] # = [# - #] o120 else # = [# - #] o120 endif (Completed probed width calculations) # = [# - #] #1003 = # (DEBUG, EVAL[vcp.getWidget{"y_probed_width"}.setValue{#1003}]) #1004 = # (DEBUG, EVAL[vcp.getWidget{"y_center_probed"}.setValue{#1004}]) # = [[# + #] / 2] #1010 = # (DEBUG, EVAL[vcp.getWidget{"averaged_diam"}.setValue{#1010}]) G91 F[#] G38.3 Z[#] G90 F[#] G38.3 X[#] Y[#] # = [# + #] # = [# + #] (probe mode rules for WCO or probe position measuring only) o130 if [# EQ 0] (Record XY Zero in selected WCO) G10 L2 P#5220 X[#] Y[#] o130 endif (Reinstate Feedrate Override) M50 P1 o endsub M2 (end program)