www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/+cgmergesetup/MergeItems.m

    classdef MergeItems < handle
 %CGMERGESETUP.MERGEITEMS wizard page for setting up composite models
    
%  Copyright 2009 The MathWorks, Inc. and Ford Global Technologies, Inc.
  
    
    properties 
        %CAGEPROJECT pointer to cgproject
        CageProject
        %pSelected array of pointers to items to be merged
        pSelected = mbcpointer(1,0);
        %MODENAME name of mode variable in CAGE
        ModeName = 'Mode';
        %MODELABELS names for composite modes
        ModeLabels={};
        %SETPOINTS set points for composite model
        %    This property is not exposed to users yet
        SetPoints
        %OPPOINTTOLERANCES tolerances for other operating point variables
        %    This option is only relevant when merging point-by-point
        %    models
        OpPointTolerances
    end
    
    properties(Abstract,Dependent,SetAccess=private)
        %LABELS labels for items to be merged
        Labels
        %INPUTLABELS inputs as a comma separated list for each test plan
        InputLabels
        %INPUTLIST inputs of all selected test plans
        InputList
        %MERGELIST list of items available for merging into a composite model
        MergeList
        %COMPOSITEMODELS cell array of all composite models. 
        CompositeModels
        %ICONFILES icon files for ModelList
        IconFiles
    end
    
    properties(Abstract,SetAccess=protected)
        %SAMPLEMODEL stored composite model to aid in setting up
        SampleModel
    end
    
    properties(Access=protected)
        %PALLITEMS internal list of all items available for merging
        pAllItems
    end
    
    
    methods
        
        function M = MergeItems(CGP)
            %MERGEITEMS constructor
            
            if nargin==0
                CGP = get(cgbrowser,'RootNode');
            end
            M.CageProject = CGP;
        end
       
        function setDefaults(M)
            %SETDEFAULTS set defaults before setting mode details
            %    setDefaults(M)
            
            mdl = M.SampleModel;
            s= getsymbols(mdl);
            M.ModeName = s{end};
            tol = getAbsoluteTolerance(mdl);
            M.OpPointTolerances = tol(1:end-1);
            M.SetPoints = mean(getranges(mdl),1);
            Ops = getSwitchPoints(mdl);
            M.SetPoints(end-size(Ops,2)+1:end) = Ops(1,:);

            if ~isempty(M.pSelected)
                DefLabels = pveceval(M.pSelected,@getname);
            else
                DefLabels = {};
            end
            
            ModeLabels = getModeLabels(mdl); %#ok<*PROP>
            if ~isempty(ModeLabels) && length(ModeLabels)~=length(DefLabels)
                M.ModeLabels = ModeLabels;
            else
                M.ModeLabels = DefLabels;
            end
        end
        
        
                
        function pm = importToCAGE(M,cgp)
            %IMPORTTOCAGE import composite model to CAGE 
            
            if nargin>1
                M.CageProject = cgp;
            end
            
            mdls = M.CompositeModels;
            pm = mbcpointer(1,length(mdls));
            for i=1:length(mdls)
                % don't replace
                pm(i) = ImportMBCModel(info(M.CageProject),mdls{i},getname(mdls{i}),false);
            end
            

            pCage = pm(1).getdata;
             
            % setpoints for inputs
            pInputs = pCage.getinputs;
            IsInport = parrayeval(pInputs,@isinport,{},@false);
            passign(pInputs(IsInport), parrayeval(pInputs(IsInport),@setnomvalue,{num2cell(M.SetPoints)}));
            
        end
        
    end
    
end