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.

Antworten (5)

TAB
TAB am 14 Mär. 2012

1 Stimme

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'));
Doug Eastman
Doug Eastman am 13 Mär. 2012

0 Stimmen

Assuming your top-level model is called TopModel you could use:
a = find_system('Parent','TopModel');
close_system(a)
Noam G
Noam G am 14 Mär. 2012

0 Stimmen

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 am 14 Sep. 2015

0 Stimmen

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.

Kategorien

Produkte

Tags

Gefragt:

am 13 Mär. 2012

Beantwortet:

am 14 Sep. 2015

Community Treasure Hunt

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

Start Hunting!

Translated by