如何变为无效来取代单一模型块面具块相同的接口,维万博1manbetx护所有连接

9的观点(30天)
我用MATLAB R2017a,我想更换一个块(我有其处理 block_handle )与另一个块(我有其路径在图书馆)。新块self-modfying面具,和它的参数需要设置,这样新的块具有相同的接口(许多港口和外港)现有的块。我想保留所有连接。
我能做的
replace_block (sys,‘处理’,block_handle new_block_lib_path, noprompt);
但问题是,因为默认掩码参数不对应正确的值,并不适合。所以我的解决方案是先做的
new_block_temp = add_block (new_block_lib_path sys ' / '‘临时’,‘MakeNameUnique’,‘上’);
面具和设置参数为新块,最后做的事情
replace_block (sys,‘处理’,block_handle getfullname (new_block_temp),“noprompt”);
问题是,新的(更换)块转移相对于现有的块,和所有的连接都折断了。
我想使用我自己的版本的“replace_block”,这将消除需要添加临时块。我的解决方案,只要工作图的所有行 SegmentType 作为 “树干” 。然而,当图线 SegmentType 作为 “分支” 休息,我的解决方案。
我看不出 SegmentType 记录,并希望避免的复杂性处理创建新行。注意,参数等一行 DstPortHandle 是只读的,因此它似乎没有可能改变现有线改变其连接。
4评论
Gustavo
Gustavo 2022年11月4日
我附加文件的示例。总之,这个例子是我希望在运行 test_万博1manbetxsupport.m replace_with_built_in = true; 运行时,不工作 replace_with_built_in = false;
bar.mdl 原始
bar.mdl replace_with_built_in = true;
bar.mdl replace_with_built_in = false;
lib_foo.slx:

登录置评。

答案(1)

Fangjun江
Fangjun江 2022年11月4日
我能重复你的问题。我不知道为什么。需要更多的时间来找出答案。
但我确实找到一个替代。基本上不使用replace_block ()。相反,删除旧的块,设置新的块位置。
事实上,它的成本相同的三行代码。
% % %更新面具后大小参数设置。把它从图
% % %的清晰度
% % set_param (new_block_temp“位置”,get_param(块,“位置”)- 1000 0 1000 [0])
% %
% % new_block = replace_block (sys,‘处理’,block_handle getfullname (new_block_temp),“noprompt”);
% %
% % % delete_block(块)%这个块被替换。
% % delete_block (new_block_temp)
Pos = get_param(块,“位置”);
delete_block(块);
set_param (new_block_temp“位置”、Pos);
5个评论
Fangjun江
Fangjun江 2022年11月9日
是的。我可以复制这个问题。是的。造成的问题是面具的初始化。
如果一个子系统阻止目前完全连接,你删除一个尺寸或外港块内,该港口的连接线将立即断了。你可以看到这个很容易当你手动。
在初始化你的面具,你delteted所有子系统内部的内容。
你可能需要重新考虑的方法。

登录置评。

s manbetx 845


释放

R2017a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!