MayaのPythonは、Script EditorのPythonタブから実行できます。最初はシーンを一括変更するコードより、選択したオブジェクトの名前や種類を表示するコードから始めると、実行範囲と結果を確かめやすくなります。
ここではMaya 2026の公式ドキュメントにあるmaya.cmdsを使い、現在の選択を調べる短い例を紹介します。Maya内部で動かすコードなので、通常のターミナルのPythonへ貼り付ける手順とは異なります。
Script EditorでPythonタブを開く
「Windows」→「General Editors」→「Script Editor」を開きます。日本語UIではウィンドウ・一般エディタに相当するメニューです。画面右下のScript Editorボタンからも開けます。
入力欄にはMELとPythonのタブがあります。Pythonタブを選び、次の1行を入力して実行します。タブや履歴欄の役割はAutodesk公式のScript Editor解説でも確認できます。
print("Hello Maya")
履歴欄にHello Mayaと表示されれば、Pythonを実行する場所を確認できています。コードを選択して実行する場合は、その選択範囲が実行対象になります。長いコードの一部だけを選んでいないか確認してください。
選択したオブジェクト名を表示する
練習用シーンでキューブなどを作り、オブジェクトモードで選択してから、次のコード全体を実行します。ここでは名前を取得して表示するだけで、移動・削除・名前変更は行いません。
import maya.cmds as cmds
selected = cmds.ls(selection=True, long=True) or []
print("Selected count:", len(selected))
for node in selected:
print(node)
selection=Trueは現在選択している対象を取得する指定、long=TrueはDAGノードの階層を含む長い名前を返す指定です。詳細はlsコマンドの公式リファレンスを参照してください。
キューブを1個選んだ場合はSelected count: 1に続いて、たとえば「|pCube1」のような名前が表示されます。実際の名前はシーンにより変わります。何も選択しなければ件数は0になり、for文の中は実行されません。
コードを4つの役割に分けて読む
| 部分 | 役割 |
|---|---|
| import maya.cmds as cmds | Mayaのコマンドをcmdsという名前で使う |
| cmds.ls(…) | 条件に合う対象の名前を取得する |
| len(selected) | 取得した項目数を数える |
| for node in selected | 取得した項目を一つずつ扱う |
「対象を取る」「件数を確認する」「一つずつ処理する」という順番は、一括リネームや書き出しにも応用できます。最初から処理を実行せず、対象だけをprintで確認する段階を挟むと、意図していないノードを巻き込むのを防ぎやすくなります。
ノードの種類も確認する
次の例ではコンポーネントや属性の指定を除いてオブジェクト名を取得し、nodeTypeで種類を表示します。キューブ本体を選ぶ場合とShapeノードを選ぶ場合では、返る種類が異なります。
import maya.cmds as cmds
nodes = cmds.ls(selection=True, objectsOnly=True, long=True) or []
if not nodes:
print("Select an object first.")
else:
for node in nodes:
print(node, "->", cmds.nodeType(node))
OutlinerでキューブのTransformを選んだ場合、種類は通常transformです。画面にポリゴンが見えていても、選択したノード自体がmeshとは限りません。この違いを把握してから、メッシュ限定の処理へ進みます。戻り値はnodeTypeの公式説明で確認できます。
よくあるエラーと確認箇所
| 表示 | 最初に確認すること |
|---|---|
| SyntaxError | Pythonタブか、括弧や引用符が揃っているか |
| IndentationError | for文やif文の中の字下げが崩れていないか |
| NameError: cmds | importの行も含めて実行したか |
| No module named maya | Maya内のPythonとして実行しているか |
| 件数が0になる | コードを実行する前に対象を選択したか |
コピー時に全角の引用符へ置き換わると、Pythonの文字列として認識されないことがあります。エラーの最後の行だけでなく、示された行番号の前後を見ます。分からないときはHello Mayaの1行へ戻し、実行環境とコードの問題を切り分けましょう。
自動化へ進む前に確認すること
次の段階で名前変更やファイル出力を加えるなら、未選択・複数選択・同名オブジェクト・名前空間付きのデータを試します。1個のキューブで成功しただけでは、実際の複雑なシーンで対象を正しく取れるとは限りません。
コードはPythonファイルにも保存し、実行例と対応するMayaのバージョンを残します。既存のMELコードをPythonへ移す場合は文法をそのまま貼り替えず、MayaでのPython使用方法にあるフラグの指定方法などを確認してください。
