Maya 2023 python 3 can't run mel2py script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
These are the errors I get.
# File "<maya console>", line 99, in <lambda>
# File "<maya console>", line 41, in convert
# File "C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\tools\mel2py\__init__.py", line 428, in mel2pyStr
# results = mparser.parse(data)
# File "C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\tools\mel2py\melparse.py", line 3065, in parse
# translatedStr = parser.parse(data, lexer=self.lexer, debug=debug)
# File "C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\util\external\ply\yacc.py", line 333, in parse
# return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
# File "C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\util\external\ply\yacc.py", line 1120, in parseopt_notrack
# p.callable(pslice)
# File "C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\tools\mel2py\melparse.py", line 2803, in p_command
# t[0] = format_command(t[1], t[2], t)
# File "C:\Program Files\Autodesk\Maya2023\Python\lib\site-packages\pymel\tools\mel2py\melparse.py", line 438, in format_command
# pargs.append(Token('%s=%s' % (flag, value), None, flag.lineno))
# AttributeError: 'str' object has no attribute 'lineno'
My script works in 2020 in python 2 fine. I just want know why I can't run this script. Is it something to do with how string are written in python 3? I don't know. Can someone help?
####"""from imp import reload
#####import mel2PymelUI as mel2PymelUI
###reload (mel2PymelUI)
##mel2PymelUI.UI()"""
import sys
import PySide2
from PySide2 import QtGui, QtCore, QtWidgets
from PySide2.QtGui import QIcon, QFont
from PySide2 import QtCore
from PySide2 import QtGui
from PySide2 import QtWidgets
import maya.OpenMayaUI as mui
import pymel.core as pm
import pymel.tools.mel2py as mel2py
import shiboken2
from shiboken2 import wrapInstance
textbox_out = ''
def getMayaWind():
main_window_ptr = mui.MQtUtil.mainWindow()
return wrapInstance(int(main_window_ptr), QtWidgets.QWidget)
def convert(meltext):
try:
pmAnswer = mel2py.mel2pyStr(meltext, pymelNamespace='pm')
# get rid of old all
pmCode = pmAnswer.replace("pymel.all", "pymel.core")
pmCode = pmCode.replace("pm.pm.cmds.", "pm.")
print(pmCode)
global textbox_out
textbox_out.setPlainText(pmCode)
except:
pmCode = '## Error converting ##\n## Check Script Editor for details ##'
textbox_out.setPlainText(pmCode)
raise
return pmCode
def UI():
ui_name = "ui_window"
# check existing
if pm.window(ui_name, exists=True):
pm.deleteUI(ui_name, wnd=True)
# window
ui_parent = getMayaWind()
ui_window = QtWidgets.QMainWindow(ui_parent)
ui_window.setObjectName(ui_name)
ui_window.setFixedWidth(800)
# widget
ui_widget = QtWidgets.QWidget()
ui_window.setCentralWidget(ui_widget)
# layout
ui_layout = QtWidgets.QVBoxLayout(ui_widget)
# create font
ui_font = QtGui.QFont()
ui_font.setPointSize(12)
ui_font.setBold(False)
code_font = QtGui.QFont()
code_font.setFamily("Courier")
code_font.setPointSize(8)
# textbox
textbox_in = QtWidgets.QTextEdit()
textbox_in.resize(480, 280)
textbox_in.setFont(code_font)
ui_layout.addWidget(textbox_in)
# textbox
global textbox_out
textbox_out = QtWidgets.QTextEdit()
textbox_out.resize(480, 280)
textbox_out.setFont(code_font)
ui_layout.addWidget(textbox_out)
# button
ui_button_convert = QtWidgets.QPushButton(" Convert ")
ui_layout.addWidget(ui_button_convert)
ui_button_convert.setFont(ui_font)
ui_button_convert.setStyleSheet("background-color: rgb(33,55,55);")
ui_button_convert.clicked.connect(lambda: convert(textbox_in.toPlainText())
)
ui_window.show()