How to change position of duplicated Simulink module in GUI dynamically?

조회 수: 1 (최근 30일)
Hi,
I have created a simple GUI in which by clicking a pushbutton, it duplicates (using add_block) an existing module. The problem is that, it creates the new module in the same position each time, therefore by double clicking the last created one may not be recognized in the first look. I would like to optimize it by changing the position (for ex: a bit forwarding) dynamically by each clicking. Thanks in advance.
Best regards,
Saeed

채택된 답변

Fangjun Jiang
Fangjun Jiang 2016년 2월 11일
편집: Fangjun Jiang 2016년 2월 11일
Assume you are duplicating a block in a model using add_block (but not add_block() from a library source), the new block name will always be suffixed with a number starting from 1 and it is available.
sb='untitled/Gain';
hBlock = add_block(sb, sb, 'MakeNameUnique', 'on');
NewName=get(hBlock,'Name');
Offset=regexp(NewName,'\d+','match');
Offset=Offset{end};
Position=get(hBlock,'Position');
set(hBlock,'Position',Position+10*str2double(Offset));
If the source block name starts as e.g. 'untitled/Ga123in5', it should also work. I don't think you care how much is the offset as long as it distinguish from other blocks. Make the linear scale larger could also help.
  댓글 수: 2
Saeed Soltani
Saeed Soltani 2016년 2월 11일
Thanks for your quick answer, but as I have already tried, it does not work. However the last line needs a small correction:
set(hBlock,'Position', Position+10);
But the problem is each time by clicking, the position will be reset to the initialized value and it gives back the same value of Position+10.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Computer Vision with Simulink에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by