How to find Stateflow chart using API's
18 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello All,
I have simulink model with Subsystem. My subssystem are linked with Library and these library links are resolved. Inside subsystem, I have stateflow chart. I want to find stateflow chart using m-scripts.
sflow=sfroot;
model = sflow.find('-isa', 'Simulink.BlockDiagram','-and','Name','libraryIncluded');
chartArray = model.find('-isa','Stateflow.Chart');
here chartArray = model.find('-isa','Stateflow.Chart'); does not returns statflow charts from library links. How can I get all charts from linked libraries?
PS: Please find Library file and simulink model from attachments
0 Commenti
Risposta accettata
Fangjun Jiang
il 3 Ago 2015
I had a similar need but couldn't find a way. It was confirmed by the Mathworks tech support that there is no direct way to find the Stateflow chart objects inside a linked library block in a model. I ended up writing the following code. It was verified in many models, including some models with nested library links.
% Updating the model is needed to make sure libraries, if any, are loaded
% There might be error updating the model, but the error are non-critical
% for this operation
try
fprintf(1,'Need to update the model to load all libraries.\n');
set_param(Model,'SimulationCommand','Update');
catch %#ok<CTCH>
fprintf(1,'There are errors updating the model. Ignore ...');
end
ChartRoots=libinfo(Model);
ChartRoots=[{Model},{ChartRoots.Library}];
sfrt=sfroot;
ChartObj=sfrt.find('-isa','Stateflow.Chart');
Index=ismember(bdroot(get(ChartObj,'Path')),ChartRoots);
ChartObj=ChartObj(Index);
4 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Simulink Functions in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!