【问题标题】:How to format a MEL expression string for the expression command in Python?如何为 Python 中的表达式命令格式化 MEL 表达式字符串?
【发布时间】:2023-03-16 02:37:01
【问题描述】:

我在使用 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))

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

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))

但在这种情况下,我得到一个 # ValueError: unsupported format character ' ' (0x20) at index 11。我很不确定从这里去哪里。任何建议将不胜感激。

【问题讨论】:

    标签: python expression string-formatting maya mel


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      相关资源
      最近更新 更多