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.

回答 (5 件)

TAB
TAB 2012 年 3 月 14 日

1 投票

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 2012 年 3 月 13 日

0 投票

doc bdclose
doc close_system
Doug Eastman
Doug Eastman 2012 年 3 月 13 日

0 投票

Assuming your top-level model is called TopModel you could use:
a = find_system('Parent','TopModel');
close_system(a)
Noam G
Noam G 2012 年 3 月 14 日

0 投票

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 2015 年 9 月 14 日

0 投票

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.

カテゴリ

ヘルプ センター および File ExchangeProgrammatic Model Editing についてさらに検索

製品

タグ

質問済み:

2012 年 3 月 13 日

回答済み:

2015 年 9 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by