ライブラリに登録した​マスクサブシステムに​おいて、マスクエディ​タのコールバックから​内部のブロックへの変​更を加えようとする場​合に、エラーとなるの​はなぜですか?

2 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 28 Dec 2009
ライブラリに登録するサブシステムにおいて、サブシステム内部のブロックパラメータをマスクパラメータとして
設定し、ダイアログのコールバックを記述します。
 サブシステム上でマウス右クリック
 → マスクの表示
   → パラメータペインでダイアログパラメータの設定
     → 一般的なオプションのダイアログのコールバックに、パラメータ変更の記述
例えば、本ページ下部からダウンロードできる lib ファイルのように、ダイアログのコールバックにて、
サブシステム内部の Product ブロックの「整数オーバーフローで飽和」のチェックをする記述をします。
flag = get_param(gcb,'SaturateOnIntegerOverflow')
products = find_system(gcb,'FollowLinks','on','LookUnderMasks','all','Name', 'Product1')
for idx = 1 : length(products)
set_param(products{idx},'SaturateOnIntegerOverflow',flag)
end
このように設定したブロックを Testmodel.mdl モデル上にインポートし、ブロックをマウスダブルクリックしてパラメータの設定を
行おうとしても、次のエラーが発生し、設定ができません。
複数の原因によるエラー
--> ライブラリリンク内にある 'Testmodel/lib/Product1' のパラメータを優先しようとしています。
--> SubSystem block (mask) 'Testmodel/lib/Product1' 'MaskCallback' コールバックの実行中にエラーが発生しました。
ライブラリリンク内にある 'Testmodel/lib/Product1' のパラメータを優先しようとしています。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 28 Dec 2009
この動作でエラーが発生することは、想定されている通りの動作です。マスクエディタの初期化ペインで、
「ライブラリブロックが内容を修正することを許可」の設定にチェックを入れることで、モデル上から内部の
ブロックのパラメータ設定変更反映をすることができます。

More Answers (0)

Categories

Find more on Author Block Masks in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!