would this move it to position using the previous script and added in from your script the x and z axis moves?
' (C) Graham Waterworth Mach forum.
' rough draft for a lock back to pawl type tool changer
' this has not been tried on any tool changer
' use/modify it as you wish, I take no responsibility
' for any damage to you or your equipment.
' NOTE current values are for a Boxford 125/160 lathe
' 8 position tool changer using MM calibration.
' set axis steps per to 20
If IsLoading() Then
' do now't, program loading
Else
' dim some vars
Dim next_tool As Integer
Dim current_tool As Integer
Dim steps_per_tool As Integer
Dim steps_after_pawl As Integer
Dim max_tools As Integer
Dim rotateCW As Integer
Dim moves As Integer
Dim fast_feed As Integer
Dim slow_feed As Integer
Dim axis As String
Dim zero As Integer
Dim to_pawl As Integer
' set up some vars
zero = 0
axis = "A" ' change to what ever axis you use for tool changer
rotateCW = 0 ' set to 1 for CCW and 0 for CW rotation
max_tools = 8 ' number of tools on turret
' stepper driver should be set to 1 step NO MICRO STEPPING!
steps_per_tool = 900 ' number of steps needed to move 1 tool position (45 deg)
steps_after_pawl = 100 ' set to amount to clear pawl after move (5 deg)
steps_to_lock_back_on_pawl = 140 ' number of steps to lock onto pawl (7 deg)
next_tool = GetSelectedTool()
current_tool = GetCurrentTool()
fast_feed = 1000 ' set to safe rapid rotation speed
slow_feed = 200 ' set to safe creep speed back onto pawl.
' do some tool changing
If next_tool > max_tools Then
Message "Tool number too high, program stopped."
Code "M30"
End
End If
If next_tool<1 Then
Message "Tool number too low, program stopped."
Code "M30"
End
End If
If next_tool=current_tool Then
' do nowt, we got it already
Message "ATC X-Axis to TC position"
Code "G90 G53 G0 X2"
While IsMoving()
Sleep(15)
Wend
Message "ATC Z-Axis to TC position"
Code "G90 G53 G0 Z2"
While IsMoving()
Sleep(15)
Wend
Else
' lets do some checking
If next_tool > current_tool Then moves = next_tool - current_tool
If next_tool < current_tool Then moves = max_tools - current_tool + next_tool
' work out how far to move
rapid_move = (moves * steps_per_tool) + steps_after_pawl
to_pawl = zero - steps_to_lock_back_on_pawl
' reverse moves if needed
If rotateCW = 1 Then
rapid_move = zero - rapid_move
to_pawl = Abs(to_pawl)
End If
' set axis to zero
Code "G92 " & axis & "0"
Code "G91 G94 G61"
' start the move
Code "G01 " & axis & rapid_move & " F" & fast_feed
Code "G04 P250"
While IsMoving()
Wend
' move back to locking point
Code "G01 " & axis & to_pawl & " F" & slow_feed
While IsMoving()
Wend
' tell mach3 new tool
SetCurrentTool next_tool
Code "G90" ' back to absolute movement
End If
End If
' end of tool change