我想在子系統上創建一個掩碼,就像枚舉常量的掩碼(如下所示)。正如您在藍色圓圈中看到的那樣,可以使用下拉列表來編輯值。枚舉常在Simulink中創建一個掩碼,編輯字段爲枚舉
如果要創建一個面具,確實有可能使一個彈出窗口,而不是一個編輯,但這個問題是需要面罩內可以手動創建可能的選擇列表。我想要的是,這個Edit值只顯示某個枚舉的可能選擇,我只想指定一個枚舉。枚舉常量掩碼用一個編輯類型來做到這一點,但即使如此,它仍然有效。
當然,我試圖從這個塊反向工程,但我無法找到Matlab如何做到這一點。
我想在子系統上創建一個掩碼,就像枚舉常量的掩碼(如下所示)。正如您在藍色圓圈中看到的那樣,可以使用下拉列表來編輯值。枚舉常在Simulink中創建一個掩碼,編輯字段爲枚舉
如果要創建一個面具,確實有可能使一個彈出窗口,而不是一個編輯,但這個問題是需要面罩內可以手動創建可能的選擇列表。我想要的是,這個Edit值只顯示某個枚舉的可能選擇,我只想指定一個枚舉。枚舉常量掩碼用一個編輯類型來做到這一點,但即使如此,它仍然有效。
當然,我試圖從這個塊反向工程,但我無法找到Matlab如何做到這一點。
我無法弄清楚如何做到這一點,但希望這個答案能讓你走上正軌。
在蒙版上創建兩個彈出窗口,例如'popup1'和'popup2'。將您的類型選項硬編碼爲popup1,並將popup2留空並禁用(因爲它取決於您使用popup1選擇的內容)。然後,您可以在popup1上使用回調來在第一個點擊時填充popup2。您的回調將是這個樣子:
% Grab the value selected from popup1
value = get_param(gcb, 'popup_1');
% Do some sort of check/switch statement to set your options
if value == 1
% Enable popup2
set_param(gcb, 'MaskEnables', {'on', 'on'});
% Set the type options for popup2
set_param(gcb, 'MaskStyleString', 'popup(1|2|3|4|5),popup(my|new|options)');
end if
看一看在MATLAB/Simulink文檔中this和this。如果有點不直觀,get_param
和set_param
是有用的。看起來在Simulink的後續版本中,您可以使用maskObj = Simulink.Mask.create(gcb);
方法來執行此類操作,這可能會更簡單。
隨着DrBuck的推出,您應該使用maskObj = Simulink.Mask.create(gcb)
爲當前選定的塊(gcb)創建一個遮罩或通過maskObj=Simulink.Mask.get(gcb)
選擇一個已有的遮罩。然後,將參數添加到它:
par_name = 'foo'; % name
par_prompt = 'This is my enum constant'; %prompt
maskObj.addParameter('Prompt',par_prompt,'Name',par_name); % add parameter
你正在尋找被稱爲TypeOptions
領域,但首先你必須找到通過例如正確的參數個數
par_idx = find(strcmp({maskObj.Parameters.Name},par_name)); % index of parameter
設置屏蔽參數 '彈出',並創建您的枚舉值:
maskObj.Parameters(par_idx).Type = 'popup'; % type
maskObj.Parameters(par_idx).TypeOptions = {'Option1','Option2'}; % enum options
有你;)
HTH朱利安