gpt4 book ai didi

python - Maya Python - 如何使用 cmds.expression() 调用函数

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:49 24 4
gpt4 key购买 nike

我当前的项目要求每当时间线被擦洗或选择(基本上是每帧)时调用特定的类函数。我测试了 cmds.expression(s = 'print "hello "') 的使用,发现每次我在拖动时间线时将鼠标悬停在不同的帧上时,它都会打印 "hello “正如我所料。但是,每当我尝试调用类函数(或任何其他已定义的函数)时,我都会收到错误。这是我的代码的一般概要:



class DummyClass:
def __init__(self):
self.name = 'Dummy'

def displayName():
print self.name

d = DummyClass()
cmds.expression(s = 'd.displayName()')

我收到错误:# 错误:第 0 行:找不到过程“d.displayName”。 #

这是我尝试查看是否可以调用任何函数定义的一般概要,更不用说类了:

def foo():
print 'Success!'

cmds.expression(s = 'foo()')

我收到错误:# NameError: name 'foo' is not Defined #

也许我只是不明白cmds.expression()真正的作用。它只适用于外部 python 文件还是其他什么?我可以让 cmds.expression(s = 'print "hello "') 工作,但显然在同一脚本中找不到其他内容。我采取了错误的方法吗?我缺少语法吗?我花了很多时间研究这个问题,但一无所获。

如何使用 cmds.expression 从类内部或其他方式调用已定义的函数?如果这是不可能的,是否有类似的命令可以做到这一点?

最佳答案

标志s设置表达式字符串。这种类型的表达式是可撤销、可查询和可编辑的。

你应该这样使用它:

import maya.cmds as mc
mc.expression( s = 'pSphere1.translateX = cos(time/2)*10' )

但是调用Python定义的函数你可以用SO帖子中描述的相同方式:

How do I use Def Function strings in maya

关于python - Maya Python - 如何使用 cmds.expression() 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com