simulink 子系统输入输出自动对齐

% 找到子系统的句柄
aa = find_system(bdroot,'FindAll','on','SearchDepth','1','BlockType','SubSystem');
% 返回子系统的名称
bb = get_param(aa,'Name');
% 拼接子系统路径
cc = [bdroot,'/',bb];
% 找出外部输入端口
dd = find_system(bdroot,'FindAll','on','SearchDepth','1','BlockType','Inport');
% 找出外部输出端口
ee = find_system(bdroot,'FindAll','on','SearchDepth','1','BlockType','Outport');
% 找出子系统输入端口
ff = find_system(cc,'FindAll','on','SearchDepth','1','BlockType','Inport');
% 找出子系统输出端口
gg = find_system(cc,'FindAll','on','SearchDepth','1','BlockType','Outport');
% 输入端口连接
for k = 1:length(ff)%子系统循环在外
    for i = 1:length(dd)%外部端口循环在内
        if (strcmp(get_param(dd(i),'Name'),get_param(ff(k),'Name')))
            hh = get_param(dd(i),'Name');
            add_line(bdroot,[hh,'/1'],[bb,'/',num2str(k)]);
        end
    end
end
for y = 1:length(gg)%子系统循环在外
    for x = 1:length(ee)%外部端口循环在内
        if (strcmp(get_param(dd(x),'Name'),get_param(ff(y),'Name')))
            ii = get_param(ee(x),'Name');
            add_line(bdroot,[bb,'/',num2str(y)],[ii,'/1']);
        end
    end
end
aaa = get_param(cc,'PortConnectivity');
for k=1:length(aaa)
    bbb = aaa(k).Position;
    if(~isempty(aaa(k).SrcBlock))
        set_param(aaa(k).SrcBlock,'Position',[bbb(1)-60,bbb(2)-5,bbb(1)-40,bbb(2)+5])
    end
    
    if(~isempty(aaa(k).DstBlock))
        set_param(aaa(k).DstBlock,'Position',[bbb(1)+40,bbb(2)-5,bbb(1)+60,bbb(2)+5])
    end
end

原文判断字符串 == 时2016A版本出现维度不一致,变更修改为strcmp判断

https://zhuanlan.zhihu.com/p/223236455

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值