Simulink mask: show/hide the port of a custom Simulink block

51 次查看(过去 30 天)
Hi guys,
I am creating a mask for my custom block and I want add a checkbox with the following behaviour:
  • checked: it shows a new port the the block
  • unhecked: it hides the new port for the block
The integrator block has the same behaviour (see the belows images to understand):
I am struggling how to implement this feature in the Checkbox callback because I can't find the parameter to show/hide the port.

回答(2 个)

SACHIN KHANDELWAL
I understand that you want to create a block mask with the help of a checkbox. Here are some possible steps that might be helpful to you:
  1. Open Simulink and add a Subsystem block.
  2. Select Mask > Create Mask.
  3. Add a Checkbox and other properties that you want.
  4. Add the callback for the Checkbox.
After creating the callbacks, you can simply get the current callbacks using the following command:
>> maskObj = Simulink.Mask.get(gcb);
After you have the mask object, you can modify it based on your needs.
The following documentation could be helpful for you to design the mask:
Hope the above information is helpful!
  1 个评论
federico ciresola
编辑:federico ciresola 2024-8-2
thank you for you answer, I alread have did them. My problem is find a way to show or hide some inputs port from a checkbox such as the integrator block.

请先登录,再进行评论。


Aurélien
Aurélien 2025-7-31
编辑:Aurélien 2025-8-1
Here is an example of how to re-create the Integrator block behavior on a Mask. The initial condition parameter value is used in a Constant block inside the masked subsystem.
It's important to use the initialization() function instead of a callback and to check the box below:
So you can create a custom library of your block without links issues.
If you want to give a name to that Constant block, replace all three gcb with gcb + "/block_custom_name" in the code below:
% Initialization code section
function initialization()
checkboxValue = get_param(gcbh, 'checkbox');
maskObj = Simulink.Mask.get(gcbh);
initParam = maskObj.getParameter('initial_condition_parameter');
if checkboxValue == "on"
% Replace constant block with inport block
replace_block(gcb, "Constant", "Inport", "noprompt");
initParam.Visible = "off"; % Hide parameter
else
% Replace inport block with constant block
replace_block(gcb, "Inport", "Constant", "noprompt");
set_param(gcb, "Value", "initial_condition_parameter", ...
"SampleTime", "-1"); % Give block properties back
initParam.Visible = "on"; % Show parameter
end
end
% Parameter callback section
Hope it helps :)

类别

Help CenterFile Exchange 中查找有关 Subsystems 的更多信息

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by