Rename or reorganize simulink library blocks
35 次查看(过去 30 天)
显示 更早的评论
Hello, I want to ask a question about the renaming or reorganize blocks in self-made Simulink library.
It seems that every time I change the name of the block in library, all links of that block in the normal Simulink model are gone. I think lots of people have faced this problem before. Does anyone have an idea or a script/function which can do this? e.g. right click on the the library block, insert a new name, then all its linked blocks in the current opened Simulink models are renamed/updated.
Also about it interests me whether there is a way to reorganize the blocks in library into a sub-folder, but at the same time the blocks' old links remain still working.
Thanks
Song
0 个评论
回答(2 个)
Gautham Ponnu
2018-1-3
Hello,
I made a small script to do this.
So, basically if you have a 'Block_A' in your library and you want to change it.
You copy 'Block_A' and rename it to 'Block_B' and make any changes you want except modifying the parameters.
Now, you call this script as renameLibLinks('modelname','Block_A','Block_B'). This script will parse through the entire model hierarchy ( including any model references) and replace all links to Block_A with Block_B. Once this is complete you can then delete Block_A in your library.
function renameLibLinks(mdl,origLibBlockName,newLibBlockName)
% RENAMELIBLINKS(model, orignalLibraryBlockName, newLibraryBlockName)
% This function will parse through the model for all blocks which are
% linked to originalLibraryBlockName and replace their link with
% newLibraryBLockName
%
% eg. >> renameLibLinks(gcs,'Control/block_A','Coordinates/block_B')
%%Load Model
system = load_system(mdl);
origRefBlock = ['mbdriLib/',origLibBlockName,'.*'];
newRefBlock = ['mbdriLib/',newLibBlockName];
blocks = find_system(system,'FollowLinks','on',...
'LookUnderMasks','on',...
'RegExp','on',...
'LinkStatus','resolved',...
'ReferenceBlock',origRefBlock);
% Unlock Lib Link
set_param(mdl, 'LockLinksToLibrary', 'off')
%%Find lib and rename
for i=1:numel(blocks)
set_param(blocks(i),'ReferenceBlock',newRefBlock);
end
end
Hope this helps.
Cheers, Gautham
0 个评论
Vidya Viswanathan
2016-3-30
Hi Song,
I understand that you are looking for an automated way of renaming certain blocks in all the Simulink models that are currently open by accessing the block in Simulink Library Browser. I am not sure if there is a method to do that directly. However, in regard to your second question on creating a custom subfolder in Simulink Library Browser, there is indeed a method to accomplish the same. You can add custom libraries (which can contain the default library blocks as well) in the library browser. Refer to the following link for an illustration:
Regards,
Vidya
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!