我正在寻找一种通过代码将一个子系统的内容复制到同一模型中另一个现有子系统的方法。有最佳实践吗?
谢谢
答案 0 :(得分:2)
这不是那么困难,但是有点棘手。 您可以先使用 Simulink.SubSystem.copyContentsToBlockDiagram 将子系统的内容复制到新的框图(临时目标)中。您还应该使用 save_system 命令。
然后从该临时目标文件中,可以使用 Simulink.BlockDiagram.copyContentsToSubsystem 将内容复制到最终目标框图中的所需子系统。然后,您可以使用命令save_system和close_system。这将保留您创建的任何SIL / PIL“测试线束”。
答案 1 :(得分:1)
您可以使用add_block
如果您的模型称为ModelSource
,而您要复制的子系统称为Subsystem1
,并且您正在创建到同一模型的副本,则可以使用命令复制该子系统
add_block('ModelSource/Subsystem1','ModelSource/Subsystem1','MakeNameUnique','on')
“ MakeNameUnique”将确保您的新块具有唯一的名称。
请注意,新块将具有与旧块相同的坐标。 您可以通过执行以下操作将块向下移动
coords = get_param(gcb,'Position');
coords(2) = coords(2) + 50;
coords(4) = coords(4) + 50;
set_param(gcb,'Position',coords);
这会将块从源块的位置向下移动50个像素。