将变量从MEL传递到表达式MAYA

时间:2015-02-16 15:20:02

标签: maya mel

我对于为什么写作不起作用有点疑惑。 在我的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. // 
  • 我希望joint2.scaleX复制distanceDimensionShape1.distance float

2 个答案:

答案 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的行为。
  • 始终有一个指向Maya的Mel / Python文档的互联网浏览器 编写脚本时:link
  • 在SO上发布问题时尝试开发更多内容:

    1. 您打算如何实现以及计划如何实现

    2. 一个评论的代码块(大约10-15行很好,可以很好地概述你的mel脚本)

    3. 您的错误消息是什么

希望这会有所帮助。

答案 1 :(得分:1)

如果您想创建一个表达式,然后更改连接到它的内容,请按以下方式创建:

expression -s ("joint2.scaleX = .I[0]")

然后您可以将特定属性连接到该插件,如下所示:

connectAttr distanceDimensionShape1.distance expression1.input[0]

这是假设你不能直接写表达式的正当理由:

expression -s ("joint2.scaleX = distanceDimensionShape1.distance")