#pragma rtGlobals=1 // Use modern global access method. //////////////////////////////////////////////////////////////////////////////// //////////////////// 7700 CAD system //////////////////////////////////////////////////////////////////////////////// Menu "CAD" "Panel/0",CADPanel() "Load/1",LoadCCCWave() "Procedure/SO0",DisplayProcedure "CADPanel" CADInitialize() End //////////////////////////////////////////////////////////////////////////////// // Main Panel //////////////////////////////////////////////////////////////////////////////// Function/S CADInitialize() NewDataFolder/O/S root:CAD NVar/Z Wsize,DX,DY if(NVar_Exists(Wsize)==0) Variable/G Wsize Wsize=0.6 endif if(NVar_Exists(DX)==0) Variable/G DX DX=0 endif if(NVar_Exists(DY)==0) Variable/G DY DY=0 endif SetDataFolder root: End Function CADPanel() String list SetDataFolder root:CAD list=WaveList("*",";","TEXT:1") list=RemoveFromList("ListWave",list) list=RemoveFromList("SelectWave",list) NVar/Z Wsize,DX,DY Make/O/T/N=(ItemsInList(list)) ListWave Make/O/N=(ItemsInList(list)) SelectWave SetDataFolder root: ListWave[]=StringFromList(p,list) SelectWave[]=0 Dowindow/K Main NewPanel /W=(10,50,320,220) Dowindow/C Main ListBox Wave_List listwave=ListWave,mode=4,pos={10,10},size={150,150},selWave=SelectWave PopupMenu ActionPop mode=1,pos={170,10},proc=CADPopProc,title="Action ",value="Display;Edit;Rotate;Flip;Shift;Duplicate;Save;Kill;Merge;" PopupMenu DotPop mode=2,pos={170,40},title="Dotmap",value="20000;60000;240000;" PopupMenu CsizePop mode=4,pos={170,70},title="ChipSize",value="0.075;0.15;0.3;0.6;1.2;2.4;" PopupMenu AxisPop disable=1,pos={170,70} SetVariable SetDX disable=1,limits={-30000,30000,0},pos={170,70},size={100,15},title="Delta X ",value=DX SetVariable SetDY disable=1,limits={-30000,30000,0},pos={170,90},size={100,15},title="Delta Y ",value=DY SetVariable SetWsize limits={0,Inf,0},pos={170,100},size={90,15},title="WinSize",value=Wsize Button CADButton pos={200,130},proc=CADButtonProc,title="CAD" End Function CADPopProc(ctrlName,popNum,popStr) : PopupMenuControl String ctrlName Variable popNum String popStr Variable dotmap String list strswitch(popStr) case "Display": PopupMenu CsizePop disable=0 PopupMenu DotPop disable=0 SetVariable SetWsize disable=0 PopupMenu AxisPop disable=1 SetVariable SetDX disable=1 SetVariable SetDY disable=1 break case "Rotate": PopupMenu CsizePop disable=1 PopupMenu DotPop disable=0 SetVariable SetWsize disable=1 PopupMenu AxisPop disable=0,title="Angle ",value="90;180;270;" SetVariable SetDX disable=1 SetVariable SetDY disable=1 break case "Flip": PopupMenu CsizePop disable=1 PopupMenu DotPop disable=0 SetVariable SetWsize disable=1 PopupMenu AxisPop disable=0,title="Axis ",value="X;Y;" SetVariable SetDX disable=1 SetVariable SetDY disable=1 break case "Shift": PopupMenu CsizePop disable=1 PopupMenu DotPop disable=0 SetVariable SetWsize disable=1 PopupMenu AxisPop disable=1 ControlInfo DotPop dotmap=str2num(S_Value) SetVariable SetDX disable=0,limits={-dotmap/2,dotmap/2,1} SetVariable SetDY disable=0,limits={-dotmap/2,dotmap/2,1} break default: PopupMenu CsizePop disable=1 PopupMenu DotPop disable=1 SetVariable SetWsize disable=1 PopupMenu AxisPop disable=1 SetVariable SetDX disable=1 SetVariable SetDY disable=1 endswitch SetDataFolder root:CAD Wave/T ListWave Wave SelectWave list=WaveList("*",";","TEXT:1") list=RemoveFromList("ListWave",list) list=RemoveFromList("SelectWave",list) ReDimension/N=(ItemsInList(list)) ListWave ReDimension/N=(ItemsInList(list)) SelectWave ListWave[]=StringFromList(p,list) SelectWave[]=0 SetDataFolder root: End Function CADButtonProc(ctrlName) : ButtonControl String ctrlName Variable i,num,val1,val2,j String list,action,name,state SetDataFolder root:CAD NVar DX,DY Wave/T ListWave Wave SelectWave state=KeyboardState("") num=DimSize(ListWave,0) ControlInfo DotPop val1=str2num(S_Value) ControlInfo AxisPop val2=V_Value ControlInfo ActionPop action=S_Value strswitch(action) case "Display": //Ctrl : Old CAD Window is duplicated. Alt : Append to Old CAD Window DoWindow/F CAD if(V_flag && StringMatch(state[0],"1")) DoWindow/C $("CAD_"+num2str(ItemsInList(WinList("CAD_*",";","WIN:1"))+1)) Display/W=(10,150,350,490) DoWindow/C CAD endif if(V_flag==0 || StringMatch(state[1],"0")) DoWindow/K CAD Display/W=(10,150,350,490) DoWindow/C CAD endif for(i=0;i