このカーブ、欲しいけど自分で書くの面倒
って時に使えるコードを書かせようと思った副産物
import maya.cmds as cmds
# カーブを選択していない場合はエラーメッセージを表示
selected_curve = cmds.ls(selection=True)
if not selected_curve:
cmds.error("カーブを選択してください。")
# 選択したカーブの名前を取得
curve_name = selected_curve[0]
# カーブ情報を取得するためのcurveInfoノードを作成
curve_info_node = cmds.createNode('curveInfo')
cmds.connectAttr(curve_name + ".worldSpace[0]", curve_info_node + ".inputCurve")
# 度数、コントロール頂点、ノットベクトルを格納する変数
degree = None
cvs = None
knots = None
# 度数を取得
if cmds.objExists(curve_name + ".degree"):
degree = cmds.getAttr(curve_name + ".degree")
else:
print("度数が存在しません。")
# コントロール頂点を取得
if cmds.objExists(curve_name + ".controlPoints[*]"):
cvs = cmds.getAttr(curve_name + ".controlPoints[*]")
else:
print("コントロール頂点が存在しません。")
# ノットベクトルを取得
if cmds.objExists(curve_info_node + '.knots[*]'):
knots = cmds.getAttr(curve_info_node + '.knots[*]')
else:
print("ノットベクトルが存在しません。")
# 新しいカーブを作成するために存在する属性を使用
if degree is not None and cvs is not None and knots is not None:
new_curve = cmds.curve(d=degree, p=cvs, k=knots)
elif degree is not None and cvs is not None:
new_curve = cmds.curve(d=degree, p=cvs)
elif degree is not None and knots is not None:
# カーブの度数とノットベクトルがある場合は、適切な数のデフォルト頂点を作成する必要があります
num_cvs = degree + len(knots) - 2 * degree - 1
default_cvs = [(0, 0, 0)] * num_cvs
new_curve = cmds.curve(d=degree, p=default_cvs, k=knots)
elif cvs is not None and knots is not None:
# コントロール頂点とノットベクトルがある場合、デフォルトの度数を使用します
default_degree = 3
new_curve = cmds.curve(d=default_degree, p=cvs, k=knots)
else:
cmds.error("カーブを複製するために必要な属性が不足しています。")
# 不要なノードを削除
cmds.delete(curve_info_node)
print("複製されたカーブの名前: ", new_curve)