OK, I'm stumped. I though that this was an easy request. This is what I cobbled together. It is getting hung up on the the reorderTraces line with an error that trace is not on graph which I take to mean that the string variable is not being taken properly. When I add some print statements the string list is as expected and if I run from the command line the sorted list that has been copied and pasted it produces the desired outcome.
Function ReorderTracesAN()
// Get a list of traces String visibleTraces=TraceNameList("",",",1+4)// only visible normal traces
//Sort that list to be alphanumeric
visibleTraces = SortList(visibleTraces,",",16)// 16: Case-insensitive alphanumeric sort that sorts wave0 and wave9 before wave10
//Before we do the reorder command we need to remove the last comma (list seperator) from the string list
visibleTraces = removeending(visibleTraces)
// reorder the traces assuming Igor Pro 7 using the _front_ keyword ReorderTraces _front_, {$visibleTraces}// this gives an error here End
Wouldn't it be nice if that worked? But you can't turn a *list* into names with $, only single names. So this is one of those places where you probably really still need to use Execute, like this:
Function ReorderTracesAN(gname) String gname
if(strlen(gname) == 0)
gname = WinName(0,1) endif
// Get a list of traces String visibleTraces=TraceNameList(gname,",",1+4)// only visible normal traces
//Sort that list to be alphanumeric
visibleTraces = SortList(visibleTraces,",",16)// 16: Case-insensitive alphanumeric sort that sorts wave0 and wave9 before wave10
//Before we do the reorder command we need to remove the last comma (list seperator) from the string list
visibleTraces = removeending(visibleTraces)
// reorder the traces assuming Igor Pro 7 using the _front_ keyword String cmd = "ReorderTraces/W=" + gname + " _front_, {" + visibleTraces + "}" Execute/Q cmd End
Note that I have also added an input, gname, to make the whole thing a bit more robust.
// Get a list of traces
String visibleTraces=TraceNameList("",",",1+4) // only visible normal traces
//Sort that list to be alphanumeric
visibleTraces = SortList(visibleTraces,",",16) // 16: Case-insensitive alphanumeric sort that sorts wave0 and wave9 before wave10
//Before we do the reorder command we need to remove the last comma (list seperator) from the string list
visibleTraces = removeending(visibleTraces)
// reorder the traces assuming Igor Pro 7 using the _front_ keyword
ReorderTraces _front_, {$visibleTraces}// this gives an error here
End
Andy
November 11, 2016 at 06:46 am - Permalink
String gname
if (strlen(gname) == 0)
gname = WinName(0,1)
endif
// Get a list of traces
String visibleTraces=TraceNameList(gname,",",1+4) // only visible normal traces
//Sort that list to be alphanumeric
visibleTraces = SortList(visibleTraces,",",16) // 16: Case-insensitive alphanumeric sort that sorts wave0 and wave9 before wave10
//Before we do the reorder command we need to remove the last comma (list seperator) from the string list
visibleTraces = removeending(visibleTraces)
// reorder the traces assuming Igor Pro 7 using the _front_ keyword
String cmd = "ReorderTraces/W=" + gname + " _front_, {" + visibleTraces + "}"
Execute/Q cmd
End
Note that I have also added an input, gname, to make the whole thing a bit more robust.
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
November 11, 2016 at 10:44 am - Permalink
November 17, 2016 at 03:58 am - Permalink