Use add_line on a line?

10 views (last 30 days)
Lucas
Lucas on 12 Jun 2012
I was wondering if you could get a handle from a line and draw a line from that to something else. Kaustubha helped me with the code below:
pc = get_param(outPorts{i}, 'PortConnectivity');
srcBlk = get_param(pc.SrcBlock, 'Name');
srcParent = get_param(pc.SrcBlock, 'Parent')
add_line(srcParent, [srcBlk '/1'], 'Out2/1', 'autorouting', 'on');
but if you have a sub system with 6 outports and you want to tie a line from each of them, the code above gets the previous block (subsystem) and ties a line from there to a new block. But it always ties a line from the first output, when I want one from each. So I if it’s possible to get a handle to a line, if you could use it as the source parameter in add_line.

Accepted Answer

Albert Yam
Albert Yam on 12 Jun 2012
I don't know if there is another way, and I would like to know. This is my work around, it can get ugly, but works. I call it "x+1"
in_src = get_param(inblock, 'PortConnectivity');
in_src =in_src.Position;
add_line(sys,[in_src;in_src(1)+1 in_src(2)]); %draws a line from x to x+1
in_src =[in_src(1)+1 in_src(2)]; % save that location as source
outN = get_param(outNblock, 'PortConnectivity');
outN = outN.Position;
add_line(sys,[in_src;outN]);
So it technically works by drawing lines to position, rather than the block itself. You might get an unconnected line, but there is a script for that.
If there is better solution, I too would like to know.
  1 Comment
Albert Yam
Albert Yam on 12 Jun 2012
You can use the block handle as a reference for that block, but if you want a name.
BlockName = get_param(handle,'Name');
Also,
<http://www.mathworks.com/matlabcentral/fileexchange/12352-delete-unconnected-lines>

Sign in to comment.

More Answers (1)

Chiara
Chiara on 4 Jun 2013
How can I specify left or right port to connect?
In my case,
in_src=get_param('new/source1', 'PortConnectivity')
gives a 2x1 struct array with fields: Type Position SrcBlock SrcPort DstBlock DstPort
Please tell me if I am wrong:
Where you wrote:
in_src =in_src.Position;
I should write:
in_src =in_src(1).Position; %for LConn1
in_src =in_src(2).Position; %for RConn1
and the same for outN. right?

Categories

Find more on View and Analyze Simulation Results in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

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

Start Hunting!