使用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)。我很不确定从哪里开始。任何建议都将不胜感激。
答案 0 :(得分:1)
您需要包含另一个%
以用作第一个百分比的转义字符。否则Python会对如何评估字符串感到困惑。
'if ( (frame%%8) == 0) {rz = (frame/%s) * ((360/%s.000)/2.000);}' % (interv_int, revol_int)