How to auto-adjust the subsystem height to make the spacing between adjacent ports consistent?

8 views (last 30 days)
When I increase or decrease the number of ports of a subsystem, the spacing between two adjacent ports will be change if I don't adjust the height of Subsystem.
I hope that the subsystem ports spacing can be consistent throughout my entire model,So I use something be like the code below to adjust the height of selected subsystem:
portsNum = max(inputPorts_Num, outputPorts_Num);
Sub_Pos = get_param(gcbh,'Position'); %select target subsystem
NewHeight = old_pos(4)-old_pos(2)+temp*portsNum; %Calculate the new height of subsystem according to the number of ports
Sub_Pos = [Sub_Pos(1) Sub_Pos(2) Sub_Pos(3) Sub_Pos(2)+NewHeight];
set_param(gcbh,'Position',Sub_Pos);
But, I found that how much height of subsystem should I change to keep the spacing between adjacent ports consistent, is not as simple as I thought.
I try to increase more ports,adjust the height manually to make the spacing consistent,and then get the Position value to cal the increased height,try to find out the rule between ports-increasing and height-adjusting.
and there seems to be no rules...
I know a stupid way to achieve my purpose: Increase more and more ports and cal every height vale to make an Height-array. Then look up table.
But that's really stupid...
Can anybody help me to do this by a smarter way? Thank you very much.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 6 Mar 2024
I had this problem before. I didn't find an exact formula. I suggest not looking at the previous height. Just use this formula to set the height. Height=Spacing*(portsNum+1). For a range of Spacing and portsNum, it works pretty well.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!