getCheckResultData
モデル アドバイザー チェック結果データを取得する
説明
モデル アドバイザー オブジェクトに対して、関数
を使用して指定したチェック セットのチェック結果のデータを取得します。チェック コールバック関数で関数 results
= getCheckResultData(ma
,checkID
)setCheckResultData
を使用して、チェックに対するチェック結果データを設定します。
この関数により、モデル アドバイザーのカスタマイズ API (Simulink® Check™ で利用可能なオプション機能) を使用して作成するカスタム チェックにより生成された結果にアクセスできるようになります。詳細については、カスタム モデル アドバイザー チェックの定義 (Simulink Check)を参照してください。
例
カスタム モデル アドバイザー チェックを定義し、関数 getCheckResultData
を使用してデータをチェック コールバック関数からチェック アクション コールバック関数に渡します。
この例では、Simulink Check を使用します。
モデル例 sldemo_bounce
を開きます。
openExample('sldemo_bounce')
現在の作業フォルダーに sl_customization.m
ファイルを作成します。MATLAB® の [ホーム] タブの [新規スクリプト] をクリックします。次のコードをコピーして貼り付け、ファイルを sl_customization.m
という名前で保存します。
function sl_customization(cm) % register custom check with the customization manager object (cm) addModelAdvisorCheckFcn(cm,@defineModelAdvisorCheck); end % ----------------------------- % define Model Advisor Check % ----------------------------- function defineModelAdvisorCheck mdladvRoot = ModelAdvisor.Root; % Definition for my custom check rec = ModelAdvisor.Check('myCustomCheckID'); rec.Title = 'My Custom Check Title'; rec.setCallbackFcn(@myCustomCheckCallbackFunc,'None','StyleThree'); % Specify a "Fix" action myAction = ModelAdvisor.Action; myAction.Name = 'My Custom Check Action'; myAction.setCallbackFcn(@myCustomCheckAction); rec.setAction(myAction); mdladvRoot.publish(rec,'CUSTOM CHECK FOLDER'); end function [ResultDescription, ResultDetails] = myCustomCheckCallbackFunc(system) % Initialize empty arrays ResultDescription = {}; ResultDetails = {}; affectedBlockIDs = []; % Get the Model Advisor handle for the current model or subsystem mdladvObj = Simulink.ModelAdvisor.getModelAdvisor(system); % Find the "Terminator" blocks blockIDs = Simulink.findBlocksOfType(system,'Terminator'); % Check if the "Terminator" block hides the automatic block name % If the name is hidden, fail the check and enable the Action for i = 1:numel(blockIDs) if (get_param(blockIDs(i),'HideAutomaticName') == "on") setCheckResultStatus(mdladvObj,'fail'); setActionEnable(mdladvObj, 1); affectedBlockIDs = [affectedBlockIDs blockIDs(i)]; else setCheckResultStatus(mdladvObj, 'pass'); end end % Add the affected "Terminator" block IDs to the check result data setCheckResultData(mdladvObj, affectedBlockIDs); end function result = myCustomCheckAction(taskobj) mdladvObj = taskobj.MAObj; % Get the affected "Terminator" block IDs from the check results affectedBlocksIDs = getCheckResultData(mdladvObj, 'myCustomCheckID'); % Make the automatic name visible for the "Terminator" blocks for i=1:length(affectedBlocksIDs) set_param(affectedBlocksIDs(i),'HideAutomaticName','off'); end % create the return text result = ModelAdvisor.Paragraph; addItem(result, 'Updated "Terminator" blocks to show the automatic name.'); % disable the action button setActionEnable(mdladvObj, false); end
このコードは、モデル内の Terminator ブロックを検索し、該当するブロックが自動ブロック名を非表示にしているかどうかをチェックするカスタム チェックを定義します。自動ブロック名が非表示の場合、チェックは失敗し、自動ブロック名を表示するようにモデル内の Terminator ブロックを更新できるアクションが有効になります。このコードは、アクション コールバック関数で関数 getCheckResultData
を使用して、チェックに失敗したブロックの ID を取得します。カスタム チェック コールバック関数とアクション コールバック関数の詳細については、カスタム モデル アドバイザー チェックの定義 (Simulink Check)を参照してください。
環境を更新して、sl_customization.m
ファイルで定義されているカスタム モデル アドバイザー チェックを含めます。MATLAB コマンド ウィンドウで次のように入力します。
Advisor.Manager.refresh_customizations
モデルでモデル アドバイザーを開きます。
modeladvisor('sldemo_bounce')
カスタム モデル アドバイザー チェックを選択して実行します。左側のペインで [製品別] 、 [CUSTOM CHECK FOLDER] 、 [My Custom Check Title] を選択し、[チェックの実行] をクリックします。
sldemo_bounce
モデル内の Terminator ブロックが自動ブロック名を非表示にしているため、チェックは失敗します。
チェックを右クリックし、[このチェックを修正] をクリックします。
このチェックでは、自動ブロック名を表示するように Terminator ブロックを更新するアクション コールバックを実行します。チェックを再実行すると、今度はチェックは成功します。
入力引数
チェック結果データを取得するモデル アドバイザー オブジェクト。Simulink.ModelAdvisor
オブジェクトとして指定します。
結果を取得するモデル アドバイザー チェックに関連付けられたチェック ID。文字ベクトルまたは文字ベクトルの cell 配列として指定します。
例: 'mathworks.design.UnconnectedLinesPorts'
出力引数
チェック結果。cell 配列として返されます。データの形式は、データを生成するチェックに依存します。
バージョン履歴
R2006a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)