139 lines
4.7 KiB
Python
139 lines
4.7 KiB
Python
import os
|
|
import math
|
|
from ldmt_function.ldmt_loadUIFile import get_maya_window, load_ui_file
|
|
import maya.OpenMayaUI as omui
|
|
from ldmt_core import ldmt_cmds as ld
|
|
from functools import partial
|
|
import maya.cmds as cmds
|
|
import maya.mel as mel
|
|
from functools import partial
|
|
|
|
try:
|
|
from Qt.QtCore import *
|
|
from Qt.QtGui import *
|
|
from Qt.QtWidgets import *
|
|
# from Qt.QtUiTools import *
|
|
# from Qt.QtCompat import loadUi
|
|
from Qt import __version__
|
|
from Qt.QtCompat import wrapInstance
|
|
except ImportError:
|
|
from Qt.QtCore import *
|
|
from Qt.QtGui import *
|
|
# from Qt.QtUiTools import *
|
|
from Qt import __version__
|
|
from Qt.QtCompat import wrapInstance
|
|
|
|
import maya.OpenMaya as om
|
|
import maya.api.OpenMaya as om2
|
|
import random
|
|
import ast
|
|
|
|
LDMTPATH = ld.getPath('LDMT')
|
|
ldmt_uifile = LDMTPATH + '/ldmt_ui/ldmt_quickExport.ui'
|
|
ldmt_window_name = 'ldmt_quickExport'
|
|
ldmt_button_name = 'btn_'+ldmt_window_name.split('_')[1]
|
|
|
|
'''
|
|
#UI
|
|
'''
|
|
class ldmt_cls(QDialog):
|
|
def __init__(self, parent = get_maya_window()):
|
|
super(ldmt_cls, self).__init__(parent)
|
|
self.window_name = ldmt_window_name
|
|
self.setWindowTitle(ldmt_window_name)
|
|
self.setWindowFlags(Qt.Window)
|
|
self.set_ui()
|
|
# self.setupUi(self)
|
|
self.move(QCursor.pos() + QPoint(20,20))
|
|
# update status bar so it's not only show in help line window.
|
|
self.setupBtn()
|
|
# self.statusbar.showMessage(ld.tag())
|
|
# self.installStartBar()
|
|
|
|
def set_ui(self):
|
|
main_layout = QVBoxLayout(self)
|
|
self.ui = load_ui_file(ldmt_uifile)
|
|
main_layout.addWidget(self.ui)
|
|
|
|
def setupBtn(self):
|
|
self.ui.btn_export.clicked.connect(self.quickExport)
|
|
|
|
def quickExport(self):
|
|
currentFormat = self.ui.box_format.currentText()
|
|
print(currentFormat)
|
|
fullpath = cmds.file(query=1 ,location=1)
|
|
|
|
if fullpath == 'unknown':
|
|
mayaPath = mel.eval('getenv MAYA_LOCATION')
|
|
exportPath = mayaPath+'/bin/'
|
|
else:
|
|
filename = cmds.file(q=1,sn=1,shn=1)
|
|
exportPath = fullpath[:-len(filename)]
|
|
# subprocess.Popen('explorer '+ filepath +'', shell=True)
|
|
sel = cmds.ls(sl=1,o=1)
|
|
exportFolder = exportPath+"models/"
|
|
if not os.path.exists(exportFolder):
|
|
os.mkdir(exportFolder)
|
|
exportName = exportFolder+sel[0].split('|')[-1]
|
|
|
|
if currentFormat == 'OBJ':
|
|
if cmds.pluginInfo("objExport",q=1,l=1) !=1:
|
|
cmds.loadPlugin("objExport",qt=1)
|
|
cmds.file(exportName, force=True, options='groups=1;ptgroups=1;materials=1;smoothing=1;normals=1', type='OBJexport', pr=True, es=True)
|
|
|
|
elif currentFormat == 'FBX':
|
|
if cmds.pluginInfo("fbxmaya",q=1,l=1) !=1:
|
|
cmds.loadPlugin("fbxmaya",qt=1)
|
|
fbxExportName = exportName+".fbx"
|
|
mel.eval('FBXExportScaleFactor 1;')
|
|
mel.eval('FBXExportInAscii -v 1;')
|
|
mel.eval('FBXExportSmoothingGroups -v 1;')
|
|
mel.eval('FBXExportSmoothMesh -v 1;')
|
|
mel.eval('FBXExportTriangulate -v 0;')
|
|
mel.eval('FBXExportUpAxis y;')
|
|
mel.eval('FBXExport -f "'+ fbxExportName +'" -s;')
|
|
|
|
elif currentFormat == 'UE4':
|
|
if cmds.pluginInfo("fbxmaya",q=1,l=1) !=1:
|
|
cmds.loadPlugin("fbxmaya",qt=1)
|
|
fbxExportName = exportName+".fbx"
|
|
mel.eval('FBXExportScaleFactor 1;')
|
|
mel.eval('FBXExportInAscii -v 1;')
|
|
mel.eval('FBXExportSmoothingGroups -v 1;')
|
|
mel.eval('FBXExportSmoothMesh -v 1;')
|
|
mel.eval('FBXExportTriangulate -v 1;')
|
|
mel.eval('FBXExportUpAxis y;')
|
|
mel.eval('FBXExport -f "'+ fbxExportName +'" -s;')
|
|
mel.eval('system("load '+ exportFolder +'");')
|
|
|
|
def installStartBar(self):
|
|
allQWidgets = self.findChildren(QWidget)
|
|
for i in allQWidgets:
|
|
i.installEventFilter(self)
|
|
|
|
def eventFilter(self, obj, event ):
|
|
'''Connect signals on mouse over'''
|
|
if event.type() == QEvent.Enter:
|
|
self.oldMessage = ld.tag()
|
|
self.statusbar.showMessage(' '+obj.statusTip(),0)
|
|
elif event.type() == QEvent.Leave:
|
|
self.statusbar.showMessage(' '+self.oldMessage, 0)
|
|
pass
|
|
event.accept()
|
|
return False
|
|
|
|
# def closeEvent(self,event):
|
|
# ld.turnToolBtnOff(self,ldmt_button_name)
|
|
# cmds.deleteUI(ldmt_window_name)
|
|
|
|
def ldmt_show():
|
|
if cmds.window(ldmt_window_name, exists=True):
|
|
cmds.deleteUI(ldmt_window_name)
|
|
|
|
app = QApplication.instance()
|
|
dialog = ldmt_cls(parent=app.activeWindow())
|
|
dialog.show()
|
|
app.exec_()
|
|
|
|
if __name__ == '__main__':
|
|
ldmt_show() |