Here is what I typed up yesterday. Got out to shop to test some of it tonight and the z touch, x touch, and y boss work as expected. They had a few typos that I had to correct so I fully expect there to be others as well.
Code:
;------------------- LINUXCNC 2.7 - PROBE SECTION BEGIN
@start_probe
;feed_rate defined in solidcam, change other values to suit
probe_feed_rate = feed_rate
search_feed_rate = 15
rapid_feed_rate = 60
latch_distance = 0.050
if bTlchg
spin = 0
call @usr_ct
bTlchg = false
endif
endp
;-------------------
@misc_act
;message
endp
;-------------------
@move_prb
{nl,'(Move Probe)'}
{nl,'G01 X'xpos' Y'ypos' Z'zpos' F'rapid_feed_rate}
{nl,''}
endp
;-------------------
@line_prb
{nl,'(Line-up Probe)'}
{nl,'G38.3 X'xpos' Y'ypos' Z'zpos' F'search_feed_rate}
{nl,''}
endp
;-------------------
@prb_cyc_xyz_plan
if ProbeCycle eq 'PRB_X_PLANE' and ActionProbeType eq 1
{nl,'(Probing X Plane)'}
if PRB_Dir eq -1
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420+'latch_distance'] Y'ypos' Z'zpos' F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] X[#5061+#4002] (Updating Postion)'}
endif
if PRB_Dir eq 1
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420-'latch_distance'] Y'ypos' Z'zpos' F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] X[#5061-#4003] (Updating Postion)'}
endif
endif
if ProbeCycle eq 'PRB_Y_PLANE' and ActionProbeType eq 1
{nl,'(Probing Y Plane)'}
if PRB_Dir eq -1
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'search_feed_rate' (Searching)'}
{nl,'G01 X'xpos' Y[#5421+'latch_distance'] Z'zpos' F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] Y[#5062+#4004] (Updating Postion)'}
endif
if PRB_Dir eq 1
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'search_feed_rate' (Searching)'}
{nl,'G01 X'xpos' Y[#5421-'latch_distance'] Z'zpos' F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] Y[#5062-#4005] (Updating Postion)'}
endif
endif
if ProbeCycle eq 'PRB_Z_PLANE' and ActionProbeType eq 1
{nl,'(Probing Z Plane)'}
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'search_feed_rate' (Searching)'}
{nl,'G01 X'xpos' Y'ypos' Z[#5422+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' Y'PRB_TP1_Y' Z'PRB_TP1_Z' F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] Z#5063 (Updating Postion)'}
endif
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl,''}
endp
;-------------------
@prb_cyc_bos_pckt
if ProbeCycle eq 'PRB_BOSS' and ActionProbeType eq 1 and PRB_AlongAxis eq 'X'
{nl,'(Probing Boss Along X)'}
{nl,'G38.3 X['PRB_TP1_X'-'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP1_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 X'PRB_TP1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_negative> = [#5061+#4003]'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 X['PRB_TPX1_X'+'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP1_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 X'PRB_TPX1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TPX1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_positive> = [#5061-#4002]'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 X[[#<x_negative>+#<x_positive>]/2] F'rapid_feed_rate' (Move Probe)'}
{nl,'G10 L20 P['mac_number'-1] X'xhpos' (Updating Position)'}
{nl, ''}
endif
if ProbeCycle eq 'PRB_BOSS' and ActionProbeType eq 1 and PRB_AlongAxis eq 'Y'
{nl,'(Probing Boss Along Y)'}
{nl,'G38.3 Y['PRB_TPY2_Y'+'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP2_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_positive> = [#5062-#4004]'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 Y['PRB_TP2_Y'-'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP2_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 Y'PRB_TP2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TP2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_negative> = [#5062+#4005]'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 Y[[#<y_negative>+#<y_positive>]/2] F'rapid_feed_rate' (Move Probe)'}
{nl,'G10 L20 P['mac_number'-1] Y'yhpos' (Updating Position)'}
{nl, ''}
endif
if ProbeCycle eq 'PRB_BOSS' and ActionProbeType eq 1 and PRB_AlongAxis eq 'XY'
{nl,'(Probing Boss Along X)'}
{nl,'G38.3 X['PRB_TP1_X'-'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP1_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 X'PRB_TP1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_negative> = [#5061+#4003]'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 X['PRB_TPX1_X'+'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP1_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 X'PRB_TPX1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TPX1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_positive> = [#5061-#4002]'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 X[[#<x_negative>+#<x_positive>]/2] F'rapid_feed_rate' (Move Probe)'}
{nl,'G10 L20 P['mac_number'-1] X'xhpos' (Updating Position)'}
{nl, ''}
{nl,'(Probing Boss Along Y)'}
{nl,'G38.3 Y['PRB_TPY2_Y'+'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP2_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_positive> = [#5062-#4004]'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 Y['PRB_TP2_Y'-'PRB_RetractDist'] F'rapid_feed_rate' (Move Probe)'}
{nl,'G38.3 Z'PRB_TP2_Z' F'search_feed_rate' (Line-up Probe)'}
{nl,'G38.2 Y'PRB_TP2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TP2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_negative> = [#5062+#4005]'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G01 Z'clearance_plane' F'rapid_feed_rate' (Clearance Move)'}
{nl, ''}
{nl,'G38.3 Y[[#<y_negative>+#<y_positive>]/2] F'rapid_feed_rate' (Move Probe)'}
{nl,'G10 L20 P['mac_number'-1] Y'yhpos' (Updating Position)'}
{nl, ''}
endif
if ProbeCycle eq 'PRB_POCKET' and ActionProbeType eq 1 and PRB_AlongAxis eq 'X'
{nl,'G38.2 X'PRB_TPX1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TPX1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_positive> = [#5061+#4003]'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.2 X'PRB_TP1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_negative> = [#5061-#4002]'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.3 X[[#<x_negative>+#<x_positive>]/2] F'rapid_feed_rate' (Move Probe)'}
{nl,'G10 L20 P['mac_number'-1] X'xhpos' (Updating Position)'}
{nl, ''}
endif
if ProbeCycle eq 'PRB_POCKET' and ActionProbeType eq 1 and PRB_AlongAxis eq 'Y'
{nl,'(Probing Pocket Along Y)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_positive> = [#5062+#4005]'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.2 Y'PRB_TP2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TP2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_negative> = [#5062-#4004]'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.3 Y[[#<y_negative>+#<y_positive>]/2] F'rapid_feed_rate' (Protected Move)'}
{nl,'G10 L20 P['mac_number'-1] Y'yhpos' (Updating Position)'}
{nl, ''}
endif
if ProbeCycle eq 'PRB_POCKET' and ActionProbeType eq 1 and PRB_AlongAxis eq 'XY'
{nl,'(Probing Pocket Along X)'}
{nl,'G38.2 X'PRB_TPX1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TPX1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_positive> = [#5061+#4003]'}
{nl,'G01 X[#5420-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.2 X'PRB_TP1_X' F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X'PRB_TP1_X' F'probe_feed_rate' (Probing)'}
{nl,'#<x_negative> = [#5061-#4002]'}
{nl,'G01 X[#5420+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.3 X[[#<x_negative>+#<x_positive>]/2] F'rapid_feed_rate' (Move Probe)'}
{nl,'G10 L20 P['mac_number'-1] X'xhpos' (Updating Position)'}
{nl, ''}
{nl,'(Probing Pocket Along Y)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TPY2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_positive> = [#5062+#4005]'}
{nl,'G01 Y[#5421-'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.2 Y'PRB_TP2_Y' F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y'PRB_TP2_Y' F'probe_feed_rate' (Probing)'}
{nl,'#<y_negative> = [#5062-#4004]'}
{nl,'G01 Y[#5421+'latch_distance'] F'rapid_feed_rate' (Retracting)'}
{nl, ''}
{nl,'G38.3 Y[[#<y_negative>+#<y_positive>]/2] F'rapid_feed_rate' (Protected Move)'}
{nl,'G10 L20 P['mac_number'-1] Y'yhpos' (Updating Position)'}
{nl, ''}
endif
endp
;-------------------
@prb_cyc_cor
;WORKING
{nl,'(Probing Corner)'}
{nl,'G38.3 X[[#5420+'PRB_RetractDist_X'+'PRB_DX1']*'PRB_Dir_X'] F'search_feed_rate' (Protected Move)'}
{nl,'G38.2 Y[#5421+['PRB_RetractDist_Y'*'PRB_Dir_Y']] F'search_feed_rate' (Searching)'}
{nl,'G01 Y[#5421-['latch_distance'*'PRB_Dir_Y']] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 Y[#5421+['PRB_RetractDist_Y'*'PRB_Dir_Y']] F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] Y[#5062-#4005] (Updating Postion)'}
{nl,'G01 X'xpos' Y'ypos' Z'zpos' F'search_feed_rate}
{nl,''}
{nl,'G38.3 Y[[#5421+'PRB_RetractDist_Y'+'PRB_DY1']*'PRB_Dir_Y'] F'search_feed_rate' (Protected Move)'}
{nl,'G38.2 X[#5420+['PRB_RetractDist_X'*'PRB_Dir_X']] F'search_feed_rate' (Searching)'}
{nl,'G01 X[#5420-['latch_distance'*'PRB_Dir_X']] F'rapid_feed_rate' (Retracting)'}
{nl,'G38.2 X[#5420+['PRB_RetractDist_X'*'PRB_Dir_X']] F'probe_feed_rate' (Probing)'}
{nl,'G10 L20 P['mac_number'-1] X[#5061-#4003] (Updating Postion)'}
{nl,'G01 X'xpos' Y'ypos' Z'zpos' F'search_feed_rate}
{nl,''}
endp
;-------------------
@prb_cyc_hol_cyl
;TODO
endp
;-------------------
@prb_cyc_angle
;TODO
endp
;-------------------
@end_probe
{nl,'(End Probing)'}
endp
;------------------- LINUXCNC 2.7 - PROBE SECTION END