How can I select a system/model without opening it?
조회 수: 10 (최근 30일)
이전 댓글 표시
Is there a way to select a model so that bdroot points to it without opening it?
load_system('model1');
disp(bdroot); % bdroot is now 'model1')
load_system('model2');
disp(bdroot); % bdroot is now 'model2')
% ****** 1. Code that require bdroot to be 'model2'
% ****** and 'model1' to be loaded.
% ****** 2. code that require bdroot to be 'model1'.
How can number 2 be achieved without opening model1? Another load_system('model1') doesn't do the trick. I'm looking for a select_system() I guess.
[EDIT: A better example. Please paste into an m-file called solveme.m and call from MATLAB.]
function solveme()
% bdclose all % Uncomment if you have no unsaved work
load_system('vdp');
load_system('simulink');
% Insert solution here!
% -- open_system or other commands that makes the model visible are not
% permitted
% Extra credits if close_system and bdclose are not used
disp(fcnt)
function ret = fcnt()
if strcmp(bdroot, 'vdp')
ret = 'Sucess!';
else
ret = 'Failure!';
end
댓글 수: 0
답변 (4개)
Andreas
2016년 9월 28일
This topic is very old, but I'm really interestedin this feature. Is there any new functionality within simulink api?
댓글 수: 1
Sachin Ganjare
2012년 10월 11일
You can use:
set_param([bdroot,'model1']) %Do check the syntax please
Hope it helps!!!
댓글 수: 3
Sachin Ganjare
2012년 10월 11일
편집: Sachin Ganjare
2012년 10월 11일
My bad, I did not understand the question correctly.
Before doing load_system for model1 you should close the open system i.e model2, otherwise bdroot will not point to recently loaded model.
load_system('model1');
disp(bdroot); % bdroot is now 'model1')
load_system('model2');
close_system('model1');
disp(bdroot); % bdroot is now 'model2')
Kaustubha Govind
2012년 10월 11일
I can't think of a way to switch bdroot to another model, other than Sachin's idea of closing the current bdroot model(model2 in your example). Can your code be re-written to accept the model name as an argument instead of using bdroot? In general, MATLAB functions that use bdroot, gcs and gcb tend to be too presumptive.
댓글 수: 2
Kaustubha Govind
2012년 10월 11일
Johannes: I agree that something like select_system would be nice - could you please submit an enhancement request via MathWorks Tech Support to consider adding such an option for a future release?
Matthew Manthey
2016년 10월 14일
This is somewhat slow in my opinion, but I believe it serves the purpose
function select_system( obj )
% Ignore the return value
RTW.getBuildDir(obj);
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Programmatic Model Editing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!