ポイント位置のリストを受け取りカーブを作成
選択がTransformを継承しているオブジェクトだったらその下に、そうでなければ新しいオブジェクトを作ってその下にカーブシェイプを作る
import maya.OpenMaya as om
pntPoss = [
(0, 0, -1.0),
(-1, 0, 0.5),
(1, -0, 0.5),
(0, 0, -1.0),
]
def getMPoints(pntPoss):
pnts = om.MPointArray()
for pntPos in pntPoss:
pnts.append(om.MPoint(*pntPos))
return pnts
def getSelection():
sl = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sl)
if not sl.length():
return
dagPath = om.MDagPath()
sl.getDagPath(0, dagPath)
if not dagPath.hasFn(om.MFn.kTransform):
return
node = dagPath.node()
return node
def createCurve(pntPoss):
crv = om.MFnNurbsCurve()
pnts = getMPoints(pntPoss)
deg = 1
span = pnts.length() - deg
knotCnt = span + 2 * deg -1
knots = om.MDoubleArray()
for i in range(knotCnt):
knots.append(i)
sl = getSelection()
if not sl:
sl = om.MObject()
crv.create(pnts, knots, deg, om.MFnNurbsCurve.kOpen, False, False, sl)
createCurve(pntPoss)