Well, I tried what I thought should be faster, but it ended up not being so. See code below in case it helps at all. Code that improves the time slightly is pasted below that.
String CSVFileName = "H:\Powermill Config\Tool CSV files\OKK_VM7.csv"
// $CSVFileName = FILESELECT "CSV File"
INT $StartTime = time()
//imprt csv data to a list
STRING LIST $csvFile = {}
FILE OPEN $CSVFileName FOR READ AS input
FILE READ $csvFile FROM input
FILE CLOSE input
STRING LIST tokens = {}
String FilterExpression = ""
ENTITY LIST $ToolNames = {}
String TName = ""
STRING LIST $remove = {"_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9"}
INT $LineLength = 0
INT $TokPos = 0
STRING $TokString = ""
FOREACH $line IN $csvFile {
$tokens = TOKENS($line, ',')
$FilterExpression = "position(name;'" + $tokens[0] + "') != -1"
$ToolNames = filter(folder('tool');$FilterExpression)
Foreach $tl in $ToolNames {
$TName = $tl.name
$LineLength = length($TName)
$TokPos = $LineLength -2
$TokString = substring($TName, $TokPos, $LineLength)
WHILE member($remove, $TokString) {
$TName = substring($TName, 0, $TokPos)
$LineLength = length($TName)
$TokPos = $LineLength -2
$TokString = substring($TName, $TokPos, $LineLength)
}
If $TName == $tokens[0] {
$tl.number.userdefined = 1
$tl.number = int($tokens[1])
}
}
}
INT $EndTime = time()
INT $TimeDif = $EndTime - $StartTime
STRING $msg = string($TimeDif) + " seconds."
MESSAGE INFO $msg
Slightly improved time code below.
String CSVFileName = "H:\Powermill Config\Tool CSV files\OKK_VM7.csv"
// $CSVFileName = FILESELECT "CSV File" "*.csv"
INT $StartTime = time()
//imprt csv data to a list
STRING LIST $csvFile = {}
FILE OPEN $CSVFileName FOR READ AS input
FILE READ $csvFile FROM input
FILE CLOSE input
STRING LIST $ToolNames = extract(folder('tool');'name')
//Get rid of trailing "_1" "_2" on names for comparing to csv
STRING LIST $remove = {"_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9"}
INT $LineLength = 0
INT $TokPos = 0
STRING $TokString = ""
//renumber tools
INT LIST $NewNumbers = {}
INT $counter = 0
INT $Tnumber = 0
STRING $toolname = ""
FOREACH $tName IN $ToolNames {
$LineLength = length($tName)
$TokPos = $LineLength -2
$TokString = substring($tName, $TokPos, $LineLength)
WHILE member($remove, $TokString) {
$tName = substring($tName, 0, $TokPos)
$LineLength = length($tName)
$TokPos = $LineLength -2
$TokString = substring($tName, $TokPos, $LineLength)
}
FOREACH $line IN $csvFile {
STRING LIST $tokens = TOKENS($line, ',')
IF $tName == $tokens[0] {
$Tnumber = int($tokens[1])
$toolname = $ToolNames[$counter]
ENTITY $finalTool = $entity('Tool', $toolname)
$finalTool.number.userdefined = 1
$finalTool.number = $Tnumber
BREAK
}
}
$counter = $counter +1
}
INT $EndTime = time()
INT $TimeDif = $EndTime - $StartTime
STRING $msg = string($TimeDif) + " seconds."
MESSAGE INFO $msg