Aligning the Inputs and Outputs through m script

16 visualizaciones (últimos 30 días)
Moorthy
Moorthy el 24 de Ag. de 2012
Comentada: Dharaneedharan Arumugam el 8 de Dic. de 2020
Please see this link : http://i50.tinypic.com/vsdool.jpg
I am trying to create the input and output port automatically(thru m script). I am taking the Subsystem portHandles.Inport position and setting the postion for input. Once all the input and output are created, it is mixed with one and other. Please see the link for the screen shot. The signal names are not clearly visible to read. Is there any way to leave the gap between the two input(or output) ports?

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 24 de Ag. de 2012
Editada: Azzi Abdelmalek el 24 de Ag. de 2012
try this to understand how to do it
% model1 : your model Name
% sub1: your subsystem name
tailx=50;taily=25;
x0=50;y0=50;yy0=y0;
for k=1:n
x=x0+tailx ;y=y0+taily
inp=['model1/input' num2str(k)]
add_block('Simulink/Sources/In1',inp)
set_param(inp,'Position',[x0 y0 x y ])
add_line('model1',['input' num2str(k) '/1'],['sub1/' num2str(k)],'autorouting','on' )
y0=y+20
end
  4 comentarios
Moorthy
Moorthy el 24 de Ag. de 2012
Thank you Azzi
Dharaneedharan Arumugam
Dharaneedharan Arumugam el 8 de Dic. de 2020
THanks man, your script saved me big time!!!

Iniciar sesión para comentar.

Más respuestas (1)

Albert Yam
Albert Yam el 24 de Ag. de 2012
Imagine a chart over layed on the subsystem. Draw where your margin lines are.
xspacing = [inportL inportR outportL outportR];
%column margins (left/right of blocks)
ystart = 100; % however far down you start
yhalf = 10; % block half width
dy = 30; % height of the row
for ii = 1:insigs
blockname = insig{ii};
addblock(...)
setparam(blockname_handle,'Position',[xspacing(1) ystart+ii*dy+yhalf xspacing(2) ystart+ii*dy-yhalf]);
end
for ii = 1:outsigs
blockname = outsig{ii};
addblock(...)
setparam(blockname_handle,'Position',[xspacing(3) ystart+ii*dy+yhalf xspacing(4) ystart+ii*dy-yhalf]);
end
something like that
  3 comentarios
Albert Yam
Albert Yam el 24 de Ag. de 2012
Think of a box, [], top left corner is x1,y1, bottom right is x2,y2. set_param 'Position' needs x1,y1,x2,y2
inportL = x1 of your inports, the vertical line that you want to align the left of all your inports to.
inportR = x2 of your inports, the vertical line that you want to align the right of all your inports to.
Now when looping inports, x1 and x2 do not change. But y1,y2 does, by ii*dy each iteration, and y1 and y2 are separated by 2*yhalf.
similar for outports
Moorthy
Moorthy el 24 de Ag. de 2012
Thank you Albert.

Iniciar sesión para comentar.

Categorías

Más información sobre Schedule Model Components en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by