2020年12月17日木曜日

fileコマンドでuiConfigurationScriptNodeを回避する

  uiConfigurationScriptNode を作らせなくするためには、Preferences の UI Elements から、Panel Configurations の項目を編集しなければいけません。※参照

  このノードを作成させなくするために、スクリプトで対処しようとしてグローバル変数なんかをいじったりもしていましたが、もっと簡単に回避する方法があったようです。


  mayaのコマンドヘルプにある fileコマンドで、こんなフラグを見つけました。

-uiConfiguration(-uc) boolean createquery
uiConfiguration スクリプト ノードにシーンと一緒に UI 設定を保存します(たとえば、panes)。現在の既定はオンで、initialStartup.mel に設定されます。


  さっそくテスト。
  まず、設定が初期状態であることを確認します。

  この赤枠の部分にチェックが入いっていれば初期状態です。
  [Save]で設定を確定したら、polyCube を作成し、シーンを保存します。

  保存したファイルのプロパティを見るとバイナリ形式でも 50KB になっています。

  テキストエディタとかで開くと、バイナリファイルなのに、こんな感じのレイアウトコマンドが見つかります。

  Panel Configuration のチェックをオフにすれば、この部分が無くなるのですが、仕様書に書いてあったとしてもオフにされていることが、まずありません。

  で、同じシーンで fileコマンドを実行します。

  そして、ファイル保存。

  同じシーンなのに 8KBまで小さくなりました。٩(ˊᗜˋ*)و

  逆に40KBもレイアウトコマンドが記述されているなんて、そりゃマルウェア仕込まれますわ。

  この fileフラグは、mayaを終了するまで有効のようです。次回起動時には元に戻ってしまうため、起動スクリプトに組み込むか、userSetupに記述しておくと捗りますかね。


  ほかに、-preSaveScript(-prs), -postSaveScript(-pos) と、魅力的なフラグを見つけたので、セーブする前になにかスクリプトを実行させられるのかと思ったら、-save フラグと一緒に使用しないといけないらしく、結局は [Ctrl]+[s] や [Ctrl]+[Shift]+[s] のプロシージャを上書きしないとダメっぽい。
  プロシージャを上書きするくらいなら、直接スクリプトを埋め込むよなぁと思ってしまうけど、使い方が違うのか・・・?



0 件のコメント:

コメントを投稿