How to close Simulink model subsystems

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.

Answers (5)

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'));
Assuming your top-level model is called TopModel you could use:
a = find_system('Parent','TopModel');
close_system(a)
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)
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.

Categories

Products

Tags

Asked:

on 13 Mar 2012

Answered:

on 14 Sep 2015

Community Treasure Hunt

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

Start Hunting!