我试图以编程方式将Simulink Blocks从模型复制到库中 . 我在不同的文件夹中有几个同名的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
现在我试图复制一个块 . 块似乎也包含complet模型的句柄,因此:
Block(1) == sys
当我尝试这个时,我得到:
Invalid destination block specification
add_block可以不复制到库吗?有可能以某种方式做到这一点吗?
最好的祝福
卢卡斯
1 回答
对于add_block,您需要提供目标路径作为第二个参数 .
您需要使用单元格paren for
Blocks
来获取源的路径名 . 如果希望目标与原始块具有相同的名称,则可能需要通过删除源模型名称从Blocks{2}
中提取destination_name
.