如何在Python中为表达式命令格式化MEL表达式字符串?

时间:2015-09-14 01:30:54

标签: python expression string-formatting maya mel

使用python脚本创建Maya MEL表达式时遇到问题。我需要能够根据输入到某些GUI组件中的值来格式化表达式,但是当我尝试格式化包含“if语句”的表达式时,存在一些冲突。看看:

revol_int = self.revol_int.value()

revolExpression = pm.expression(o=rigRevol, s='if (frame%8 == 0) {rz = (frame//{0}) * ((360/{1}.000)/2.000);}'.format(interv_int, revol_int))

表达式在手动输入时有效,但是当通过脚本格式化完成时,我得到 KeyError ,因为“{}”包含了if语句代码块。所以我尝试了另一种格式化方法:

revol_int = self.revol_int.value()

revolExpression = pm.expression(o=rigRevol, n='olr_revolutions_expression', s='if (frame%8 == 0) {rz = (frame//%s) * ((360/%s.000)/2.000);}' % (interv_int, revol_int))

但在这种情况下,我在索引11 处得到#ValueError:不支持的格式字符'(0x20)。我很不确定从哪里开始。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要包含另一个%以用作第一个百分比的转义字符。否则Python会对如何评估字符串感到困惑。

'if ( (frame%%8) == 0) {rz = (frame/%s) * ((360/%s.000)/2.000);}' % (interv_int, revol_int)