1

サブシステムにローカル変数を指定する必要があるため、マスクを作成しました。そうすることで、サブシステムに簡単にアクセスできなくなります。右クリックして [Look under mask] に移動するのは、複雑すぎるはずです。

そこで、回避策を考え、次のように構築しました。

マスク

「Get deep!」の背後にあるダイアログ コールバック コード チェックボックスは次のとおりです。

myParameter = %Parameter set by checking Get deeper!
path = gcb(gcs);

if strcmp(get_param(gcb,'myParameter'),'on')    
open_system(path,'tab');
end

ボックスをチェックするたびに、サブシステムが開かれ、以前にボックスがチェックされていた場合は、サブシステムをダブルクリックするたびに開かれます。したがって、コードは本来あるべきことを行いますが、実際には、このようなことを実現/視覚化する一般的な方法ではありません。

私が欲しいのは、マスクの「マスクの下を見る」ボタンです。そのボタンをクリックするだけで、サブシステムが開きます。基本的に、ボタンは関数を呼び出す必要があります: open_system(gcb(gcs),'tab'). とても簡単に見えますが、Simulink はこれを実装するオプションを提供しません。誰でも助けることができますか?

現在のソリューションの主な問題は、モデルを実行するたびにすべてのサブシステムが開き、ボックスがチェックされていることです。それは考えではありません。

4

1 に答える 1

3

Matlab 2012b は、あなたが望むものを正確に追加します: マスクされたブロックには、「マスクの下を見る」へのショートカットであるボタンの左側にボタンがあります。

残念ながら、マスクにボタンを追加することはできないと思います。

関数を変更して、「深くなる!」を自動的に設定することもできます。ユーザーがクリックした後、チェックボックスをオフにします。これにより、モデルが読み込まれるときにサブシステムが自動的に開かれることを回避できます。set_param(path,'myParameter','off')の直後に追加することができますopen_system(path,'tab');

最後に、別の回避策として、OpenFcnコールバックを callに設定することもできますopen_system(gcb,'tab')。これにより、システムはまったくマスクされていないかのように機能します。必要に応じて、 2 つのopen_system呼び出しを配置できます。1 つはマスクの下を見るため、もう 1 つはマスク ダイアログ ボックスを開くためです。

于 2013-09-25T11:00:31.727 に答える