Skip to content

Instantly share code, notes, and snippets.

@r4inm4ker
Created August 10, 2019 22:15
Show Gist options
  • Save r4inm4ker/46330f6c7cb07d1759031dab5958cf8e to your computer and use it in GitHub Desktop.
Save r4inm4ker/46330f6c7cb07d1759031dab5958cf8e to your computer and use it in GitHub Desktop.
x ray create cube context UI
from PySide2 import QtWidgets,QtCore, QtGui
import maya.cmds as mc
import maya.mel as mm
import maya.api.OpenMaya as om2
from maya.app.general.mayaMixin import MayaQWidgetDockableMixin
from functools import partial
class UI(MayaQWidgetDockableMixin, QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
super(UI, self).__init__(*args, **kwargs)
self.timer = None
layout = QtWidgets.QVBoxLayout(self)
hl = QtWidgets.QHBoxLayout()
layout.addLayout(hl)
self.refObjField = QtWidgets.QLineEdit()
label = QtWidgets.QLabel("snap mesh: ")
self.setBtn = QtWidgets.QPushButton("<<")
self.xrayOnBtn = QtWidgets.QPushButton("x-ray on")
self.xrayOffBtn = QtWidgets.QPushButton("x-ray off")
hl.addWidget(label)
hl.addWidget(self.refObjField)
hl.addWidget(self.setBtn)
hl.addWidget(self.xrayOnBtn)
hl.addWidget(self.xrayOffBtn)
self.goBtn = QtWidgets.QPushButton("start tool")
layout.addWidget(self.goBtn)
self.setBtn.clicked.connect(self.setRef)
self.goBtn.clicked.connect(self.startTool)
self.xrayOnBtn.clicked.connect(partial(self.xrayToggle,1))
self.xrayOffBtn.clicked.connect(partial(self.xrayToggle, 0))
def xrayToggle(self, val):
snapMesh = self.refObjField.text()
mc.displaySurface(snapMesh, x=val)
def setRef(self):
sel = mc.ls(sl=1)[0]
self.refObjField.setText(sel)
def startTool(self):
snapMesh = self.refObjField.text()
mc.displaySurface(snapMesh, x=1)
mc.setToolTo("CreatePolyCubeCtx")
self.timer = QtCore.QBasicTimer()
self.timer.start(100, self)
def timerEvent(self, event):
currCtx = mm.eval('currentCtx')
if currCtx == 'CreatePolyCubeCtx':
return
snapMesh = self.refObjField.text()
mc.displaySurface(snapMesh, x=0)
self.stopTimer()
def stopTimer(self):
if self.timer:
self.timer.stop()
self.timer = None
ui = UI()
ui.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment