
Duplicate the portion of a wave displayed in a graph


aclight
// Usage: Right click on a trace and choose Partial duplicate -> Visible portion // And the part of the wave that is currently within the x range of the graph // window will be duplicated into a new wave. Menu "TracePopup" SubMenu "Partial duplicate" "Visible portion", /Q, DuplicateVisiblePortion() End End Function DuplicateVisiblePortion() // Determine which trace the user selected. GetLastUserMenuInfo String graphName = S_graphName String traceName = S_traceName // Call function to get the range to duplicate. Variable xMinPnt, xMaxPnt GetXRangeOfTracesXAxis(graphName, traceName, xMinPnt, xMaxPnt) WAVE targetWave = TraceNameToWaveRef(graphName, traceName) // Duplicate the wave. WAVE/Z destWave String destWaveFullPath = DuplicateSpecifiedPortionOfWave(targetWave, xMinPnt, xMaxPnt) // Print a summary of what was done to the history window. printf "Duplicated %s[%d,%d] into %s\r", GetWavesDataFolder(targetWave, 2), xMinPnt, xMaxPnt, destWaveFullPath End Function/S DuplicateSpecifiedPortionOfWave(targetWave, xMinPnt, xMaxPnt) WAVE targetWave Variable xMinPnt Variable xMaxPnt // Create a name for the destination wave. String destWaveName = GetWavesDataFolder(targetWave, 1) + PossiblyQuoteName(UniqueName(CleanupName(NameOfWave(targetWave) + "Copy", 1), 1, 0)) Duplicate/R=[xMinPnt, xMaxPnt] targetWave, $(destWaveName) WAVE destWave = $(destWaveName) return GetWavesDataFolder(destWave, 2) // Return the full path to the new wave. End Function GetXRangeOfTracesXAxis(graphName, traceName, xMinPnt, xMaxPnt) String graphName, traceName Variable &xMinPnt, &xMaxPnt // Both passed by reference WAVE targetWave = TraceNameToWaveRef(graphName, traceName) // Determine X limits of trace that is visible in graph window. String info = TraceInfo(graphName, traceName, 0) String xAxis = StringByKey("XAXIS", info, ":", ";") GetAxis/W=$(graphName)/Q $(xAxis) if (V_flag == 0) // xAxis is actually used in the graph--this should always be true // Convert axis values into point values xMinPnt = x2pnt(targetWave, V_min) xMaxPnt = x2pnt(targetWave, V_max) endif End

Forum

Support

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