Python 如何使用GeometryConstraint类?

Python 如何使用GeometryConstraint类?,python,maya,mel,pymel,Python,Maya,Mel,Pymel,我已经试着让它工作这么久了,我已经阅读了文档,但我似乎不明白如何实现GeometryConstraint 通常情况下,其衍生版本为: geometryConstraintNode=pm.geometryConstraint(目标、对象) 然而,在Pymel中,设置属性时它看起来更好一些,这就是我想使用它的原因,因为它更具可读性 我试过这个: geometryConstraintNode=nt.GeometryConstraint(目标、对象).setName('geoConstraint') 但

我已经试着让它工作这么久了,我已经阅读了文档,但我似乎不明白如何实现GeometryConstraint

通常情况下,其衍生版本为:

geometryConstraintNode=pm.geometryConstraint(目标、对象)

然而,在Pymel中,设置属性时它看起来更好一些,这就是我想使用它的原因,因为它更具可读性

我试过这个:

geometryConstraintNode=nt.GeometryConstraint(目标、对象).setName('geoConstraint')

但是运气不好,有人能看一下吗


香农

这不适合你吗

import pymel.core as pm

const = pm.geometryConstraint('pSphere1', 'locator1', n='geoConstraint')
print const
const.rename('fred')
print const
产出将是

geoConstraint
fred
和一个名为“fred”的约束对象

pymel节点是从pm.animation.geometryConstraint中定义的命令返回的返回值。它返回的是实际场景内约束的类包装,该约束在pm.nodetypes.GeometryConstraint中定义。它是类版本,您可以在其中执行所有属性设置等;命令版本与maya.cmds中的相同内容相匹配,有时会添加一些语法糖分


在本例中,pymel节点与任何其他pymel节点类似,因此renamimg等使用从DagNode继承的相同的“.rename”功能。您还可以使用从Transform继承的函数,如“getChildren()”或“setParent()”。文档通过在节点类型页面的顶部包含继承树来全面说明这一点。基本上,所有pynode返回都将共享至少一个DagNode(命名之类的东西)和通常的变换(移动、旋转、父对象)或形状(查询组件等)

我希望以不同的方式执行此操作,尽管我已经发布了与您在我的问题中使用的完全相同的代码,我正试图用另一种方法来实现这一点。必须启动命令版本来创建场景对象并钩住它们的连接;nodetype版本是围绕这一点的包装器。您可以执行pm.geometryConstraint('pSphere1','locator1').setName('blah')。您可以使用pm.PyNode('oldName').setName('newName')获取现有约束。。。顺便说一句,使用pm.PyNode('name-of-existing-object')而不是'pymel.nodetypes.ClassName('name-of-existing-object'),这样您就不必知道类型: