update.いろんなツールをまとめたツールセットみたいな物をつくってメニューにそれぞれの機能を登録していると、メニューの更新・整理時にだんだんと面倒な感じになってきてコードも荒れてきます。構造データだけ外だしにしてそこからメニューを自動で構築するようにしたら、見通しも良く更新も楽なんじゃないか、と思ったので、夜なべして作りました。Qiitaで共有します。実例こんな感じのjsonデータを用意します。]}これをファイルに保存して、そのパスを今回作ったメニュービルドツールに食わせると、build_menu('path/to/your/menu.json')こうなります。menuというプロパティで各メニューアイテムを表すオブジェクトの配列を指定します。どの要素にもlabelというプロパティが必須で、これがメニューに表示されるラベルにそのままなります。pythonのプロパティがあるとメニュー選択時に呼び出すpythonスクリプトに、melのプロパティがあるとメニュー選択時に呼び出すmelスクリプトになります。そこにoptionがtrue値で存在するとメニュー上でオプションボックスになります。(図のメニュー中で□の表示になってる部分)mel/pythonどちらのプロパティもない場合、ディバイダーになります。menuは入れ子にすることができ、その場合メニューではサブメニューになります。pythonのオブジェクトでメニュー構成を指定できるようにもしました。通常はこっちのほうが楽ですね。オブジェクトのフォーマットは上記jsonファイルをjsonモジュールでパースしたものと同じです。"description":"ものすごいツールセットです。"menu":[::メニュー名になるname以外にも色々かけます。version、descriptionはこのjsonファイルのメタ情報ですが、ついでにabout_dialogをtrueにしておくと、ツールにaboutメニューが追加され、選択すると、こんなダイアログがでます。other_menu)第二引数に別メニューの参照を渡すと、そのメニューのサブメニューとしてメニューを構築できるのですが、top_submenuという設定項目がtrueに設定されていると、その際にツール名でサブメニューを1段階挟みます。設定されていないとそのままmenuの配列で設定されている項目が並びます。実例は面倒なので省略。ソース生ソース貼り付けます。シェルフに登録するなり、モジュールとして取り込むなりしてください。Windowsでは動作確認してませんが、まあ大丈夫でしょう。ところで、Maya2019はまだかいな。parent_menu)毎度ソースコードをgitで公開しないのは、いろいろな手間とやんごとなき都合によるものです。imai@harayoki職業エンジニアです。エンジニアとしてそこそこ良い働きをしますが、趣味興味はデザインやアナログ方面にある変わった人です。アウトドア派なので休日にコンピュータはほとんどいじりませぬ。最近はてぃーえーとか名乗るようにもなりました。upLoginユーザーは見つかりませんでした。