⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm_plotsel.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
字号:
function fig = fm_plotsel(varargin)
% FM_PLOTSEL create GUI to select plotting variables
%
% HDL = FM_PLOTSEL()
%
%Author:    Federico Milano
%Date:      21-Dec-2005
%Version:   1.0.0
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

global Fig Theme Varname Settings File

% check for data file
if isempty(File.data)
  fm_disp('Set a data file before selecting plot variables.',2)
  return
end
% check for initial power flow solution
if ~Settings.init
  fm_disp('Solve base case power flow...')
  Settings.show = 0;
  fm_set lf
  Settings.show = 1;
  if ~Settings.init, return, end
end

if nargin
  switch varargin{1}
   case 'selvars'

    values = get(gcbo,'Value');
    hdl = findobj(gcf,'Tag','listbox2');
    Varname.idx = values;
    nidx = length(Varname.idx);
    toplist = max(1,nidx-8);
    set(hdl,'String',Varname.uvars(Varname.idx), ...
            'Value',nidx, ...
            'ListboxTop',toplist)

   case 'selection'

    if isempty(Varname.idx)
      set(gcbo,'String','<Empty>','Value',1)
    elseif Varname.idx(end) > Varname.nvars
      set(gcbo,'String','<Empty>','Value',1)
      Varname.idx = [];
    else
      nidx = length(Varname.idx);
      toplist = max(1,nidx-8);
      set(gcbo,'String',Varname.uvars(Varname.idx), ...
               'Value',nidx, ...
               'ListboxTop',toplist)
    end

   case 'remove'

    hdl = findobj(gcf,'Tag','listbox2');
    values = get(hdl,'Value');
    Varname.idx(values) = [];
    if isempty(Varname.idx)
      set(hdl,'String','<Empty>')
    else
      nidx = length(Varname.idx);
      toplist = max(1,nidx-8);
      set(hdl,'String',Varname.uvars(Varname.idx), ...
              'Value',min(max(values),nidx), ...
              'ListboxTop',toplist)
    end

   case 'create_custom'

    setarea(0,1,'on','off')

   case 'creates_fixed'

    setarea(1,0,'off','on')

   case 'custom'

    setarea(0,1,'on','off')
    setidx

   case 'fixed'

    setarea(1,0,'off','on')
    setidx

   case 'setx'

    Varname.x = get(gcbo,'Value');
    setidx

   case 'setV'

    Varname.V = get(gcbo,'Value');
    setidx

   case 'setPQ'

    Varname.PQ = get(gcbo,'Value');
    setidx

   case 'setPij'

    Varname.Pij = get(gcbo,'Value');
    setidx

  end
  return
end

if Fig.plotsel > 0, figure(Fig.plotsel), return, end

h0 = figure(...
    'Units','normalized',...
    'Color',Theme.color01,...
    'Colormap',[], ...
    'MenuBar','none',...
    'Name','Select Plot Variables',...
    'NumberTitle','off',...
    'Position',sizefig(0.508,0.684), ...
    'FileName','fm_plotsel', ...
    'HandleVisibility','callback',...
    'Tag','figure1',...
    'CreateFcn','Fig.plotsel = gcf;', ...
    'DeleteFcn','Fig.plotsel = 0;', ...
    'UserData',[],...
    'Visible','on');

% Menu File
h1 = uimenu('Parent',h0, ...
  'Label','File', ...
  'Tag','MenuFile');
h2 = uimenu('Parent',h1, ...
  'Callback','close(gcf)', ...
  'Label','Exit', ...
  'Tag','PlotSelExit', ...
  'Accelerator','x');

h1 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Style','frame', ...
    'Tag','uipanel1',...
    'Clipping','on',...
    'Position',[0.075 0.211 0.386 0.716]);

idx = Varname.idx;
if isempty(idx), idx = 1; end

h1 = uicontrol(...
    'Parent',h0, ...
    'BackgroundColor',Theme.color03, ...
    'Callback','fm_plotsel selvars', ...
    'FontName',Theme.font01, ...
    'Max',20, ...
    'ForegroundColor',Theme.color06, ...
    'Units','normalized',...
    'Position',[0.111 0.24 0.314 0.616],...
    'String',Varname.uvars,...
    'Style','listbox',...
    'Value',idx,...
    'Tag','listbox1');

h1 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Style','frame', ...
    'Tag','uipanel2',...
    'Clipping','on',...
    'Position',[0.537 0.534 0.386 0.393]);

h5 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'BackgroundColor',Theme.color03, ...
    'CreateFcn','fm_plotsel selection', ...
    'Max',20, ...
    'FontName',Theme.font01, ...
    'ForegroundColor',Theme.color06, ...
    'Position',[0.578 0.569 0.305 0.287],...
    'String',{  '<Empty>' },...
    'Style','listbox',...
    'Value',1,...
    'Tag','listbox2');

set(h5,'Value',max(1,length(Varname.idx)-8))

h1 = uicontrol( ...
    'Parent',h0, ...
    'Units', 'normalized', ...
    'BackgroundColor',Theme.color02, ...
    'HorizontalAlignment','left', ...
    'Position',[0.117 0.874 0.285 0.039], ...
    'String','Variable List', ...
    'Style','text', ...
    'Tag','StaticText1');

h1 = uicontrol( ...
    'Parent',h0, ...
    'Units', 'normalized', ...
    'BackgroundColor',Theme.color02, ...
    'HorizontalAlignment','left', ...
    'Position',[0.58 0.874 0.285 0.039], ...
    'String','Custom Selection', ...
    'Style','text', ...
    'Tag','StaticText2');

h8 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'BackgroundColor',Theme.color03, ...
    'FontWeight','bold', ...
    'ForegroundColor',Theme.color09, ...
    'Callback','close(gcf);', ...
    'Position',[0.614 0.069 0.232 0.073],...
    'String','Close',...
    'Tag','Pushbutton1');

h9 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Tag','uipanel4',...
    'Clipping','on',...
    'Style','frame',...
    'Position',[0.537 0.211 0.386 0.287]);

h1 = uicontrol( ...
    'Parent',h0, ...
    'Units', 'normalized', ...
    'BackgroundColor',Theme.color02, ...
    'HorizontalAlignment','left', ...
    'Position',[0.58 0.44 0.285 0.039], ...
    'String','Fixed Selection', ...
    'Style','text', ...
    'Tag','StaticText3');

h10 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Callback','fm_plotsel setx', ...
    'HorizontalAlignment','left', ...
    'Position',[0.614 0.39 0.234 0.04],...
    'String','State Variables',...
    'Value',Varname.x,...
    'Style','radiobutton',...
    'Tag','radiobutton1');

h11 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Callback','fm_plotsel setV', ...
    'HorizontalAlignment','left', ...
    'Position',[0.614 0.3415 0.234 0.04],...
    'String','Bus Voltages',...
    'Value',Varname.V,...
    'Style','radiobutton',...
    'Tag','radiobutton2');

h12 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Callback','fm_plotsel setPQ', ...
    'Position',[0.614 0.294 0.234 0.04],...
    'HorizontalAlignment','left', ...
    'String','Power Injections',...
    'Value',Varname.PQ,...
    'Style','radiobutton',...
    'Tag','radiobutton3');

h13 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Callback','fm_plotsel setPij', ...
    'Position',[0.614 0.2455 0.234 0.04],...
    'HorizontalAlignment','left', ...
    'String','Power Flows',...
    'Style','radiobutton',...
    'Value',Varname.Pij,...
    'Tag','radiobutton4');

h6 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Callback','fm_plotsel fixed', ...
    'CreateFcn','fm_plotsel create_fixed', ...
    'Position',[0.075 0.119 0.292 0.04],...
    'HorizontalAlignment','left', ...
    'String','Fixed Selection',...
    'Value',Varname.fixed,...
    'Style','checkbox',...
    'Tag','checkbox_fixed');

h7 = uicontrol(...
    'Parent',h0, ...
    'Units','normalized',...
    'Callback','fm_plotsel custom', ...
    'CreateFcn','fm_plotsel create_custom', ...
    'Position',[0.075 0.069 0.292 0.04],...
    'HorizontalAlignment','left', ...
    'String','Selection',...
    'Value',Varname.custom,...
    'Style','checkbox',...
    'Tag','checkbox_custom');

h1 = uicontrol( ...
    'Parent',h0, ...
    'CData',fm_mat('main_exit'), ...
    'Units','normalized', ...
    'BackgroundColor',Theme.color02, ...
    'Callback','fm_plotsel remove', ...
    'Position',[0.8341 0.863 0.05 0.05], ...
    'Tag','PushRemove');

if nargout > 0, fig = h0; end

% ===============================================
function setarea(s1,s2,s3,s4)
% ===============================================

global Varname

value = get(gcbo,'Value');

hdl_fix = findobj(gcf,'Tag','checkbox_fixed');
hdl_cus = findobj(gcf,'Tag','checkbox_custom');
hdl_list1 = findobj(gcf,'Tag','listbox1');
hdl_list2 = findobj(gcf,'Tag','listbox2');
hdl_rad1 = findobj(gcf,'Tag','radiobutton1');
hdl_rad2 = findobj(gcf,'Tag','radiobutton2');
hdl_rad3 = findobj(gcf,'Tag','radiobutton3');
hdl_rad4 = findobj(gcf,'Tag','radiobutton4');
hdl_text1 = findobj(gcf,'Tag','StaticText1');
hdl_text2 = findobj(gcf,'Tag','StaticText2');
hdl_text3 = findobj(gcf,'Tag','StaticText3');

if value
  set(hdl_fix,'Value',s1);
  set(hdl_cus,'Value',s2);
  set(hdl_list1,'Enable',s3)
  set(hdl_rad1,'Enable',s4)
  set(hdl_rad2,'Enable',s4)
  set(hdl_rad3,'Enable',s4)
  set(hdl_rad4,'Enable',s4)
  set(hdl_text1,'Enable',s3)
  set(hdl_text3,'Enable',s4)
  Varname.custom = s2;
  Varname.fixed = s1;
else
  set(hdl_fix,'Value',s2);
  set(hdl_cus,'Value',s1);
  set(hdl_list1,'Enable',s4)
  set(hdl_rad1,'Enable',s3)
  set(hdl_rad2,'Enable',s3)
  set(hdl_rad3,'Enable',s3)
  set(hdl_rad4,'Enable',s3)
  set(hdl_text1,'Enable',s4)
  set(hdl_text3,'Enable',s3)
  Varname.custom = s1;
  Varname.fixed = s2;
end

% ===============================================
function setidx
% ===============================================

global Varname Bus Syn DAE Oxl Exc Line

if Varname.fixed

  Varname.idx = [];

  if Varname.x
    Varname.idx = [1:DAE.n]';
  end

  if Varname.V
    idx0 = DAE.n;
    Varname.idx = [Varname.idx; idx0+[1:2*Bus.n]'];
  end

  if Varname.PQ
    idx0 = DAE.n+2*Syn.n+Oxl.n+Exc.n+2*Bus.n;
    Varname.idx = [Varname.idx; idx0+[1:2*Bus.n]'];
  end

  if Varname.Pij
    idx0 = DAE.n+2*Syn.n+Oxl.n+Exc.n+4*Bus.n;
    Varname.idx = [Varname.idx; idx0+[1:4*Line.n]'];
  end

elseif Varname.custom

  Varname.idx = get(findobj(gcf,'Tag','listbox1'),'Value');

end

hdl_list2 = findobj(gcf,'Tag','listbox2');
if isempty(Varname.idx)
  set(hdl_list2,'String','<Empty>','Value',1)
else
  nidx = length(Varname.idx);
  toplist = max(1,nidx-8);
  set(hdl_list2,'String',Varname.uvars(Varname.idx), ...
                'Value',nidx, ...
                'ListboxTop',toplist)
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -