ребята, спасибо, что нашли время прочитать это! Таааааааааааааааааааааааааааловалов)), я пытаюсь создать инструмент для генерации текста в Maya, используя текстовые кривые, но не могу заставить его работать. Идея состоит в том, что я ввожу текст в инструмент, и после нажатия кнопки «Создать текст» этот текст превратится в геометрический фрагмент textcurve, но что бы я ни делал, я, кажется, получаю ошибки.
Есть ли шанс, что кто-нибудь знает, что я могу сделать, чтобы исправить ситуацию?
Спасибо, что нашли время прочитать это! Ваше здоровье!
import sys
import os
import maya.cmds as mc
outputText = 'Hello World'
def UI ():
if mc.window('textGenerator', exists = True):
mc.deleteUI('textGenerator')
mc.window('textGenerator')
mc.columnLayout()
mc.text('Enter text here: ')
mc.textFieldGrp()
mc.button(label = 'Create Text', command = 'buttonPress()')
mc.showWindow('textGenerator')
def buttonPress():
finalName = mc.textFieldGrp()
mc.textCurves(finalName)
sys.stdout.write (outputText)
mc.textCurves(t=outputText)
UI()






У вас есть несколько проблем в вашем коде, вы должны инкапсулировать элементы пользовательского интерфейса в переменную (или, по крайней мере, назвать их правильно):
textInput = mc.textFieldGrp()
Во-вторых, никогда не используйте запятую для ввода вашей команды и используйте частичную или лямбду для передачи переменных в функцию (прочтите некоторые из моих других сообщений по этой теме или найдите сообщения от theodox)
from functools import partial
mc.button(label = 'Create Text', command = partial(buttonPress, textInput))
Последняя часть вашего кода:
def buttonPress(textFieldGrpName, *args):
# *args is just here to skip a default argument pass as last by maya
# query the input text in the text field grp
finalName = mc.textFieldGrp(textFieldGrpName, q=1, text=1)
mc.textCurves(t=finalName)
sys.stdout.write (outputText)
mc.textCurves(t=outputText)
Я только что исправил свой обзор кода, была передана неправильная переменная, и вам не хватало флага -t в строке 15. (у меня раньше не было Maya, поэтому я не мог протестировать его вживую :))