Use add_line on a line?
    8 views (last 30 days)
  
       Show older comments
    
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.
0 Comments
Accepted Answer
  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
      
 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>
More Answers (1)
  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?
0 Comments
See Also
Categories
				Find more on Programmatic Model Editing in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

