
Batch savePict
//saves one or more graphs as enhanced metafiles, or other image file types as specified by the optional type parameter. #pragma TextEncoding = "Windows-1252" #pragma rtGlobals=3 // Use modern global access method and strict wave access. function SavePICT_batch(matchStr,numGraphs, pathName, [h, w, res, nStr,cmdStr,type]) String matchStr //optional matchStr for window names -- pass "" or "*" for top-most graphs Variable numGraphs String pathName //specify a symbolic path to the directory for saving the files. User is prompted to select a directory if the symbolic path does not exist Variable h, w //optionally set height. Uses inches by multiplying input value by 72 Variable res //see otions in switch statement below. 0 or 8 is 8x screen resolution, 1 is 1x, so on String nStr //when passed, this is used as start of output name. If more than one graph being saved, naming is [nStr]0, [nStr]1, ... string cmdStr //when passed, disp_general(cmdStr) is run on each graph before saving, e.g. "modifygraph fsize=16" Variable type //-2 for enhanced metafile, -5 for png, -7 for tiff. See the savePICT /E flag for more details Variable usedType if (ParamIsDefault(type)) //no type speficiation, use default usedType = -2 //-2 for high res enhanced metafile (good for illustrator), -5 for png, -7 for tiff else usedType = type endif Variable spbt = 1 //Save PNG Background as Transparent (only affects PNGs) PathInfo $pathName if (!V_flag) Newpath/O $pathName if (V_flag) Print "SavePICT_batch(): path set canceled; aborting." endif endif if (ParamIsDefault(res)) res = 8 endif Variable resVal = res*72 //1 to 8 are options for res if (strlen(matchStr) < 1) //default to all windows matchStr="*" endif String graphWindows = WinList(matchStr, ";", "WIN:1" ) if (!ParamIsDefault(cmdStr)) disp_general(cmdStr, "*", numGraphs) endif Variable i, count; String sname Variable num=min(numGraphs,itemsinlist(graphWindows)) for (i=0; i<num ; i+=1) //check for height, width changes if (!ParamIsDefault(h)) ModifyGraph/W=$StringFromList(i, graphWindows) height = h*72; doupdate ModifyGraph/W=$StringFromList(i, graphWindows) height = 0 //makes height adjustable again endif if (!ParamIsDefault(w)) ModifyGraph/W=$StringFromList(i, graphWindows) width = w*72; doupdate ModifyGraph/W=$StringFromList(i, graphWindows) width = 0 //makes height adjustable again endif //check for a custom name if (ParamIsDefault(nStr)) //no custom name SavePICT/Z/O/P=$pathName/EF=2/Q=1/B=(resVal)/E=(usedType)/TRAN=(spbt)/WIN=$StringFromList(i, graphWindows) Print "Saved: " + StringFromList(i, graphWindows) else if (numGraphs < 2) //just one input, don't append a number to give it a unique name sname = nStr else //multiple windows to save, append a number to make sure output name is unique for each one sname = nStr + num2str(count) endif switch (usedType) case -2: //emf sname += ".emf" break case -5: //png sname += ".png" break case -7: sname += ".tif" break endswitch SavePICT/Z/O/P=$pathName/EF=2/E=(usedType)/Q=1/B=(resVal)/TRAN=(spbt)/WIN=$StringFromList(i, graphWindows) as sname Print "Saved: " + StringFromList(i, graphWindows),"save name =", sname endif if (V_flag == 0) count+=1 else Print "Error in SavePICT_batch() from SavePICT. Error code = " + num2str(V_flag) endif endfor Print "total num saved = " + num2str(count) + " of target num = " + num2str(numGraphs) end function disp_general(cmdStr, matchStr, numGraphs) String cmdStr, matchStr; Variable numGraphs if (strlen(matchStr) < 1) matchStr = "*" //defaul to all graphs endif String list = winlist(matchStr,";","WIN:1") Variable i,numWins=min(numGraphs,itemsinlist(list)); String winN; for (i=0;i<numWins;i+=1) winN = StringFromList(i, list) Dowindow/F $winN //bring to front Execute cmdStr endfor dowindow/H/F //send the command window back to the top of the desktop. end

Forum

Support

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