
Find traces that intersect the graph marquee


johnweeks
#include <Graph Utility Procs> // Make a list of all traces that have points that fall within the marquee Function/S ListTracesInMarquee(graphname) String graphname String tlist = TraceNameList(graphname, ";", 1) Variable ntraces = ItemsInList(tlist) Make/O/D/N=4/FREE marqueeX, marqueeY GetMarquee/W=$graphname left, bottom marqueeY = {V_top, V_top, V_bottom, V_bottom} MarqueeX = {V_left, V_right, V_right, V_left} String theList = "" Variable i for (i = 0; i < ntraces; i += 1) String onetrace = StringFromList(i, tlist) Wave ywave = TraceNameToWaveRef(graphname, onetrace) Wave/Z xwave = XWaveRefFromTrace(graphname, onetrace) if (!WaveExists(xwave)) Duplicate/O/FREE ywave, xwave xwave = pnt2x(ywave, p) endif String offsetinfo = WMGetRECREATIONInfoByKey("offset(x)", traceinfo(graphname, onetrace, 0)) offsetinfo = offsetinfo[1, strlen(offsetinfo)-2] Variable xoffset = str2num(stringfromlist(0, offsetinfo, ",")) Variable yoffset = str2num(stringfromlist(1, offsetinfo, ",")) marqueeY -= yoffset marqueeX -= xoffset FindPointsInPoly xwave, ywave, marqueeX, marqueeY marqueeY += yoffset marqueeX += xoffset Wave W_inPoly if (sum(W_inPoly) > 0) theList += onetrace+";" endif endfor return theList end // Example of using ListTracesInMarquee: change the color of all traces that intersect the marquee Function ColorTracesInMarquee(graphname, red, green, blue) String graphname Variable red, green, blue String tlist = ListTracesInMarquee(graphname) Variable ntraces = ItemsInList(tlist) Variable i for (i = 0; i < ntraces; i += 1) String onetrace = StringFromList(i, tlist) ModifyGraph/W=$graphname rgb($onetrace)=(red, green, blue) endfor end

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More