- Open Simulink and add a Subsystem block.
- Select Mask > Create Mask.
- Add a Checkbox and other properties that you want.
- Add the callback for the Checkbox.
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.
0 个评论
回答(2 个)
SACHIN KHANDELWAL
2024-8-2
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:
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!
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 :)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subsystems 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!