【发布时间】:2015-10-13 10:46:11
【问题描述】:
我正在尝试以编程方式将 Simulink 模块从模型复制到库中。我在不同的文件夹中有几个同名的 Simulink 模型。我想遍历它们并将这些模型中的模块复制到 Simulink 库中。像这样的:
function UpdateLibrary()
%UPDATELIBRARY Updates BlockLib.mdl form PLECSBlocks of Components
% Detailed explanation goes here
UserLibDir = SimulationManagerClass.Dir.UserLib; %get the path
if exist([SimulationManagerClass.Dir.UserLib, '\BlockLib.mdl'], 'file')
delete([SimulationManagerClass.Dir.UserLib, '\BlockLib.mdl']);
end
BlockLib = new_system('BlockLib', 'Library'); %empty library
PlecsBlocks = rdir([SimulationManagerClass.Dir.UserLib, '\**\PLECSBlock.mdl']); %get all my sources
for i = 1:numel(PlecsBlocks)
SystemPath = PlecsBlocks(i).name;
sys = load_system(PlecsBlocks(i).name);
Blocks = find_system(sys);
add_block(Blocks(2),BlockLib);
close_system(sys);
end
save_system(BlockLib, [SimulationManagerClass.Dir.UserLib, '\BlockLib.mdl']);
close_system(BlockLib);
end
现在我正在尝试只复制一个块。 Blocks 似乎也包含完整模型的句柄,因此:
Block(1) == sys
当我尝试这个时,我得到:
Invalid destination block specification
add_block 不能复制到库吗?有没有可能以某种方式做到这一点?
最好的问候
卢卡斯
【问题讨论】: