« 選択中のオブジェクトからコンストレインを取得。したい。 | トップページ | モディファイアキーどれが何番ですか。 »

2017年7月 4日 (火)

ダブルクォーテーションの中にダブルクォーテーション。





すっかり忘れていて、こんなくだらないことで2~30分あたふたしてしまった orz



久しぶりに userSetup.mel をいじったんですが、つまり、Maya さまを起動するときに走らせるスクリプトをいじったんですが、愛用中の UnitBusUI がなぜか自動で起動されなくなっちゃった。


なにやら、UnitBusUI を呼び出すコマンドが、Maya の UI がロードされる前に実行されるようになってしまったように見えたので、以前も試した evalDeferred を使って実行を遅らせてみたら、 ちゃんとロードされました。



今までは userSetup.mel の中で

UnitBusUI;

とだけ書いていて問題なかったのに、起動されなくなっちゃったので、

evalDeferred "UnitBusUI";

と書いてみたら、うまく起動するようになったということです。




ここまでは良かったんだが・・・・





次に comet script というやつをロードするために

source "cometMenu.mel";

と書きたかったんだが、やはり実行を遅らせないとダメなようで、同じく evalDeffered を使おうとしたんですが、この evalDeffered コマンド、引数に与えるコマンドをダブルクォーテーションで囲まないといけないのですね。


そして今回引数として与えるコマンドは source コマンドで、これまたダブルクォーテーションで囲った引数が必要なコマンドです。


つまり、ダブルクォーテーションで二重に囲う構造になるわけで、あれれ? こういう場合、ダブルクォーテーションをどうやって記述するんだっけ? というのであたふたしてしまったのです。


evalDeferred "source "cometMenu.mel";";

これじゃダメなんですね。 どちらかの囲いをシングルクォーテーションにしてもダメだし、カッコにしてみてもダメだった。






で、ちょっと調べたらすぐ分かりました。  MEL でダブルクォーテーションを二重にしたい場合は、 囲われる内側のダブルクォーテーションの前に \ (バックスラッシュ・円記号)を付ければよかったんですね。


evalDeferred "source \"cometMenu.mel\";";
このように書けばよかったという。

そうなのね。 MEL はそういう文法なのね。はい分かりますた。




ほんとそれだけの話なんですが、半年後以降とかにまた同じ問題が起きて、対処を忘れて、あたふたと2~30分も狼狽する自分の姿が非常にクリアに脳内レンダリングできたので、ここにメモしただけです。 すぐ忘れちゃうからなあ。 自分のブログにメモすると、ほんと助かってるw  ありがとう過去の俺。  っていうか1回で覚えろ現在の俺。







UnitBusUI 便利です。 スクリプトランチャメニューですね。
UnitBus さまありがとうございます。 毎日使ってます。



.

|

« 選択中のオブジェクトからコンストレインを取得。したい。 | トップページ | モディファイアキーどれが何番ですか。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ダブルクォーテーションの中にダブルクォーテーション。:

« 選択中のオブジェクトからコンストレインを取得。したい。 | トップページ | モディファイアキーどれが何番ですか。 »