Hello Guest it is April 19, 2024, 10:58:15 AM

Author Topic: Find tool command for running gcode.  (Read 2682 times)

0 Members and 1 Guest are viewing this topic.

Find tool command for running gcode.
« on: December 21, 2009, 06:07:54 PM »
On some cnc machines I have ran,  there was an option called find tool.  This command would search the gcode for the tool you specify, thus giving you the option of run the program from that point.  It saves a lot of time if you need to start from a specific tool change point when the program have 40,000 lines of code.

Offline zealous

*
  •  489 489
  • HI!
    • View Profile
    • Artsoft Solutions
Re: Find tool command for running gcode.
« Reply #1 on: December 29, 2009, 03:46:31 AM »
Great thing about Mach is you can do about anything you want!

Always take precaution when running code and attempt to break it so later it doesn’t happen unexpectedly!!!

1.Place this code on a button or Macro.
2.Make sure you are in a "Stop" condition
3.Run script

The script finds the next M6/M06 from your "Currently Line" after which YOU WILL NEED TO either HIT RUN FROM HERE or SET NEXT LINE. Depending on your needs I did not want to add that in.

Recap this script should only be run when in a stop condition and will only find the next M6/M06 from your current position in the file.

If you find any issues let me know, but use at your own discretion.

Code: [Select]
Dim currentfile As String
Dim filesys, filetxt, lastline, oldline As String
Dim currentLine As String
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set filesys = CreateObject("Scripting.FileSystemObject")
currentLine = GetOEMDRO(816)
Found = False
currentfile = FileName
Set filetxt = filesys.OpenTextFile(currentfile, ForReading, True)
Dim i As Integer
i = 0
Do While filetxt.AtEndOfStream <> true
linestring = UCase(filetxt.ReadLine()) & " "
If linestring <> " " Then
i = i+1
If i > currentLine Then
If ((InStr(linestring,"M6") >0 Or InStr(linestring,"M06")>0)) Then
SetOEMDRO(816,i)
Found = True
MsgBox "File has been set to line:"& GetOEMDRO(816)&" Your next toolchange position.Your previous line was:"&currentLine
Exit Do
End If
End If
End If
Loop
If Found = False Then
MsgBox "No M6/M06 Found after LINE:"& currentLine
End If
filetxt.Close
Set filesys = Nothing
Set filetxt = Nothing

Have fun!
Thanks Jason Blake