import os import math import ldmt_function.ldmt_loadUIFile import importlib #importlib.reload(ldmt_function.ldmt_loadUIFile) 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 try: from Qt.QtCore import * from Qt.QtGui import * from Qt.QtWidgets import * # from Qt.QtUiTools import * 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_clothTransfer.ui' # ldmt_list_form, ldmt_list_base = load_ui_type(ldmt_uifile) ldmt_window_name = 'ldmt_clothTransfer' ldmt_button_name = 'btn_'+ldmt_window_name.split('_')[1] ''' #Functions ''' ''' #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.setupUi(self) # self.move(QCursor.pos() + QPoint(20,20)) self.set_ui() # 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_setCloth.clicked.connect(self.setCloth) self.ui.btn_setOrigin.clicked.connect(self.setOrigin) self.ui.btn_setTarget.clicked.connect(self.setTarget) self.ui.btn_selectCloth.clicked.connect(self.selectCloth) self.ui.btn_selectOrigin.clicked.connect(self.selectOrigin) self.ui.btn_selectTarget.clicked.connect(self.selectTarget) self.ui.btn_transfer.clicked.connect(self.transfer) def setCloth(self): sel = cmds.ls(sl=1,o=1) sel = sel[0] if sel != []: self.ui.btn_selectCloth.setText(str(sel)) else: self.ui.btn_selectCloth.setText('...') def setOrigin(self): sel = cmds.ls(sl=1,o=1) sel = sel[0] if sel != []: self.ui.btn_selectOrigin.setText(str(sel)) else: self.ui.btn_selectOrigin.setText('...') def setTarget(self): sel = cmds.ls(sl=1,o=1) sel = sel[0] if sel != []: self.ui.btn_selectTarget.setText(str(sel)) else: self.ui.btn_selectTarget.setText('...') def selectSetObjects(self,sel): if sel != '...': cmds.select(sel,r=1) else: ld.msg('Nothing selected') def selectCloth(self): sel = self.ui.btn_selectCloth.text() self.selectSetObjects(sel) def selectOrigin(self): sel = self.ui.btn_selectOrigin.text() self.selectSetObjects(sel) def selectTarget(self): sel = self.ui.btn_selectTarget.text() self.selectSetObjects(sel) def transfer(self): cloth = self.ui.btn_selectCloth.text() origin = self.ui.btn_selectOrigin.text() target = self.ui.btn_selectTarget.text() cmds.makeIdentity(target,apply=True, t=1, r=1, s=1, n=0) cmds.select(cloth,r=1) cmds.select(origin,add=1) mel.eval('DeleteHistory;') mel.eval('CreateWrap;') blendObjs = [target,origin] blendName = cmds.blendShape(blendObjs,o='world',n='clothTransfer#') cmds.blendShape(blendName,e=1,w=(0,1)) 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()