Macro Operator Editor¶
Macro Operator は、複数の操作を 1 回の実行でまとめて順次実行するエディターです。登録した Macro は名前付きのオペレーターとして Blender に組み込まれ、hotkey や他の PME メニュー、Python から呼び出されます。
このページは PME 2.1 の設定を対象にしています。
構成ガイド — 機能・組み合わせ・活用例(AI 向け)
呼び名:Macro Operator/種別 ID:MACRO。
一度の呼び出しで複数のステップを順に実行する機能です。別のキー入力ごとに候補を進める Stack Key と使い分けます。
入力:Command / Menu のスロットを必要な数だけ追加し、実行順に配置します。無効なスロットは対象外です。スロットへ。
組み合わせ:Menu で参照する実行用メニューは Sticky Key / Macro Operator / Modal Operator。Popup Dialog の描画をそのまま連続処理のステップとは扱いません。
呼び出し:ホットキー、別メニューからの呼び出し、外部スクリプトを使えます。外部コードは 呼び出し方法へ。
制約:各ステップが必要とするエディター、モード、対象が揃う順序を決めます。コマンドの成功や一回の Undo を、Macro にまとめただけで保証しません。
対話的な手順:ユーザーの確定を待つ操作は、Blender オペレーターとして追跡できるステップに分けます。対話操作へ。
診断:欠けたオペレーターや参照先は 診断メッセージを確認します。表示された問題を直してから実行します。
設計例:モード切り替え→対象の選択→操作。最初の前提と最後の期待状態を決め、途中の取消やエラーで何が残るかも確認します。
変数の共有期間:一回の Macro 実行中、Python コードのスロット間で共有します。保存・処理・復元の組み立て方へ。
画面と編集の流れ¶
1名前と基本操作一連の処理をまとめる Macro の名前と有効状態を確認します。
2Advanced settings説明文と利用できる条件を設定します。
3Keymap / Hotkey使う場所とキーを設定します。この例は 3D View の B キーです。
4順番に実行するスロット準備、操作、後処理の順に項目を並べた例です。
一覧で編集対象を選び、名前と有効状態を確認して、呼び出し方とスロットを設定します。 共通の一覧・検索・タグは エディターの共通要素、 各部は 名前、キー設定、 スロット、詳細設定を参照してください。
名前と基本操作¶
名前と有効状態で編集対象を確認します。タグ・名前変更・参照元などの操作は 選択メニューの設定 を参照してください。 この種別にはメニューのプレビューボタンはありません。
Keymap / Hotkey¶
呼び出す場所とキーを設定します。入力欄の操作は 共通の Hotkey 設定 を参照してください。
Macro は Blender にオペレーターとして登録されるため、hotkey が未設定でも、メニュー経由 / open_menu() / bpy.ops.pme.invoke_macro(...) などから呼び出せます。
Added in version 2.0.5: スクリプトやカスタム UI から PME Macro を呼び出すための bpy.ops.pme.invoke_macro(...) を追加しました。呼び出し側で Macro 内の全スロット引数を渡さなくても、PME 側の Macro 定義をそのまま使えます。
スロット¶
スロットは上から順に実行されます。Stack Key のように「次の押下まで待つ」挙動はありません。
スロットの追加・削除・並び替えが可能です。
個別スロットの有効化/無効化ができます。
スロットタイプは Command / Menu の 2 種です。
Menu スロットでは PME の Sticky Key / Macro Operator / Modal Operator を呼び出せます。Pop-up Dialog / Pie Menu のような対話 UI は Macro の途中から呼び出す対象には適しません。
診断メッセージ¶
オペレーターや参照先が見つからないなど、PME が検出した構成上の問題はスロット行の警告アイコンから確認できます。警告がないことは、実行時のモード・選択状態で全オペレーターの条件が成立する保証ではありません。実行時のエラーは、その場のコンテキストも確認してください。
Added in version 2.0.5: 現在の Blender 環境で見つからない operator が Macro に含まれている場合、Blender の native Macro 実行に入る前に PME 側で検出し、Macro 全体を安全に停止するようになりました。古い設定、無効化されたアドオン、名前が変わった operator が原因で Blender ごと落ちることがあった既知の問題への対策です。
Advanced settings(詳細設定)¶
歯車から開きます。Description と Poll は 共通の詳細設定 を参照してください。
Macro の Poll は「この Macro 全体を実行してよいか」の判定として評価されます。
コードと入力欄¶
この種別で使える入力は冒頭の構成ガイドを参照してください。入力欄の操作は 共通のスロットエディタ、コードは 書き方と入力制限、 コード例にまとめています。
活用例と確認する条件¶
連続操作をまとめる¶
アクティブなメッシュがあり、Object Mode から始める例です。最初のステップで Mesh Edit Mode へ移り、次で全要素を選択します。
スロット 1(Command):
bpy.ops.object.mode_set(mode='EDIT')
スロット 2(Command):
bpy.ops.mesh.select_all(action='SELECT')
同じオペレーターを違うパラメータで実行する¶
同じオペレーターでも、それぞれのスロットに異なる引数を設定できます。次は Mesh Edit Mode で面を選択した状態から使う例です。二回目は一回目の結果に対して実行されます。
bpy.ops.mesh.inset(thickness=0.02)
bpy.ops.mesh.inset(thickness=0.05)
Stack Key の各スロットを複数ステップにする¶
Stack Key の Command スロットから Macro を呼び出すと、巡回する各ステップが複数操作を持てる構成になります。
open_menu("My Macro Operator")
または bpy.ops.pme.invoke_macro を使う形:
bpy.ops.pme.invoke_macro(pm_name="My Macro Operator")
別の Macro / Sticky Key / Modal を呼ぶ¶
Macro の Menu スロットで PME の他エディターを指定すると、そのオペレーターを Macro の 1 ステップとして組み込めます。複雑な処理を別の Macro に分けたり、Sticky Key / Modal Operator の対話を組み込んだりできます。Stack Key はこの Menu タブの参照対象ではありません。
対話的な操作を含める¶
Transform のようにユーザーが調整するオペレーターは、開始処理を呼ぶ指定を使います。PME が Blender の Macro ステップとして扱うオペレーターでは、操作の確定後に次へ進む構成にできます。任意の Python コードの途中で非同期処理を始めても、すべての処理を自動で待てるわけではありません。単独のオペレーター呼び出しとしてスロットを分け、確定と取消をそれぞれ試します。
bpy.ops.transform.resize('INVOKE_DEFAULT')
実行する場所と対象を整える¶
最初に必要なエディター、モード、アクティブ・選択対象を決めます。途中でモードを変更するなら、
次の操作がそのモードで使える順序にします。エリアを切り替える focus_area() などのヘルパーもありますが、
単に別エリアを選べばすべてのオペレーターが実行できるわけではありません。
必要な対象が見つからない場合の動作を決め、コンテキストの確認を行います。
Added in version 2.1: Re-Capture で最近の操作を複数選び、実行した順番で Macro として追加できます。取り込んだ後は引数と実行条件を確認してください。
関連ページ
参考動画(原作者のチャンネル)¶
roaoao の動画一覧より。旧版の UI・手順を扱う参考動画です。