我对于为什么写作不起作用有点疑惑。 在我的MEL脚本编辑器中,我正在编写
string $Adistance = ("distanceDimensionShape1"+".distance");
expression -s (" $Bdistance = $Adistance; joint2.scaleX = $distance");
但我收到此错误
// Warning: line 1: Converting string "distanceDimensionShape1.distance" to a float value of 0. //
答案 0 :(得分:1)
好的,首先我不是Mel程序员,我通常用Python编写脚本,因此代码中可能存在语法错误。
您的问题:
如果我错了,请纠正我,但我认为您正在尝试将distance
distanceDimensionShape1
属性变为变量,并将其设置为scaleX
来自joint2
属性}。
您的代码:
string $Adistance = ("distanceDimensionShape1"+".distance");
expression -s (" $Bdistance = $Adistance; joint2.scaleX = $distance");
您在第一行中所做的事情:您声明的字符串变量包含"distanceDimensionShape1.distance"
,但未获得distance
的{{1}}属性
你应该在第一行做什么:使用maya docs中提供的getAttr命令检索你的形状属性。
您在第二行中正在做什么:您正在尝试设置distanceDimensionShape1
这是一个带字符串值的浮点值。我猜...因为我不知道joint2.scaleX
是什么,因为它只出现在你的代码中。
您应该在第二行中执行的操作:使用setAttr正确设置您的属性。
我的解决方案:
我希望这会有所帮助,因为我们对您当前的问题只有很少的信息:
$distance
第1行正确检索所选属性并将其存储到float $Adistance = `getAttr distanceDimensionShape1.distance`;
setAttr joint2.scaleX $Adistance;
。
第二行使用检索到的值设置您的属性。
注意:强>
float
来查看在maya中进行操作时调用的方法。通过这种方式,您将能够重现Maya的行为。在SO上发布问题时尝试开发更多内容:
您打算如何实现以及计划如何实现
一个评论的代码块(大约10-15行很好,可以很好地概述你的mel脚本)
您的错误消息是什么
希望这会有所帮助。
答案 1 :(得分:1)
如果您想创建一个表达式,然后更改连接到它的内容,请按以下方式创建:
expression -s ("joint2.scaleX = .I[0]")
然后您可以将特定属性连接到该插件,如下所示:
connectAttr distanceDimensionShape1.distance expression1.input[0]
这是假设你不能直接写表达式的正当理由:
expression -s ("joint2.scaleX = distanceDimensionShape1.distance")