MoI 3Dは3D CADモデリングアプリの一種です(モアイMoiであってモルMoLではありません)。
操作性が何となくAdobe Illustratorに似ていて,Illustratorに慣れたかたなら比較的簡単にモデリングできます。あまり絵の才能がなくても,物体や視点を回転したり,パスファインダー的に物体を削ったりできて便利です。
しかもMoI 3DとIllustratorの間では,コピペや書き出し機能を通じてベクターデータのやりとりが可能です。ベクター絵描きにとってはとても頼りになります。ぜひ使ってみてください。
それはそれとして,今回はキーボードショートカットの話です。
MoI 3Dでは,アプリ内の環境設定でショートカットをカスタマイズできます。しかし次の理由によりKeyboard Maestroで管理したくなりました。
- 現在ほとんどのアプリのショートカットをKeyboard Maestroで管理しているため,MoI 3Dもそうしたい
- スクリプトにショートカットを割り当てるには,スクリプトの内容を強制的に1行に収めて書くか,所定のフォルダにファイルを入れて適切な命名をする必要があり,手間がかかる
- Boolean(パスファインダー的なもの)など類似する機能のバリエーションが複数ある場合に,同じショートカットを押した後Keyboard Maestroのパレットで分岐したい
そこで今回は,MoI 3DのショートカットをKeyboard Maestroで管理する方法 を紹介します。
目次
ひと言でいえば何をするの?
MoI 3Dに1つだけショートカットで発動可能なスクリプトファイルを登録し,そのファイルの内容をKeyboard Maestroで動的に書き換えつつ実行します。
そうすれば,MoI 3Dに登録するショートカットは1つだけで,Keyboard Maestro側でバリエーションを増やせます。
もう少し詳しく言うと次のような流れです。
- DoJavaScript.jsというファイルを作る
- MoI 3Dの環境設定に,DoJavaScript.jsを実行するショートカットを加える
- MoI 3Dの環境設定に,スクリプトファイルをキャッシュせず都度変更を認識させる項目を加える
- Keyboard Maestroで「DoJavaScript.jsの中身のテキストを実行したい処理に差し替えてから,2で設定したショートカットを押す」マクロを作る
- 4のマクロにお好みのショートカットを割り当てる
※ 回りくどいやりかたなので,もっと簡単な手段があればぜひ教えてください。
具体的なやりかたを教えて
それでは実際に設定してみましょう。
スクリプトファイルをMoI 3Dに登録する
1. DoJavaScript.jsというファイルを作る
あなたが持っている適当なテキストファイルをDoJavaScript.jsという名前に変更してください。ファイル名は何でもいいのですが,説明のためにそう決めました。
テキストの中身も(後で書き換えるので)何でも構いません。しいて言えば,実行したらダイアログが出るコードを書いておくと成功したか確認しやすいです。
1 |
moi.ui.alert('スクリプト実行できてます。') ; |
2. MoI 3Dの環境設定に,DoJavaScript.jsを実行するショートカットを加える
スクリプトファイルをMoI 3Dに認識させるため,所定のフォルダに配置します。DoJavaScript.jsを次のフォルダに移動してください。
配置できたらMoI 3Dの環境設定を開いてください。ウインドウ右下にあるOptionsが環境設定です。
そして,Shortcut keysメニューでショートカットを登録します。Addボタンを押してください。
ダイアログが出るので,そこで登録したいKeyを直接打ちます。今回はCtrl+Shift+Alt+F12にしてください。これも何でもいいのですが,自分ではあまり使わないキーにしておくと便利です。
Commandのほうは,スクリプトファイルから拡張子を除いた名前を指定します。DoJavaScript.jsの場合はDoJavaScriptです。
Closeボタンを選ぶと,設定が終わります。Ctrl+Shift+Alt+F12のキーを押せば,(スクリプトとして有効なテキストなら)スクリプトが実行されるはずです。
3. MoI 3Dの環境設定に,スクリプトファイルをキャッシュせず都度変更を認識させる項目を加える
初期設定では,スクリプトファイルの中身を書き換えても,MoI 3Dはアプリを再起動するまで変更を認識しません。アプリがスクリプトファイルをキャッシュ(高速化のために一時保存)するのが原因です。これを無効にします。
GUIでは設定できないので,環境設定テキストファイルのmoi.iniを直接編集します。テキストエディタでmoi.iniを開いてください。ファイルをFinderで直接開くか,Options > GeneralのEdit .ini fileボタンを押します。
ボタンで開く場合は,MoI 3Dを終了する必要がある旨を警告されます。編集中の書類がある場合は,保存するか変更を破棄するか選んでアプリを終了してください。
開いたら,[UI]という行の下にDisableFileCaching=yを加えます。もしすでにDisableFileCaching=nがあったらnをyに変えてください。nはno・yはyesを意味します。
このようになります。
1 2 |
[UI] DisableFileCaching=y |
これでスクリプト内容の変更をすぐに認識するようになりました。
Keyboard Maestroでスクリプトを実行するマクロを作る
4. 「DoJavaScript.jsの中身のテキストを実行したい処理に差し替えてから,2で設定したショートカットを押す」マクロを作る
5. 4のマクロにお好みのショートカットを割り当てる
これはほぼ見出しの通りです。次の内容のマクロを作ってください。
- 実行したいJavaScriptコードを変数に収める(Set Variable to Text)
- MoI 3Dをアクティブにする(Activate a Specific Application)
- 1の変数をDoJavaScript.jsに書き込む。plain text・UTF-16として(Write to a File)
- DoJavaScript.jsに設定したショートカット,Ctrl+Shift+Alt+F12を打つ(Type a Keystroke)
あとは自分の好みでHot Key Triggerをつければマクロ完成です。画像のマクロの場合は,control+Hを押すとMoI 3Dで「Keyboard Maestroからこんにちは。」と表示されます。
応用
Subroutineにして使い回す
毎回同じ処理をコピーで増やすと管理が大変です。Subroutineにして,それを呼び出す形式に変えましょう。
MoI 3Dの既存の機能を呼び出す
もともとMoI 3Dに存在するウインドウ右側にある機能,例えばCirclesやBooleanなどを呼び出したい場合は,moi.command.execCommand('コマンド名')を使います。
コマンド名は,次のフォルダに入っているJavaScriptファイルの名前を調べるとわかります。
Circles > Centerの場合はCircle.jsが該当するので,拡張子を抜いたCircleがコマンド名になります。Boolean > UnionならBooleanUnion.jsで,BooleanUnionです。コードの例はこちら。
1 2 3 4 5 6 7 8 9 10 11 |
// Circles > Center moi.command.execCommand('Circle') ; // Circles > Diam moi.command.execCommand('CircleDiameter') ; // Boolean > Union moi.command.execCommand('BooleanUnion') ; // Boolean > Merge moi.command.execCommand('BooleanMerge') ; |
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
作者に感謝を伝えたい!
Buy me a coffeeは、クレジットカード払いなどでクリエイターにコーヒーをおごれるサービスです。ツール・情報が役に立った! 感謝の気持ちを表現したい! というかた、おごっていただけましたら嬉しいです☕️
このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。