Skip to content

Instantly share code, notes, and snippets.

@redglasses67
redglasses67 / getActiveSelectionList.py
Last active December 25, 2019 04:48
選択しているノードの一覧を取得する
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
print(selList)
mDagPath1 = selList.getDagPath(0)
print("mDagPath1 = %s" %mDagPath1.fullPathName())
mDagPath2, mObject = selList.getComponent(0)
print("mDagPath2 = %s - mObject = %s\n" %(mDagPath2.fullPathName(), mObject))
@redglasses67
redglasses67 / filteringFromActiveSelectionList.py
Last active December 25, 2019 04:49
選択しているノードから特定のノードの一覧を取得する
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
selListIter = om2.MItSelectionList(selList, om2.MFn.kTransform)
print("selListIter type = %s" %type(selListIter))
# 注意点 この MItSelectionList のように MIt~ で始まっているクラスはイテレータなので
# 戻り値を普通のリストのように for でまわしても中身を取得できません。
# while not iter.isDone() でまわして、且つ next() を書かないと
# 次のアイテムにいけず無限ループに陥るのでのでご注意を…
@redglasses67
redglasses67 / checkNodeType.py
Last active June 16, 2023 03:15
ノードタイプを調べる
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
mObject = selList.getDependNode(0) # .getComponent()で取得できる MObject を使ってもよい
print("mObject apiTypeStr = %s" %mObject.apiTypeStr)
# 上記の apiTypeStr は文字列で kTransform だとか kMesh という風に返ってくるが、
# dagPath が持つ apiType() メソッドは MFn クラスに定義してあるタイプのIDがintで返ってくる
print("mDagPath2 apiType = %s" %mDagPath2.apiType())
@redglasses67
redglasses67 / getTransformAndMesh.py
Last active December 25, 2019 04:40
トランスフォームとメッシュを取得する
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
mDagPath = selList.getDagPath(0)
if mDagPath.hasFn(om2.MFn.kMesh):
transform = om2.MFnTransform(mDagPath)
print("transform = %s" %transform.fullPathName())
mesh = om2.MFnMesh(mDagPath)
mesh2 = mDagPath.extendToShape() # こんな方法もあります
@redglasses67
redglasses67 / renameNode.py
Last active December 25, 2019 04:40
ノードをリネームする
import maya.api.OpenMaya as om2
dgModifier = om2.MDGModifier()
dgModifier.renameNode(mObject, "hogehoge") # 第1引数は MObject で、第2引数に 変更したい名前 です
dgModifier.doIt() # この doIt() を書き忘れると実行されないのでご注意を
@redglasses67
redglasses67 / getAndSetTRSValues.py
Created December 25, 2019 04:51
TRSの値を取得、変更する
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
mDagPath = selList.getDagPath(0)
transform = om2.MFnTransform(mDagPath)
trs = transform.translation(om2.MSpace.kTransform)
print("translation = %s" %trs)
trsW = transform.translation(om2.MSpace.kWorld)
@redglasses67
redglasses67 / getAnimCurveValue.py
Last active December 25, 2019 05:16
キーフレームを取得、変更する
import maya.api.OpenMaya as om2
import maya.api.OpenMayaAnim as oma2
selList = om2.MGlobal.getActiveSelectionList()
mObject = selList.getDependNode(0)
# findPlug を使って取得する場合
dependencyNode = om2.MFnDependencyNode(mObject)
transXplug = dependencyNode.findPlug('tx', 0)
@redglasses67
redglasses67 / setExpression.py
Last active January 19, 2024 11:31
エクスプレッションを設定する
import maya.api.OpenMaya as om2
import maya.OpenMaya as om
selList = om2.MGlobal.getActiveSelectionList()
mDagPath = selList.getDagPath(0)
objectName = om.MFnDependencyNode(mDagPath.transform()).name()
# 残念ならがまだ Python API 2.0 の方に MFnExpression クラスが移植されていないようなので1.0の方を使います
exp = om.MFnExpression()
exp.create("%s.rotateY = time * 10;" % objectName) # 中身はいつものExpressionを書く
@redglasses67
redglasses67 / getAndSetVertexColors.py
Created December 25, 2019 05:14
頂点カラーを取得、変更する
import maya.api.OpenMaya as om2
selList = om2.MGlobal.getActiveSelectionList()
mDagPath = selList.getDagPath(0)
mesh = om2.MFnMesh(mDagPath)
# ColorSetの名前一覧を取得
colorSetNames = mesh.getColorSetNames()
print(colorSetNames) # stringのTupleで返ってきます
@redglasses67
redglasses67 / showAllMenuFullPath.py
Last active November 18, 2022 03:04
Mayaのトップメニューにある全てのメニューのフルネームを取得
# -*- coding: utf-8 -*-
import maya.cmds as mc
# 再帰的にメニューを取得する
def findMenuRecursively(mPath, indentLevel):
indent = ""
for i in range(indentLevel):
indent += " "
mItems = mc.menu(mPath, q=True, itemArray=True)