How to close Simulink model subsystems

9 visualizzazioni (ultimi 30 giorni)
Noam G
Noam G il 13 Mar 2012
Risposto: Pablo Romero il 14 Set 2015
For a given model, I am looking for an easy way to close all open subsystems' windows, except the basic one. If I close them all, save the model and reopen it, it works, but I want to do the same with code.

Risposte (5)

TAB
TAB il 14 Mar 2012
No need of using lots of variables & loop. Just find all the subsystems in the model and close them.
close_system(find_system('YouModel','findall','on','BlockType','SubSystem'));

Honglei Chen
Honglei Chen il 13 Mar 2012
doc bdclose
doc close_system

Doug Eastman
Doug Eastman il 13 Mar 2012
Assuming your top-level model is called TopModel you could use:
a = find_system('Parent','TopModel');
close_system(a)

Noam G
Noam G il 14 Mar 2012
Based on Doug Eastman's tip, I came up with the following code. It closes all the subsystem except the top levels (of several systems):
Blocks_List = find_system;
Blocks_To_Close = Blocks_List;
for III=length(Blocks_List):-1:1
if isempty(strfind(Blocks_List{III},'/'))
Blocks_To_Close(III)=[];
end
end
close_system(Blocks_To_Close)

Pablo Romero
Pablo Romero il 14 Set 2015
There is a small trick. You can load again the top-level of the system and save it (if requested).
open_system(bdroot); % Load the top-level
close_system(bdroot, 1); % Save and close the Model
Of course you can use your Modelname instead of bdroot.

Categorie

Scopri di più su Programmatic Model Editing in Help Center e File Exchange

Tag

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by