Matlabユザコミュニティ

MATLAB & 金宝appSimulinkユ,ザ,コミュニティ,向け日本語ブログ

自分だけのS金宝appimulinkを作ろう!ルストリップ自作機能の紹介!

皆さんこんには。トレ,ニングエンジニアの遠藤と申します。
このブログでは”仿金宝app真软件MATLABとをつなぐ”をコンセプトとして,主に技術的な内容について書いております。

さて,2021年ももう残すところわずかとなりました。今年もコロナ禍の影響で様々なイベントがオンラインでの開催となり,MATLABユーザーの皆さんとも対面で会うことができず寂しい日々が続いていますが,このブログではMathWorks社員とMATLABユーザーの皆さん,あるいはユーザーの皆さん同士が繋がれるように,今後も様々な情報の発信を続けていきたいと思いますので,来年もどうぞよろしくお願いします!

と,挨拶はこれくらいにして,そろそろ本題に入りたいと思います。皆さん,もうMATLAB R2021bはescンスト,ルされましたでしょうか?実は,R2021bでは,私が以前解説記事を書いたS金宝appimulink APIと非常に相性の良い新機能が追加されました。その機能とはズバリ,”金宝appSimulinkのルストリップを自作できる機能です!

ツールストリップとは,金宝app仿真软件の上部に表示されている様々なショートカットアイコンのことです。

様々な機能が備わっているこのツールストリップですが,複数のタブに分かれて配置されているため,目的の機能がどのタブにあるのか探すのが大変,複数のタブを切り替えて操作を行うのが面倒,といった苦労もあります。「自分がよく使う機能だけ1のタブにまとめられないかなぁと思ったことのある方もいらっしゃるのではないでしょうか?

また模金宝app型APIで便利機能を開発している人は,誰しもが”自分の作った機能をツールストリップに登録したい”と考えたことがあるかと思います。アイコンを押すだけで便利機能を実行できれば,わざわざMATLABに戻ってコマンドを実行する手間が省けます。

今回紹介するルストリップ自作機能は,まさにこういった方々の夢をかなえるための機能です!

この画像のように,なんと既存機能や自作機能を自作したタブにまとめることができるんです!素晴らしい!

この記事では,既存機能を追加する方法と自作機能を追加する方法を順番に解説していきたいと思います。

こらのドキュメントも合わせてご覧いただくと詳細がわかりやすいです。

0.ルストリップ作成のための準備

。とはいっても準備は超簡単,2の関数を実行するだけです。

まず1目はslCreateToolstripComponentという関数です。この関数を実行することで,現在のフォルダ下に“资源”というフォルダが作成され,その下にベースとなるサブフォルダやファイルが自動で作成されます。実行するときは作成するコンポ,ネントの名前を引数として渡します。

> > slCreateToolstripComponent (“测试”

2目はslCreateToolstripTabという関数です。この関数を実行することで,jsonフォルダ下にタブを作成するためのファイルを自動で作成することができます。実行するときは,作成するタブのIDと先ほど作成したコンポーネントの名前,そしてタブの名前を指定します。

> > slCreateToolstripTab (“testTab”“测试”、标题=“myTab”

“testTab。Json“というファ麦肯特ルが作成されました。このjsonファaaplルを編集していくことで,オリジナルのタブを作成できる,というわけです。なみに,この時点で既にタブ自体は作成されています。

これで事前準備は完了です。早速ルストリップを作っていきましょう!

1.ルストリップに既存機能をまとめたタブを作成する

まずは既存機能を1のタブにまとめる方法を説明していきます。

1.1タブの階層構造を設計する

初めに,タブの階層構造を作っていきます。先ほど自動で作成されたjsonファルの中身を確認してみましょう。

testTab.json{“版本”:“R2021b”, "entries": [{"type":“标签”“id”:“testTab”“标题”:“myTab”}]}

Jsonファルでは,コンポネントとプロパティを階層構造で定義します。今作成されているコンポーネントはタブだけなので,そのタブの类型、id、标题といったプロパティが定義してあるだけです。このタブコンポーネントの中に孩子というプロパティを新たに作り,その下に新たなコンポーネントを定義していくことでタブを作成していきます。

タブを作成する際の各コンポ,ネントの階層構造は以下の図の通りです。

选项卡- >一节>列とタブを区切っていき,最後に実際の機能である控制を配置するイメージです。試しにjsonファaapl . exeルを編集して新しい节と列を作ってみましょう。

testTab.json{“版本”:“R2021b”, "entries": [{"type":“标签”“id”:“testTab”“标题”:“myTab”, "children": [{"type":“节”“标题”:“测试”, "children": [{"type":“列”}]}]}]}

“Test”というタ▪▪トルの节に1▪▪の列を定義しました。ただし,Jsonファ。編集を適用するには,slReloadToolstripConfig関数を実行します。

> > slReloadToolstripConfig

もしjsonファaaplルに不備があった場合は,警告で教えてくれます。何か警告が出たら,括弧やカンマなどが抜けていないかチェックして修正しましょう。

MYTABに新たにTESTというSectionが追加されました!

1.2機能を追加する

次に,この节に既存機能を追加していきます。機能を追加するには,列の孩子下で控制コンポーネントの类型と行动を指定します。输入は以下の4種類から選べます。

  • 按钮:クリックするとアクションが実行されます。
  • DropDownButton:クリックするとドロップダウンメニュ,が表示されます。
  • SplitButton:PushButtonとDropDownButtonがセットで作成されます。
  • EmptyControl:位置調整用のスペ,スが作成されます。

行动は既存機能の動作にそれぞれ割り当てられたアクション名です。例えば仿金宝app真软件の”開く”ボタンが押された時の動作は“openModelActionという名前です。このアクションを使って,試しにクリックしたらモデルを開くウィンドウを表示するボタンを追加してみましょう。

testTab.json"type": "Column", "children": [{"type":“按钮”“行动”:“openModelAction”})

※コ,ドが長くなってしまうので,列の編集部分だけ抜き出しています。

slReloadToolstripConfig関数を実行して適用してみると......

モデルを開くボタンが追加されました!openModelActionにはあらかじめモデルを開くための動作がすべて定義されているので,もうこのボタンを押せばモデルを開く機能を使うことができます。とっても簡単!

ただ,問題はアクション名です。追加したい機能に対応するアクション名はどうやって調べればよいのでしょうか?

ここで便利なのが,slToolstripDeveloperModeという関数です。この関数はツールストリップの機能のアイコンとアクションの名前を調べるための開発者モードをオンオフ切り替えることができる関数です。

> > slToolstripDeveloperMode(“”)
金宝appSimulink。金宝app仿真软件ツールストリップのウィジェット上で一時停止してCtrlを押すと,MATLABコマンドウィンドウにそのウィジェットのアクションとアイコンの名前が表示されます。

実行後に表示されるのテキストにも書いてある通り,開発者モードをオンにすると,ツールストリップのアイコンの上にマウスを持っていきCtrlキーを押すことで,コマンドウィンドウ上にその機能のアクションとアイコン名が表示されます。

試しにコンフィギュレションパラメタの歯車マクの上でCtrlキを押してみると......

行动:openModelConfigParamAction
图标:设置
-------------------

アクション名とア@ @コンが表示されました。これを使えば既存機能を簡単にタブに追加できます。

testTab.json"type": "Column", "children": [{"type":“按钮”“行动”:“openModelAction”}, {"type":“按钮”“行动”:“openModelConfigParamAction”})

コンフィギュレ、ションパラメ、タのボタンが追加できました!

このように,よく使う機能のアクション名を開発者モードで調べてタブに控制として追加しておけば,必要な機能だけをまとめた便利なタブを作成することができます!

2.自作機能をタブに追加する

次に,自作した機能をタブに追加する方法にいて説明します。自作した機能を追加する場合は,その機能を新しいアクションとして定義しなければならないため,既存機能の場合に比べて複雑です。

2.1アクションファルを作成する

自作アクションを定義するためには,先ほど編集していたjsonファイルとは別に”タブ名_actions。Json“という名前のファ▪▪ルをJsonフォルダ下に作成する必要があります。こちらのファイルは特に自動で作成する関数などはないので,先ほどのjsonファイルをコピーして名前を変えるなどして手動で作成しましょう。

中身は版本と条目だけ残して削除してしまって大丈夫です。

testTab_actions.json{“版本”:“R2021b”, "entries": [{}]}

のこの条目中にアクションを定義していき,先ほどの控制の行动でそれを指定する,という流れになります。この記事では,例として"モデル上のゲaapl .ンを一括で変更するアクション"を作ってみたいと思います。

2.2アクションを定義する

アクションを定義するときは,以下のように键入やidなどの必要なプロパティを指定します。

testTab_actions.json{“版本”:“R2021b”, "entries": [{"type":“行动”“id”:“setGains”“文本”:“收益”“描述”:“设置所有增益值”,“命令”:“setAllGains”“commandType”:“脚本”}]}

输入には必ず" Action "を指定します。その他については,idが控制で指定する際に使うアクションの名前,文本がツールストリップ上に表示されるテキスト,描述がマウスをかざしたときに表示される説明文,命令が実行するスクリプト名で,最後のcommandTypeは“脚本”を指定します。

実行したいスクリプトはmatlabから見える場所に置いておきます。今回は以下のようなスクリプトファaapl . exeル" setallgain . exe "M”を用意しました。

setAllGains.mBlocks = find_system(gcs,“BlockType”“获得”);值= get_param(blocks,“获得”);gainValues = inputdlg(块,“收益”1、价值观);如果~ isempty (gainValues)set_param(blocks{I},“获得”我,gainValues {});结束结束

まずfind_system関数で增益ブロックを検索し,get_param関数で値を取得,inputdlg関数でユーザーが値を入力するためのダイアログウィンドウを作成し,set_param関数で入力された値をブロックに設定する,というようなスクリプトになっています。各関数の使い方にいては金宝appSimulink APIの記事やリンク先のドキュメントをご確認ください。

それではこのアクションをtestTab。Jsonファルの方で指定し,ルストリップから呼び出せるようにしましょう。

testTab.json“类型”:“列”, "children": [{"type":“按钮”“行动”:“openModelAction”}, {"type":“按钮”“行动”:“openModelConfigParamAction”}, {"type":“按钮”“行动”:“setGains”})

スクリプト名ではなく,idで設定した“setGainsを指定しなければならないことに注意しましょう。それではslReloadToolstripConfig関数を実行して変更を適用し,試運転してみましょう。

setGainsをクリックすると,モデル上の3つの获得ブロックの値を設定するウィンドウが開きました。値を変更して好をクリックすると......

增益ブロックの値が入力した値に変更されました!

このように模金宝app型APIを使ってモデルを編集するスクリプトを用意しておけば,自作したタブからワンクリックでそれを実行できちゃうんです。これは便利!

3.その他の機能の紹介

ここまでで結構分量が多くなってしまったので,その他の機能にいてはまとめて簡単に紹介します。詳しい使い方にいてはこらのドキュメントをご参照ください。

3.1アコンの指定

アクションを定義した***_actions。Jsonファaapl .ルでは,アaapl .コンを定義できます。開発者モードで確認したアイコン名,または自作したアイコンの画像(16 x 16日24×24)をツールストリップに表示できます。

3.2ドロップダウンメニュ,の定義

この記事ではプッシュボタンの作り方を説明しましたが,ドロップダウンメニューの場合はもう少し複雑です。メニュ,をクリックしたときに表示される弹出窗口列表を*** _弹出窗口。jsonファイルで定義し,各項目をクリックしたときに実行されるアクションを指定する必要があります。

3.3自作タブの無効化,削除

slCreateToolstripComponent関数を実行すると,現在のフォルダがMATLABのパスに追加され,次回起動以降もこのパスは追加されたままになります。そのため,matlabを再起動しても一度作成したタブは表示され続けます。

しかし,試しに作っただけのタブや一時的に必要だったタブなど,場合によっては自作したタブを表示させたくない,という場合もあるかと思います。その場合は,slPersistToolstripComponentという関数を使うことで,自作タブをパスに残したままにするかどうかを制御できます。なお,もし作成したファslDestroyToolstripComponent関数を使います。

4.デモモデルのご紹介

弊社エンジニアが作成した,金宝appSimulinkのモデリング業務効率向上のためのカスタムタブの一例が文件交换にて公開されています

2 o個以上のカスタム機能例やプロジェクトにカスタムタブを反映させる方法などが綺麗にまとまっていますので,どんな機能が作れるか知りたい方や,開発の足掛かりとするための例題ファイルが欲しい方は,ぜひこちらをダウンロードしてみてください!

5.まとめ

今回は,R2021bで新たに追加された仿真金宝app软件のツールストリップを自作する方法について解説しました。自作機能を開発していない方も,よく使う既存機能をまとめておくだけでも日々の操作が一気に楽になるかもしれません。

皆さんも自分専用のS金宝appimulinkを作って,より効率的にモデル開発を行ってみませんか?

|

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그하거나계정을새로만드십시오。