Simulinkブロックをすばやく配置できた
Simulinkブロックをすばやく配置したいなにて、「Simulinkブロックをすばやく配置するツールを作ってみようかな」と書きました。それに対し通りすがりのSL初心者様から、右クリックメニューを拡張してブロックをすばやく配置するためのスクリプトをコメント欄にいただきました。(すばらしい!)
おかげさまで、とりあえずの形まで出来ましたので公開してみます。
名前は、「 Block Placer 」とでもしましょうか。
使い方は、モデル上で右クリック→数字キー
このBlock Placerは、Simulinkの右クリックメニューに「ブロックを配置する」を追加するためのツールです。Simulinkモデル上で右クリックすると、次のようなコンテキストメニューが表示されるようになります。
そこで、数字キーの0~9を押します。すると、該当するブロックがモデルに配置されます。
Displayブロックが配置された
このツールのポイントは、数字キーが使えるという点です。慣れれば、「右クリック」→「テンキーを押す」→「ブロックが配置される」の作業がわずか0.1秒で可能に!(スムーズワークス社しらべ)
最初のうちこそ、「1って何のブロックだっけ?」って迷うでしょうから、いちいちメニューを見ないといけません。
しかし、慣れてくればカチッポチッ(右クリックの音+テンキーの音)でいけます。いちいちメニューを見やしません。ほんと一瞬です。私はこういう感じのツールが大好きです。
お好きなブロック10種類をどうぞ!
Block Placerに同梱されているモデル smoothworks_block_placer_library.mdl には、10個のブロックが置いてあります。ここに置かれたブロックは、 Block Placer によって(右クリック+数字キーで)ユーザーのモデルに配置されます。
smoothworks_block_placer_library.mdl は、ユーザーが自由に変更して構わないため、お好きなブロック10種類までをBlock Placerで配置できるようにする事ができます。
これらを好きなブロックに置き換えていただければ、 Block Placerはそれを自動認識します。(試していませんが、Target Linkブロックでもイケると思います。)
なお、右クリック時に表示されるメニューには、smoothworks_block_placer_library.mdlにあるブロックの名前がBlock Placerによって認識され、そのまま表示されます。ですから、このモデルに配置するブロックには、分かりやすい名前をつけてください。
これで、お好きなブロック10個を思う存分、カチッポチッしてください。
なお、10個も必要ないよ!という方も見えると思います。その場合、smoothworks_block_placer_library.mdlに配置するブロック数は5個でも1個でも構いません。配置した数だけ「○○を配置する」メニューが表示されます。(ただし上限は10個まで)
インストール方法
2013年3月10日追記:このバージョンにはバグがあります。修正版は、こちらからダウンロードしてください。
Block Placerは、3つのファイルで構成されています。ZIPファイル中のフォルダー block_placerをPC上のどこかに配置した上で、そこにMATLAB Pathを通していただければインストール完了です。
パスを設定した直後は、MATLABコマンドプロンプトにて、
sl_refresh_customizations
と入力してください。
このコマンドは、Simulinkメニュー等のカスタマイズ設定をリフレッシュするためのものです。Block Placerを新たにMATLABパスに加えたため、必要となりました。
MATLAB起動時に Block PlacerのあるフォルダがMATLABパスに設定されているようであれば、いちいち実行する必要はありません。
動作環境・ライセンス
R2010b SP1での動作を確認しています。それ以外のバージョンでも動く可能性はありますが、確認はしていません。
R2010bより古いバージョンで動かす場合、smoothworks_block_placer_library だけは新しく作り直す必要があるかも分かりません。お使いのバージョンのMATLAB/Simulinkにて新規にモデルを作成し、そこにブロックを10個おき、smoothworks_block_placer_library という名前で保存するだけで良いと思います。
なお、本ツールは無償でお使いいただいて構いませんが、何かあっても責任は取れませんのであしからず・・・
さすが、すばらしいです!
なんだか、せかしてしまった感じでむしろごめんなさいですね^^;
初心者の私にとっては、大変勉強になるコードで、本当にありがとうございます。
ショートカットキーの設定はschemaのメンバacceleratorで設定するとMATLABのサポートページに書いてあったので、やってみたのですが出来なくて、サンプルからは外していたのですが、sprintでサンプルのように書けばいけるのですね。
このサンプルのいいところは、Gainなどの設定をたとえばGain値別にもショートカット設定できるところですね。私のサンプルだと、毎回ライブラリコピーなので、Gainは設定しなおしですが、ツール(あっ、Block Placerですね^^)だと設定値も同時にコピーしてくれるのでいいです♪さすがです。
唯一、このツール(というか、自分のサンプルでもですし、もしかするとSimulinkそのものの問題点かもしれませんが)、問題があるとすれば、毎回、右クリックするたびに、右クリックメニューを検証するので、プアな(処理速度の遅い)マシンだと、右クリックが遅くなることですかねぇ。
まぁ、そこまで解決しての提供であれば、ほんと10万円くらいツール提供料を取ってもいいような気がします^^;
こんな通りすがりの初心者のコメントに精力的に回答いただきありがとうございました。
ご感想ありがとうございます。とても励みになります。
「Gain値別にショートカット設定」というのは気がつきませんでしたが、言われてみるとたしかにその通りですね。マネさせていただきます。
プアなマシンへの対応をするとしたら、
(1)コマンド pcode sl_customization.m を実行して、mファイルをpコード化しておく
(2)現在は、ユーザーがモデルを右クリックするたびにsmoothworks_block_placer_library.mdlをスキャンしている。これを、MATLAB起動後に1回だけスキャンするようにする。
などの対策が考えられます。試してはいませんが、ちょっぴり高速化するかも分かりません。
あと10万というのは、吉武を何日か拘束した場合の費用です。ツール提供料(1コピー毎の費用)であれば、マニュアルやら何やらつけても数千円がいいところでしょうか。。。
頭の良い方とやりとりしていると、色々なアイデアを貰えるのがとても楽しいです(Gain値別の話とか)。こちらこそ、ありがとうございました。