OK I have managed to get somewhere!
There is a thread on here started by Hood, so started to pick code from posts within there and have a play.
https://www.machsupport.com/forum/index.php/topic,33723.0.htmlI have changed the M800 Macro I use to find top of work from:
' Find Zero
' Initial try
' APH
Code ("G31 Z-30 F200")
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
Code ("G92 Z-1.4")
Sleep(100)
GotoSafeZ
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
' End
To initially
' To find top of work and not screw ARC's
' Lots of tries
' APH
Code "G31 Z-30.0 F200" 'probe surface
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
ZprobePos = GetVar(2002) 'get contact point
Code "G0 Z" &ZprobePos 'return to point to remove overshoot
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
Call SetOEMDRO(802, 0) 'Set Z DRO = 0.00
' Wait for movement to complete
' While (IsMoving())
' Sleep, so other threads can run while we wait
' Sleep(100)
' Wend
Code "G0 Z 1.8" 'remove head travel
While IsMoving()
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
Call SetOEMDRO(802,0) 'Set Z DRO = 0.00
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
Code "G0 Z 10"
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
' End
To a final of:
' To find top of work and not screw ARC's
' Lots of tries
' APH
Code "G31 Z-30.0 F400" 'probe surface
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
ZprobePos = GetVar(2002) 'get contact point
Code "G0 Z" &ZprobePos 'return to point to remove overshoot
' Wait For movement To complete
While (IsMoving())
' Sleep, so other threads can run While we wait
Sleep(100)
Wend
Call SetOEMDRO(802, -1.80) 'Set Z DRO = 0.00
Code "G0 Z 10.0"
' Wait for movement to complete
While (IsMoving())
' Sleep, so other threads can run while we wait
Sleep(100)
Wend
' End
The few lines
ZprobePos = GetVar(2002) 'get contact point
Code "G0 Z" &ZprobePos 'return to point to remove overshoot
' Wait For movement To complete
While (IsMoving())
' Sleep, so other threads can run While we wait
have meant I could speed up the feed and still keep the accuracy.
It looks like Mach3 does not like the use of G92 or GotoSafeZ()
I have no idea why but for now it is working and loading files without giving any error message of Radius to end of Arc differs from radius to start, and the tool path now loads.
It is 01:14 in the morning. Night all
Adrian