2015-09-14 5 views
0

У меня возникла проблема при создании выражения Maya MEL с помощью скрипта python. Мне нужно иметь возможность форматировать выражение на основе значений, введенных в определенные компоненты GUI, но когда я пытаюсь форматировать выражение, содержащее оператор «if», существует некоторая противоречивость. Посмотрите:Как форматировать строку выражения MEL для команды выражения в Python?

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 из-за «{}», что дом, если заявления блока кода. Так что я попробовал другой метод форматирования:

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: неподдерживаемый формат символа «» (0x20) с индексом 11. Я совершенно не знаю, куда идти отсюда. Любые предложения будут ценны.

ответ

1

Вам необходимо включить еще один % для использования в качестве символа эвакуации для первого процента. В противном случае Python путается, как оценить строку.

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