Scripting in Maya using Python
Project: Improve scripting skills through making small tools.
Team: Individual project.
Date: September 2018 - Now.
Tasks: Scripting
Programs: Maya, Qt-Designer
Description: I wanted to improve my non-existing scripting knowledge. So, I decided to start by just making some small tools in Maya that would improve my rigging work flow. I use Qt-Designer to to create the UI and convert it into a python file so I can use it in Maya and connect the functionality I scripted to the UI.
Create Controllers
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def create_connections(self):
self.createctr_btn.clicked.connect(self.control_maker)
self.control_color(0)
self.color_red.clicked.connect(lambda: self.control_color(13))
self.color_blue.clicked.connect(lambda: self.control_color(6))
self.color_yellow.clicked.connect(lambda: self.control_color(17))
self.color_green.clicked.connect(lambda: self.control_color(27))
self.color_lgreen.clicked.connect(lambda: self.control_color(14))
self.color_lblue.clicked.connect(lambda: self.control_color(18))
self.color_brown.clicked.connect(lambda: self.control_color(10))
self.color_purple.clicked.connect(lambda: self.control_color(30))
self.color_pink.clicked.connect(lambda: self.control_color(20))
self.pushButton_2.clicked.connect(self.mirror_control)
self.pushButton.clicked.connect(self.align_control)
def control_color(self, nr):
self.nr = nr
self.color_index = nr
print self.color_index
def control_maker(self):
# Get the name from users input
name = self.lineEdit.text()
# Get the size from users input
size = 1
if self.lineEdit_2.text():
size = float(self.lineEdit_2.text())
color_input = self.color_index
# If user did not select a color the color will be default
normal_input = [0,1,0]
# Gets the users input on the orientation of the color
if self.orient_x.isChecked():
normal_input = [0,1,0]
elif self.orient_y.isChecked():
normal_input = [1,0,0]
elif self.orient_z.isChecked():
normal_input = [0,0,1]
place_input = ""
# Slightly moves the controller to the left or the right or just middle
if self.place_normal.isChecked():
place_input = ""
elif self.place_left.isChecked():
place_input = "L_"
elif self.place_right.isChecked():
place_input = "R_"
# Create and name the controller
circle_control = cmds.circle(n = place_input + name + "_Cntr", nr = normal_input, r = size)
group_circle = cmds.group(n = place_input + name + "_Cntr_Grp")
cmds.setAttr(circle_control[0] + ".overrideEnabled", 1)
cmds.setAttr(circle_control[0] + ".overrideColor", color_input)
def align_control(self):
selected = cmds.ls(sl= True)
for all in selected:
if all != selected[0]:
alin = cmds.parentConstraint(selected[0], all)
cmds.delete(alin)
def selected_object(self):
# Updated the selected parent object window
selected = cmds.ls(sl=True)
print selected
try:
self.textBrowser.setText(selected[0])
except:
pass
def mirror_control(self):
name = self.lineEdit.text()
color_input = self.color_index
# Call color input from button
place_input = ""
# M_ for when no side is selected to get rif of duplicate names
if self.place_normal.isChecked():
place_input = ""
elif self.place_left.isChecked():
place_input = "L_"
elif self.place_right.isChecked():
place_input = "R_"
# Adds L_, R_ or none to the place input which represents the prefix string >> again
list_selected = []
selected = cmds.ls(sl= True)
list_selected.append(selected[0])
temp_grp = cmds.group(em = True)
cmds.parent(selected, temp_grp)
cmds.PickWalkUp()
dub = cmds.duplicate()
# Checks the mirror axis
if self.radioButton.isChecked():
cmds.xform(s = (-1,1,1))
elif self.radioButton_2.isChecked():
cmds.xform(s = (1,-1,1))
elif self.radioButton_3.isChecked():
cmds.xform(s = (1,1,-1))
cmds.PickWalkDown()
cmds.rename(place_input + name + "_Cntr_Grp")
cmds.parent(w=True)
cmds.PickWalkDown()
name = cmds.rename(place_input + name + "_Cntr")
cmds.setAttr(name + ".overrideColor", color_input)
cmds.parent(list_selected, w=True)
cmds.delete(temp_grp)
cmds.delete(dub[0])
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.create_widgets()
self.create_connections()
self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)
self.color_index = 0
#Generated code to create the UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("Controller_Creator", "Controller_Creator", None, -1))
self.label_2.setText(QtWidgets.QApplication.translate("Controller_Creator", "Select a shape:", None, -1))
self.label_3.setText(QtWidgets.QApplication.translate("Controller_Creator", "Size", None, -1))
self.name_controller_label.setText(QtWidgets.QApplication.translate("Controller_Creator", "Name Controller - Prefix + name + _Ctr", None, -1))
self.prefix_grpbox.setTitle(QtWidgets.QApplication.translate("Controller_Creator", "Prefix", None, -1))
self.place_left.setText(QtWidgets.QApplication.translate("Controller_Creator", "L_", None, -1))
self.place_right.setText(QtWidgets.QApplication.translate("Controller_Creator", "R_", None, -1))
self.place_normal.setText(QtWidgets.QApplication.translate("Controller_Creator", "None", None, -1))
self.custom_collor_label.setText(QtWidgets.QApplication.translate("Controller_Creator", "Color", None, -1))
self.color_pink.setText(QtWidgets.QApplication.translate("Controller_Creator", "Pink", None, -1))
self.color_yellow.setText(QtWidgets.QApplication.translate("Controller_Creator", "Yellow", None, -1))
self.color_lblue.setText(QtWidgets.QApplication.translate("Controller_Creator", "Light Blue", None, -1))
self.color_green.setText(QtWidgets.QApplication.translate("Controller_Creator", "Green", None, -1))
self.color_lgreen.setText(QtWidgets.QApplication.translate("Controller_Creator", "Light Green", None, -1))
self.color_purple.setText(QtWidgets.QApplication.translate("Controller_Creator", "Purple", None, -1))
self.color_brown.setText(QtWidgets.QApplication.translate("Controller_Creator", "Brown", None, -1))
self.color_blue.setText(QtWidgets.QApplication.translate("Controller_Creator", "Blue", None, -1))
self.color_red.setText(QtWidgets.QApplication.translate("Controller_Creator", "Red", None, -1))
self.controller_orient_grpbox.setTitle(QtWidgets.QApplication.translate("Controller_Creator", "Controller Orientation - Only valid for Create", None, -1))
self.orient_x.setText(QtWidgets.QApplication.translate("Controller_Creator", "X", None, -1))
self.orient_y.setText(QtWidgets.QApplication.translate("Controller_Creator", "Y", None, -1))
self.orient_z.setText(QtWidgets.QApplication.translate("Controller_Creator", "Z", None, -1))
self.createctr_btn.setText(QtWidgets.QApplication.translate("Controller_Creator", "Create Controller", None, -1))
self.groupBox.setTitle(QtWidgets.QApplication.translate("Controller_Creator", "Mirror Axis - Only valid for mirror", None, -1))
self.radioButton.setText(QtWidgets.QApplication.translate("Controller_Creator", "X", None, -1))
self.radioButton_2.setText(QtWidgets.QApplication.translate("Controller_Creator", "Y", None, -1))
self.radioButton_3.setText(QtWidgets.QApplication.translate("Controller_Creator", "Z", None, -1))
self.pushButton_2.setText(QtWidgets.QApplication.translate("Controller_Creator", "Mirror", None, -1))
self.label.setText(QtWidgets.QApplication.translate("Controller_Creator", "Select Alignment Object than controller(s)", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("Controller_Creator", "Align", None, -1))
def create_widgets(self):
self.setObjectName("Controller_Creator")
self.resize(510, 626)
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 491, 591))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_2.setMinimumSize(QtCore.QSize(0, 15))
self.label_2.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_2.setObjectName("label_2")
self.verticalLayout.addWidget(self.label_2)
self.controller_shape = QtWidgets.QComboBox(self.verticalLayoutWidget)
self.controller_shape.addItem("Circle")
self.controller_shape.setEditable(False)
self.controller_shape.setObjectName("controller_shape")
self.verticalLayout.addWidget(self.controller_shape)
self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_3.setMinimumSize(QtCore.QSize(0, 15))
self.label_3.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_3.setObjectName("label_3")
self.verticalLayout.addWidget(self.label_3)
self.lineEdit_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineEdit_2.setMinimumSize(QtCore.QSize(0, 20))
self.lineEdit_2.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineEdit_2.setObjectName("lineEdit_2")
self.verticalLayout.addWidget(self.lineEdit_2)
self.name_controller_label = QtWidgets.QLabel(self.verticalLayoutWidget)
self.name_controller_label.setMinimumSize(QtCore.QSize(0, 10))
self.name_controller_label.setMaximumSize(QtCore.QSize(16777215, 15))
self.name_controller_label.setObjectName("name_controller_label")
self.verticalLayout.addWidget(self.name_controller_label)
self.lineEdit = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineEdit.setMinimumSize(QtCore.QSize(0, 20))
self.lineEdit.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.line = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line.setMaximumSize(QtCore.QSize(16777215, 3))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.verticalLayout.addWidget(self.line)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.prefix_grpbox = QtWidgets.QGroupBox(self.verticalLayoutWidget)
self.prefix_grpbox.setMinimumSize(QtCore.QSize(0, 45))
self.prefix_grpbox.setMaximumSize(QtCore.QSize(16777215, 50))
self.prefix_grpbox.setObjectName("prefix_grpbox")
self.place_left = QtWidgets.QRadioButton(self.prefix_grpbox)
self.place_left.setGeometry(QtCore.QRect(0, 20, 175, 20))
self.place_left.setMaximumSize(QtCore.QSize(16777215, 20))
self.place_left.setObjectName("place_left")
self.place_right = QtWidgets.QRadioButton(self.prefix_grpbox)
self.place_right.setGeometry(QtCore.QRect(60, 20, 537, 20))
self.place_right.setMaximumSize(QtCore.QSize(16777215, 20))
self.place_right.setObjectName("place_right")
self.place_normal = QtWidgets.QRadioButton(self.prefix_grpbox)
self.place_normal.setGeometry(QtCore.QRect(120, 20, 266, 20))
self.place_normal.setMaximumSize(QtCore.QSize(16777215, 20))
self.place_normal.setChecked(True)
self.place_normal.setObjectName("place_normal")
self.horizontalLayout.addWidget(self.prefix_grpbox)
self.verticalLayout.addLayout(self.horizontalLayout)
self.line_2 = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line_2.setMinimumSize(QtCore.QSize(0, 2))
self.line_2.setMaximumSize(QtCore.QSize(16777215, 3))
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.verticalLayout.addWidget(self.line_2)
self.custom_collor_label = QtWidgets.QLabel(self.verticalLayoutWidget)
self.custom_collor_label.setMinimumSize(QtCore.QSize(0, 14))
self.custom_collor_label.setMaximumSize(QtCore.QSize(16777215, 15))
self.custom_collor_label.setObjectName("custom_collor_label")
self.verticalLayout.addWidget(self.custom_collor_label)
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.color_pink = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 170, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 170, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 170, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_pink.setPalette(palette)
self.color_pink.setAutoFillBackground(True)
self.color_pink.setFlat(True)
self.color_pink.setObjectName("color_pink")
self.gridLayout.addWidget(self.color_pink, 1, 0, 1, 1)
self.color_yellow = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_yellow.setPalette(palette)
self.color_yellow.setAutoFillBackground(True)
self.color_yellow.setFlat(True)
self.color_yellow.setObjectName("color_yellow")
self.gridLayout.addWidget(self.color_yellow, 0, 2, 1, 1)
self.color_lblue = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_lblue.setPalette(palette)
self.color_lblue.setAutoFillBackground(True)
self.color_lblue.setFlat(True)
self.color_lblue.setObjectName("color_lblue")
self.gridLayout.addWidget(self.color_lblue, 1, 1, 1, 1)
self.color_green = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 170, 127))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 170, 127))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 170, 127))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_green.setPalette(palette)
self.color_green.setAutoFillBackground(True)
self.color_green.setFlat(True)
self.color_green.setObjectName("color_green")
self.gridLayout.addWidget(self.color_green, 2, 1, 1, 1)
self.color_lgreen = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_lgreen.setPalette(palette)
self.color_lgreen.setAutoFillBackground(True)
self.color_lgreen.setFlat(True)
self.color_lgreen.setObjectName("color_lgreen")
self.gridLayout.addWidget(self.color_lgreen, 2, 2, 1, 1)
self.color_purple = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 85, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 85, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 85, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_purple.setPalette(palette)
self.color_purple.setAutoFillBackground(True)
self.color_purple.setFlat(True)
self.color_purple.setObjectName("color_purple")
self.gridLayout.addWidget(self.color_purple, 2, 0, 1, 1)
self.color_brown = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(170, 85, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(170, 85, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(170, 85, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_brown.setPalette(palette)
self.color_brown.setAutoFillBackground(True)
self.color_brown.setFlat(True)
self.color_brown.setObjectName("color_brown")
self.gridLayout.addWidget(self.color_brown, 1, 2, 1, 1)
self.color_blue = QtWidgets.QPushButton(self.verticalLayoutWidget)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(49, 49, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(49, 49, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(49, 49, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_blue.setPalette(palette)
self.color_blue.setAutoFillBackground(True)
self.color_blue.setDefault(False)
self.color_blue.setFlat(True)
self.color_blue.setObjectName("color_blue")
self.gridLayout.addWidget(self.color_blue, 0, 1, 1, 1)
self.color_red = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.color_red.setEnabled(True)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(240, 0, 4))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(240, 0, 4))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(240, 0, 4))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
self.color_red.setPalette(palette)
self.color_red.setAutoFillBackground(True)
self.color_red.setCheckable(False)
self.color_red.setFlat(True)
self.color_red.setObjectName("color_red")
self.gridLayout.addWidget(self.color_red, 0, 0, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.line_3 = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line_3.setMinimumSize(QtCore.QSize(0, 2))
self.line_3.setMaximumSize(QtCore.QSize(16777215, 3))
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.verticalLayout.addWidget(self.line_3)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.controller_orient_grpbox = QtWidgets.QGroupBox(self.verticalLayoutWidget)
self.controller_orient_grpbox.setMinimumSize(QtCore.QSize(0, 45))
self.controller_orient_grpbox.setMaximumSize(QtCore.QSize(16777215, 50))
self.controller_orient_grpbox.setCheckable(False)
self.controller_orient_grpbox.setObjectName("controller_orient_grpbox")
self.orient_x = QtWidgets.QRadioButton(self.controller_orient_grpbox)
self.orient_x.setGeometry(QtCore.QRect(10, 20, 50, 20))
self.orient_x.setMinimumSize(QtCore.QSize(50, 18))
self.orient_x.setMaximumSize(QtCore.QSize(75, 20))
self.orient_x.setObjectName("orient_x")
self.orient_y = QtWidgets.QRadioButton(self.controller_orient_grpbox)
self.orient_y.setGeometry(QtCore.QRect(60, 20, 50, 20))
self.orient_y.setMinimumSize(QtCore.QSize(50, 18))
self.orient_y.setMaximumSize(QtCore.QSize(75, 20))
self.orient_x.setChecked(True)
self.orient_y.setObjectName("orient_y")
self.orient_z = QtWidgets.QRadioButton(self.controller_orient_grpbox)
self.orient_z.setGeometry(QtCore.QRect(110, 20, 50, 20))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.orient_z.sizePolicy().hasHeightForWidth())
self.orient_z.setSizePolicy(sizePolicy)
self.orient_z.setMinimumSize(QtCore.QSize(50, 18))
self.orient_z.setMaximumSize(QtCore.QSize(75, 20))
self.orient_z.setChecked(False)
self.orient_z.setObjectName("orient_z")
self.horizontalLayout_3.addWidget(self.controller_orient_grpbox)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.groupBox = QtWidgets.QGroupBox(self.verticalLayoutWidget)
self.groupBox.setMinimumSize(QtCore.QSize(0, 45))
self.groupBox.setMaximumSize(QtCore.QSize(16777215, 65))
self.createctr_btn = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.createctr_btn.setObjectName("createctr_btn")
self.verticalLayout.addWidget(self.createctr_btn)
self.pushButton_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.groupBox.setObjectName("groupBox")
self.radioButton = QtWidgets.QRadioButton(self.groupBox)
self.radioButton.setGeometry(QtCore.QRect(10, 20, 75, 18))
self.radioButton.setMinimumSize(QtCore.QSize(50, 18))
self.radioButton.setMaximumSize(QtCore.QSize(75, 20))
self.radioButton.setChecked(True)
self.radioButton.setObjectName("radioButton")
self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox)
self.radioButton_2.setGeometry(QtCore.QRect(70, 20, 75, 18))
self.radioButton_2.setMinimumSize(QtCore.QSize(50, 18))
self.radioButton_2.setMaximumSize(QtCore.QSize(75, 20))
self.radioButton_2.setObjectName("radioButton_2")
self.radioButton_3 = QtWidgets.QRadioButton(self.groupBox)
self.radioButton_3.setGeometry(QtCore.QRect(120, 20, 50, 18))
self.radioButton_3.setMinimumSize(QtCore.QSize(50, 18))
self.radioButton_3.setMaximumSize(QtCore.QSize(75, 20))
self.radioButton_3.setObjectName("radioButton_3")
self.verticalLayout.addWidget(self.groupBox)
self.pushButton_2.setObjectName("pushButton_2")
self.verticalLayout.addWidget(self.pushButton_2)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label.setMinimumSize(QtCore.QSize(0, 20))
self.label.setMaximumSize(QtCore.QSize(16777215, 20))
self.label.setObjectName("label")
self.verticalLayout_2.addWidget(self.label)
self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton.setMinimumSize(QtCore.QSize(0, 24))
self.pushButton.setMaximumSize(QtCore.QSize(16777215, 26))
self.pushButton.setObjectName("pushButton")
self.verticalLayout_2.addWidget(self.pushButton)
self.verticalLayout.addLayout(self.verticalLayout_2)
try:
Dialog.close()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Change color of specified controllers
#Small UI element to help change the color of objects/controllers
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
#Set the variable for selected controllers as a kind of global variable outside of the other functions
self.selected_objects = []
#Call the slider function once to set the initial color of the UI element
self.color_change()
def create_connections(self):
self.horizontalSlider.valueChanged.connect(self.color_change)
self.pushButton.clicked.connect(self.selected_cntr)
self.pushButton_2.clicked.connect(self.no_cntr)
def selected_cntr(self):
selected = cmds.ls(sl = True)
for i in selected:
#Add selected controllers to the selected objects list
self.selected_objects.append(i)
def no_cntr(self):
#Clear the entire objects list
self.selected_objects = None
def color_change(self):
#Begin by setting brush to the default blue color
brush = (44,41,112)
index = 5
#Set the UI item to the correct color and set the index to the corresponding number
if self.horizontalSlider.value() == 0:
brush = QtGui.QBrush(QtGui.QColor(44, 41, 112))
index = 5
elif self.horizontalSlider.value() == 1:
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
index = 13
elif self.horizontalSlider.value() == 2:
brush = QtGui.QBrush(QtGui.QColor(0, 0, 255))
index = 6
elif self.horizontalSlider.value() == 3:
brush = QtGui.QBrush(QtGui.QColor(237, 235, 36))
index = 17
elif self.horizontalSlider.value() == 4:
brush = QtGui.QBrush(QtGui.QColor(71, 83, 181))
index = 15
elif self.horizontalSlider.value() == 5:
brush = QtGui.QBrush(QtGui.QColor(148, 50, 49))
index = 4
elif self.horizontalSlider.value() == 6:
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
index = 14
#The set palletis outside the create UI function so it can be edited live
palette = QtGui.QPalette()
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
self.graphicsView.setPalette(palette)
#Check wheter there are controllers in the selected list or go for currently selected objects
num = 0
items = None
if self.selected_objects != None:
items = self.selected_objects
elif self.selected_objects == None:
items = cmds.ls(sl=True)
#Change the color of the controller
for i in items:
cmds.setAttr( items[num] + ".overrideEnabled", 1)
cmds.setAttr(items[num] + ".overrideColor", index)
num += 1
#Generated code to create the UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("Colorchange", "Color Change", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("Colorchange", "Select Controllers / Add controllers to selection", None, -1))
self.pushButton_2.setText(QtWidgets.QApplication.translate("Colorchange", "Deselect Controllers", None, -1))
def create_widgets(self):
self.setObjectName("Colorchange")
self.resize(499, 120)
self.setMaximumSize(500, 125)
self.setMinimumSize(415, 50)
self.gridLayoutWidget = QtWidgets.QWidget(self)
self.gridLayoutWidget.setGeometry(QtCore.QRect(19, 10, 461, 87))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.graphicsView = QtWidgets.QGraphicsView(self.gridLayoutWidget)
self.graphicsView.setMaximumSize(QtCore.QSize(75, 20))
self.graphicsView.setAutoFillBackground(True)
self.graphicsView.setFrameShadow(QtWidgets.QFrame.Plain)
self.graphicsView.setObjectName("graphicsView")
self.gridLayout.addWidget(self.graphicsView, 2, 1, 1, 1)
self.horizontalSlider = QtWidgets.QSlider(self.gridLayoutWidget)
self.horizontalSlider.setAutoFillBackground(False)
self.horizontalSlider.setMaximum(6)
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.horizontalSlider.setObjectName("horizontalSlider")
self.gridLayout.addWidget(self.horizontalSlider, 2, 0, 1, 1)
self.pushButton = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
self.pushButton_2 = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.gridLayout.addWidget(self.pushButton_2, 1, 0, 1, 1)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Create null group on top of a controller
import maya.cmds as cmds
orin = cmds.ls(sl=True)
if orin != None:
#Seperate commands for trans, rot ans scale (Can't be done in one).
trans = cmds.xform(orin, q=True, t= True, ws=True)
rot = cmds.xform(orin, q=True, ro= True, ws=True)
scale = cmds.xform(orin, q=True, s= True, ws=True)
#Move controller to 0,0,0
cmds.xform(selected[0], ws = True, t = [0,0,0], ro = [0,0,0], s=[1,1,1])
#group the zeroed out controller and move to stored origonal position
group = cmds.group(selected, n=selected[0] + "_NullGrp")
cmds.xform(group, ws = True, t = [trans[0], trans[1], trans[2]], ro = [rot[0], rot[1], rot[2]], s = [scale[0], scale[1], scale[2]])
elif orin == None:
print "You need to select a controller."
...
Blend between Two joint chains
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)
def create_connections(self):
self.pushbutton_select_chain1_2.clicked.connect(self.select_chain1)
self.pushbutton_select_chain1.clicked.connect(self.select_chain2)
self.pushbutton_select_chainchild.clicked.connect(self.select_chainchild)
self.pushbutton_select_all.clicked.connect(self.select_all)
self.pushbutton_select_all.clicked.connect(self.select_all)
self.pushbutton_controller.clicked.connect(self.select_controller)
self.pushbutton_create.clicked.connect(self.blend_joints)
def select_chain1(self):
selected = cmds.ls(sl=True)
self.lineedit_chain1.setText(selected[0])
def select_chain2(self):
selected = cmds.ls(sl=True)
self.lineedit_chain2.setText(selected[0])
def select_chainchild(self):
selected = cmds.ls(sl=True)
self.lineedit_chainchild.setText(selected[0])
def select_all(self):
selected = cmds.ls(sl=True)
self.lineedit_chain1.setText(selected[0])
self.lineedit_chain2.setText(selected[1])
self.lineedit_chainchild.setText(selected[2])
def select_controller(self):
selected = cmds.ls(sl=True)
self.lineedit_controller.setText(selected[0])
def blend_joints(self):
chain_01 = self.lineedit_chain1.text()
chain_02 = self.lineedit_chain2.text()
child_chain = self.lineedit_chainchild.text()
controller = self.lineedit_controller.text()
name_attr = self.lineedit_attrname.text()
if self.lineedit_chain1.text() and self.lineedit_chain2.text() and self.lineedit_chainchild.text() and self.lineedit_controller.text() and self.lineedit_controller.text():
#Get all the joints in the hierarchy
cmds.select(chain_01, hi=True)
selected_01 = cmds.ls(sl=True)
cmds.select(chain_02, hi=True)
selected_02 = cmds.ls(sl=True)
cmds.select(child_chain, hi=True)
selected_child = cmds.ls(sl=True)
name_nr = 0
#Create attribute for blend
cmds.addAttr(controller, ln=name_attr, at = 'float', min=0, max=1, dv=0.5, k=True)
for i in range(len(selected_01)):
#Create blend node
blend_node = cmds.shadingNode('blendColors', au = True, n = "BC_" + selected_child[name_nr])
#Connect parent joint chains to blend and blend to child joint chain
cmds.connectAttr(selected_01[name_nr] + ".rotate", blend_node + ".color1")
cmds.connectAttr(selected_02[name_nr] + ".rotate", blend_node + ".color2")
cmds.connectAttr(blend_node + ".output", selected_child[name_nr] + ".rotate")
cmds.connectAttr(controller + "." + name_attr, blend_node + ".blender")
name_nr +=1
else:
print "You didn't fill in all the required fields"
#Generated code for the UI from Q_Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("BlendJointChains", "Blend Joints setup", None, -1))
self.lineedit_controller.setPlaceholderText(QtWidgets.QApplication.translate("BlendJointChains", "Controller to add blend attribute to", None, -1))
self.label_chain1.setText(QtWidgets.QApplication.translate("BlendJointChains", "Joint chain 1", None, -1))
self.pushbutton_select_chain1_2.setText(QtWidgets.QApplication.translate("BlendJointChains", "select", None, -1))
self.pushbutton_select_chain1.setText(QtWidgets.QApplication.translate("BlendJointChains", "select", None, -1))
self.label_chainchild.setText(QtWidgets.QApplication.translate("BlendJointChains", "Child joint chain", None, -1))
self.label_chain2.setText(QtWidgets.QApplication.translate("BlendJointChains", "Joint chain 2", None, -1))
self.pushbutton_select_chainchild.setText(QtWidgets.QApplication.translate("BlendJointChains", "select", None, -1))
self.pushbutton_controller.setText(QtWidgets.QApplication.translate("BlendJointChains", "select", None, -1))
self.label_controller.setText(QtWidgets.QApplication.translate("BlendJointChains", "Controller", None, -1))
self.pushbutton_select_all.setText(QtWidgets.QApplication.translate("BlendJointChains", "Select all", None, -1))
self.lineedit_attrname.setText(QtWidgets.QApplication.translate("BlendJointChains", "Blend", None, -1))
self.label_attrname.setText(QtWidgets.QApplication.translate("BlendJointChains", "Attribute name ", None, -1))
self.pushbutton_create.setText(QtWidgets.QApplication.translate("BlendJointChains", "Create", None, -1))
def create_widgets(self):
self.setObjectName("BlendJointChains")
self.resize(408, 253)
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 391, 236))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(10, 10, 10, 10)
self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setContentsMargins(10, 10, 10, 10)
self.gridLayout.setObjectName("gridLayout")
self.lineedit_controller = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineedit_controller.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_controller.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_controller.setObjectName("lineedit_controller")
self.gridLayout.addWidget(self.lineedit_controller, 5, 1, 1, 1)
self.label_chain1 = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_chain1.setMinimumSize(QtCore.QSize(0, 20))
self.label_chain1.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_chain1.setObjectName("label_chain1")
self.gridLayout.addWidget(self.label_chain1, 0, 0, 1, 1)
self.pushbutton_select_chain1_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushbutton_select_chain1_2.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_select_chain1_2.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_select_chain1_2.setObjectName("pushbutton_select_chain1_2")
self.gridLayout.addWidget(self.pushbutton_select_chain1_2, 0, 2, 1, 1)
self.lineedit_chain1 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineedit_chain1.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_chain1.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_chain1.setObjectName("lineedit_chain1")
self.gridLayout.addWidget(self.lineedit_chain1, 0, 1, 1, 1)
self.lineedit_chain2 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineedit_chain2.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_chain2.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_chain2.setObjectName("lineedit_chain2")
self.gridLayout.addWidget(self.lineedit_chain2, 1, 1, 1, 1)
self.pushbutton_select_chain1 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushbutton_select_chain1.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_select_chain1.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_select_chain1.setObjectName("pushbutton_select_chain1")
self.gridLayout.addWidget(self.pushbutton_select_chain1, 1, 2, 1, 1)
self.lineedit_chainchild = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineedit_chainchild.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_chainchild.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_chainchild.setObjectName("lineedit_chainchild")
self.gridLayout.addWidget(self.lineedit_chainchild, 2, 1, 1, 1)
self.label_chainchild = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_chainchild.setMinimumSize(QtCore.QSize(0, 20))
self.label_chainchild.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_chainchild.setObjectName("label_chainchild")
self.gridLayout.addWidget(self.label_chainchild, 2, 0, 1, 1)
self.label_chain2 = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_chain2.setMinimumSize(QtCore.QSize(0, 20))
self.label_chain2.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_chain2.setObjectName("label_chain2")
self.gridLayout.addWidget(self.label_chain2, 1, 0, 1, 1)
self.pushbutton_select_chainchild = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushbutton_select_chainchild.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_select_chainchild.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_select_chainchild.setObjectName("pushbutton_select_chainchild")
self.gridLayout.addWidget(self.pushbutton_select_chainchild, 2, 2, 1, 1)
self.pushbutton_controller = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushbutton_controller.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_controller.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_controller.setObjectName("pushbutton_controller")
self.gridLayout.addWidget(self.pushbutton_controller, 5, 2, 1, 1)
self.label_controller = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_controller.setMinimumSize(QtCore.QSize(0, 20))
self.label_controller.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_controller.setObjectName("label_controller")
self.gridLayout.addWidget(self.label_controller, 5, 0, 1, 1)
self.pushbutton_select_all = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushbutton_select_all.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_select_all.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_select_all.setObjectName("pushbutton_select_all")
self.gridLayout.addWidget(self.pushbutton_select_all, 3, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 10, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 4, 0, 1, 3)
self.lineedit_attrname = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.lineedit_attrname.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_attrname.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_attrname.setObjectName("lineedit_attrname")
self.gridLayout.addWidget(self.lineedit_attrname, 6, 1, 1, 1)
self.label_attrname = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label_attrname.setMinimumSize(QtCore.QSize(0, 20))
self.label_attrname.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_attrname.setObjectName("label_attrname")
self.gridLayout.addWidget(self.label_attrname, 6, 0, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.pushbutton_create = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushbutton_create.setMinimumSize(QtCore.QSize(0, 24))
self.pushbutton_create.setMaximumSize(QtCore.QSize(16777215, 26))
self.pushbutton_create.setObjectName("pushbutton_create")
self.verticalLayout.addWidget(self.pushbutton_create)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Forces Local Axis visibility On or Off (in a hierarchy)
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)
def create_connections(self):
self.pushButton_1.clicked.connect(self.visibility_on)
self.pushButton_2.clicked.connect(self.visibility_off)
def visibility_on(self):
cmds.select( hi=True)
selection = cmds.ls(sl=True)
for i in selection:
cmds.setAttr(i + ".displayLocalAxis", 1)
def visibility_off(self):
cmds.select( hi=True)
selection = cmds.ls(sl=True)
for i in selection:
cmds.setAttr(i + ".displayLocalAxis", 0)
#Generated code for the UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("LocalAxisVisibility", "Local Rotation Visibility", None, -1))
self.label.setText(QtWidgets.QApplication.translate("LocalAxisVisibility", "Local Rotation axis visibility", None, -1))
self.pushButton_1.setText(QtWidgets.QApplication.translate("LocalAxisVisibility", "Visible", None, -1))
self.pushButton_2.setText(QtWidgets.QApplication.translate("LocalAxisVisibility", "Hide", None, -1))
def create_widgets(self):
self.setObjectName("LocalAxisVisibility")
self.resize(200, 144)
self.setMaximumSize(205, 149)
self.setMinimumWidth(205)
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 180, 121))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
self.label.setMaximumSize(QtCore.QSize(16777215, 20))
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.pushButton_1 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_1.setObjectName("pushButton_01")
self.verticalLayout.addWidget(self.pushButton_1)
self.pushButton_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.verticalLayout.addWidget(self.pushButton_2)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Automates setting up a no flip leg
#Automates setting up a reverse foot
#Makes sure the minimum amount of items needed is selected and will tell you if not
#Also only creates those items if they are not already present
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
#Set some variables that are needed later
self.noflip_ik = None
self.leg_ik = None
self.final_leg_pv = None
self.final_noflip_pv = None
self.flipknee = None
def create_connections(self):
self.pb_select_hipjoint.clicked.connect(self.select_hip)
self.pb_select_kneejoint.clicked.connect(self.select_knee)
self.pb_select_anklejoint.clicked.connect(self.select_ankle)
self.pb_select_all.clicked.connect(self.select_all)
self.pb_select_footcnt.clicked.connect(self.select_foot)
self.pb_select_legik.clicked.connect(self.select_legik)
self.pb_altertwist.clicked.connect(self.alter_twist)
self.pb_createloc.clicked.connect(self.create_pv)
self.pb_deleteloc.clicked.connect(self.delete_pv)
self.pb_create_noflip.clicked.connect(self.create_noflip_ik)
self.pb_finish.clicked.connect(self.create_noflipleg)
def select_hip(self):
selected = cmds.ls(sl=True)
self.le_hipjoint.setText(selected[0])
def select_knee(self):
selected = cmds.ls(sl=True)
self.le_kneejoint.setText(selected[0])
def select_ankle(self):
selected = cmds.ls(sl=True)
self.le_anklejoint.setText(selected[0])
def select_all(self):
selected = cmds.ls(sl=True)
self.le_hipjoint.setText(selected[0])
self.le_kneejoint.setText(selected[1])
self.le_anklejoint.setText(selected[2])
def select_foot(self):
selected = cmds.ls(sl=True)
self.le_footcntr.setText(selected[0])
def select_legik(self):
selected = cmds.ls(sl=True)
self.leg_ik = self.le_legik.setText(selected[0])
def create_pv(self):
#User inputs
namehip = self.le_hipjoint.text()
nameknee = self.le_kneejoint.text()
nameankle = self.le_anklejoint.text()
#Create PV locators
#Check if they aren't already in the scene
try:
cmds.select("NoFlip_PV_Locator_Only_Move_Outwards")
heel_locator = cmds.ls(sl=True)
print "You already have a NoFlip_PV_Locator created!"
except:
noflip_loc = cmds.spaceLocator(n='NoFlip_PV_Locator_Only_Move_Outwards')
alin = cmds.parentConstraint(nameankle, noflip_loc)
cmds.delete(alin)
try:
cmds.select("IKLeg_PV_Locator_Dont_move_sideways")
heel_locator = cmds.ls(sl=True)
print "You already have a IKLeg_PV_Locator created!"
except:
ikleg_loc = cmds.spaceLocator(n="IKLeg_PV_Locator_Dont_move_sideways")
alin = cmds.parentConstraint(nameknee, ikleg_loc)
cmds.delete(alin)
def delete_pv(self):
#Delete the placement locators (If they are there
try:
cmds.delete("IKLeg_PV_Locator_Dont_move_sideways")
except:
print "IKLeg_PV_Locator_Dont_move_sideways is already deleted!"
try:
cmds.delete("NoFlip_PV_Locator_Only_Move_Outwards")
except:
print "NoFlip_PV_Locator_Only_Move_Outwards is already deleted!"
def create_noflip_ik(self):
namehip = self.le_hipjoint.text()
nameknee = self.le_kneejoint.text()
nameankle = self.le_anklejoint.text()
foot_cntr = self.le_footcntr.text()
old = self.le_oldname.text()
#get the lenght so the last part of the name can be inserted after the part that will be changed
oldlen = len(old)
side = ""
if self.rb_None.isChecked():
side = ""
elif self.rb_L.isChecked():
side = "L_"
elif self.rb_R.isChecked():
side = "R_"
cmds.select(None)
#Create the actual pv_locators in case they got moved in a wrong plane
final_noflip_pv = cmds.spaceLocator(n=side + "NoFlip_PV")
noflip_pv_grp = cmds.group(final_noflip_pv, n = side + "NoFlip_PV_NullGrp")
noflip_alin = cmds.parentConstraint("NoFlip_PV_Locator_Only_Move_Outwards", noflip_pv_grp)
cmds.delete(noflip_alin)
cmds.parent(noflip_pv_grp, foot_cntr)
final_leg_pv = cmds.spaceLocator(n=side + "Leg_PV")
leg_pv_grp = cmds.group(final_leg_pv, n = side + "Leg_PV_NullGrp")
leg_alin = cmds.parentConstraint("IKLeg_PV_Locator_Dont_move_sideways", leg_pv_grp)
cmds.delete(leg_alin)
#Create the duplicate joint chain and name correspondingly and create IK
#Find the index of the to be replaced userdefined string
hipindex = namehip.index(old)
kneeindex = nameknee.index(old)
ankleindex = nameankle.index(old)
#Duplicate them seperately so they can be renamed easier
fliphip = cmds.duplicate(namehip, po=True)
fliphip = cmds.rename(fliphip, namehip[:hipindex] + "NoFlip" + namehip[(hipindex+oldlen):])
flipknee = cmds.duplicate(nameknee, po=True)
flipknee = cmds.rename(flipknee, nameknee[:kneeindex] + "NoFlip" + nameknee[(kneeindex+oldlen):])
flipankle = cmds.duplicate(nameankle, po=True)
flipankle = cmds.rename(flipankle, nameankle[:ankleindex] + "NoFlip" + nameankle[(ankleindex+oldlen):])
#Parent the no flip chain to the world so the user can parent it correctly manually
if cmds.listRelatives(namehip, p=True) == None:
pass
else:
cmds.parent(fliphip, w=True)
#Parent the knee and ankle joint
cmds.parent(flipknee, fliphip)
cmds.parent(flipankle, flipknee)
if self.leg_ik != None:
leg_ik = self.le_legik.text()
else:
leg_ik = cmds.ikHandle(sj = namehip, ee = nameankle, sol = "ikRPsolver", n=side + 'Leg_IKHndl')
cmds.parent(leg_ik[0], foot_cntr)
noflip_ik = cmds.ikHandle(sj = fliphip, ee = flipankle, sol = "ikRPsolver", n=side + 'NoFlip_IKHndl')
cmds.parent(noflip_ik[0], foot_cntr)
cmds.poleVectorConstraint(final_noflip_pv, noflip_ik[0])
cmds.setAttr(noflip_ik[0] + ".twist", 90)
self.noflip_ik = noflip_ik
self.leg_ik = leg_ik
self.final_leg_pv = final_leg_pv
self.flipknee =flipknee
def alter_twist(self):
#Alter the twist value
new_value = self.le_twist.text()
print self.noflip_ik[0]
cmds.setAttr(self.noflip_ik[0] + ".twist", int(new_value))
def create_noflipleg(self):
#Finalize the set-up
cmds.parentConstraint(self.flipknee, self.final_leg_pv, mo=True)
cmds.poleVectorConstraint(self.final_leg_pv, self.leg_ik[0])
#Generated code for UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("NoFlip_Leg", "NoFlip Leg", None, -1))
self.l_hipjoint.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Hip Joint", None, -1))
self.pb_select_all.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "select all", None, -1))
self.pb_select_anklejoint.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "select", None, -1))
self.pb_select_hipjoint.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "select", None, -1))
self.l_anklejoint.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Ankle Joint", None, -1))
self.pb_select_kneejoint.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "select", None, -1))
self.pb_select_footcnt.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "select", None, -1))
self.l_kneejoint.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Knee Joint", None, -1))
self.le_legik.setPlaceholderText(QtWidgets.QApplication.translate("NoFlip_Leg", "Only if leg IK is already present", None, -1))
self.l_legik.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Leg IK", None, -1))
self.l_footcntr.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Foot contr", None, -1))
self.pb_select_legik.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "select", None, -1))
self.le_oldname.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "IK", None, -1))
self.l_replacename.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Part of name you want to replace with NoFlip", None, -1))
self.groupBox.setTitle(QtWidgets.QApplication.translate("NoFlip_Leg", "Prefix", None, -1))
self.rb_None.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "None", None, -1))
self.rb_L.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "L", None, -1))
self.rb_R.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "R", None, -1))
self.pb_createloc.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Create Pole Vector placement Locators", None, -1))
self.pb_deleteloc.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Delete Pole Vector placement Locators", None, -1))
self.pb_create_noflip.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Create NoFlip IK", None, -1))
self.l_twist.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Twist", None, -1))
self.pb_altertwist.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Alter", None, -1))
self.pb_finish.setText(QtWidgets.QApplication.translate("NoFlip_Leg", "Finish No Flip Leg", None, -1))
def create_widgets(self):
self.setObjectName("NoFlip_Leg")
self.resize(348, 511)
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 331, 491))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setSpacing(10)
self.verticalLayout.setContentsMargins(5, 10, 5, 10)
self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout_2 = QtWidgets.QGridLayout()
self.gridLayout_2.setContentsMargins(-1, 5, -1, 5)
self.gridLayout_2.setVerticalSpacing(10)
self.gridLayout_2.setObjectName("gridLayout_2")
self.l_hipjoint = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_hipjoint.setMinimumSize(QtCore.QSize(0, 20))
self.l_hipjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_hipjoint.setObjectName("l_hipjoint")
self.gridLayout_2.addWidget(self.l_hipjoint, 0, 0, 1, 1)
self.pb_select_all = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_all.setMinimumSize(QtCore.QSize(0, 20))
self.pb_select_all.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_select_all.setObjectName("pb_select_all")
self.gridLayout_2.addWidget(self.pb_select_all, 3, 1, 1, 1)
self.pb_select_anklejoint = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_anklejoint.setMinimumSize(QtCore.QSize(0, 20))
self.pb_select_anklejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_select_anklejoint.setObjectName("pb_select_anklejoint")
self.gridLayout_2.addWidget(self.pb_select_anklejoint, 2, 2, 1, 1)
self.pb_select_hipjoint = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_hipjoint.setMinimumSize(QtCore.QSize(0, 20))
self.pb_select_hipjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_select_hipjoint.setObjectName("pb_select_hipjoint")
self.gridLayout_2.addWidget(self.pb_select_hipjoint, 0, 2, 1, 1)
self.le_hipjoint = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_hipjoint.setMinimumSize(QtCore.QSize(0, 20))
self.le_hipjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_hipjoint.setObjectName("le_hipjoint")
self.gridLayout_2.addWidget(self.le_hipjoint, 0, 1, 1, 1)
self.l_anklejoint = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_anklejoint.setMinimumSize(QtCore.QSize(0, 20))
self.l_anklejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_anklejoint.setObjectName("l_anklejoint")
self.gridLayout_2.addWidget(self.l_anklejoint, 2, 0, 1, 1)
self.pb_select_kneejoint = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_kneejoint.setMinimumSize(QtCore.QSize(0, 20))
self.pb_select_kneejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_select_kneejoint.setObjectName("pb_select_kneejoint")
self.gridLayout_2.addWidget(self.pb_select_kneejoint, 1, 2, 1, 1)
self.pb_select_footcnt = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_footcnt.setMinimumSize(QtCore.QSize(0, 20))
self.pb_select_footcnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_select_footcnt.setObjectName("pb_select_footcnt")
self.gridLayout_2.addWidget(self.pb_select_footcnt, 4, 2, 1, 1)
self.l_kneejoint = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_kneejoint.setMinimumSize(QtCore.QSize(0, 20))
self.l_kneejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_kneejoint.setObjectName("l_kneejoint")
self.gridLayout_2.addWidget(self.l_kneejoint, 1, 0, 1, 1)
self.le_legik = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_legik.setMinimumSize(QtCore.QSize(0, 20))
self.le_legik.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_legik.setObjectName("le_legik")
self.gridLayout_2.addWidget(self.le_legik, 5, 1, 1, 1)
self.le_kneejoint = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_kneejoint.setMinimumSize(QtCore.QSize(0, 20))
self.le_kneejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_kneejoint.setObjectName("le_kneejoint")
self.gridLayout_2.addWidget(self.le_kneejoint, 1, 1, 1, 1)
self.le_anklejoint = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_anklejoint.setMinimumSize(QtCore.QSize(0, 20))
self.le_anklejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_anklejoint.setObjectName("le_anklejoint")
self.gridLayout_2.addWidget(self.le_anklejoint, 2, 1, 1, 1)
self.l_legik = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_legik.setMinimumSize(QtCore.QSize(0, 20))
self.l_legik.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_legik.setObjectName("l_legik")
self.gridLayout_2.addWidget(self.l_legik, 5, 0, 1, 1)
self.l_footcntr = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_footcntr.setMinimumSize(QtCore.QSize(0, 20))
self.l_footcntr.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_footcntr.setObjectName("l_footcntr")
self.gridLayout_2.addWidget(self.l_footcntr, 4, 0, 1, 1)
self.pb_select_legik = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_legik.setMinimumSize(QtCore.QSize(0, 20))
self.pb_select_legik.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_select_legik.setObjectName("pb_select_legik")
self.gridLayout_2.addWidget(self.pb_select_legik, 5, 2, 1, 1)
self.le_footcntr = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_footcntr.setMinimumSize(QtCore.QSize(0, 20))
self.le_footcntr.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_footcntr.setObjectName("le_footcntr")
self.gridLayout_2.addWidget(self.le_footcntr, 4, 1, 1, 1)
self.le_oldname = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_oldname.setMinimumSize(QtCore.QSize(0, 20))
self.le_oldname.setMaximumSize(QtCore.QSize(75, 22))
self.le_oldname.setObjectName("le_oldname")
self.gridLayout_2.addWidget(self.le_oldname, 6, 2, 1, 1)
self.l_replacename = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_replacename.setMinimumSize(QtCore.QSize(0, 20))
self.l_replacename.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_replacename.setObjectName("l_replacename")
self.gridLayout_2.addWidget(self.l_replacename, 6, 0, 1, 2)
self.verticalLayout.addLayout(self.gridLayout_2)
self.groupBox = QtWidgets.QGroupBox(self.verticalLayoutWidget)
self.groupBox.setObjectName("groupBox")
self.rb_None = QtWidgets.QRadioButton(self.groupBox)
self.rb_None.setGeometry(QtCore.QRect(60, 10, 82, 18))
self.rb_None.setMinimumSize(QtCore.QSize(0, 18))
self.rb_None.setMaximumSize(QtCore.QSize(16777215, 20))
self.rb_None.setObjectName("rb_None")
self.rb_None.setChecked(True)
self.rb_L = QtWidgets.QRadioButton(self.groupBox)
self.rb_L.setGeometry(QtCore.QRect(150, 10, 82, 18))
self.rb_L.setMinimumSize(QtCore.QSize(0, 18))
self.rb_L.setMaximumSize(QtCore.QSize(16777215, 20))
self.rb_L.setObjectName("rb_L")
self.rb_R = QtWidgets.QRadioButton(self.groupBox)
self.rb_R.setGeometry(QtCore.QRect(230, 10, 82, 18))
self.rb_R.setMinimumSize(QtCore.QSize(0, 18))
self.rb_R.setMaximumSize(QtCore.QSize(16777215, 20))
self.rb_R.setObjectName("rb_R")
self.verticalLayout.addWidget(self.groupBox)
self.line_2 = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.verticalLayout.addWidget(self.line_2)
self.pb_createloc = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_createloc.setMinimumSize(QtCore.QSize(0, 20))
self.pb_createloc.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_createloc.setObjectName("pb_createloc")
self.verticalLayout.addWidget(self.pb_createloc)
self.pb_deleteloc = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_deleteloc.setMinimumSize(QtCore.QSize(0, 20))
self.pb_deleteloc.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_deleteloc.setObjectName("pb_deleteloc")
self.verticalLayout.addWidget(self.pb_deleteloc)
self.line = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.verticalLayout.addWidget(self.line)
self.pb_create_noflip = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_create_noflip.setMinimumSize(QtCore.QSize(0, 20))
self.pb_create_noflip.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_create_noflip.setObjectName("pb_create_noflip")
self.verticalLayout.addWidget(self.pb_create_noflip)
self.gridLayout_3 = QtWidgets.QGridLayout()
self.gridLayout_3.setContentsMargins(20, -1, 20, -1)
self.gridLayout_3.setHorizontalSpacing(20)
self.gridLayout_3.setObjectName("gridLayout_3")
self.l_twist = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_twist.setMinimumSize(QtCore.QSize(0, 20))
self.l_twist.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_twist.setObjectName("l_twist")
self.gridLayout_3.addWidget(self.l_twist, 0, 0, 1, 1)
self.le_twist = QtWidgets.QLineEdit(self.verticalLayoutWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.le_twist.sizePolicy().hasHeightForWidth())
self.le_twist.setSizePolicy(sizePolicy)
self.le_twist.setMinimumSize(QtCore.QSize(0, 20))
self.le_twist.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_twist.setObjectName("le_twist")
self.gridLayout_3.addWidget(self.le_twist, 0, 1, 1, 1)
self.pb_altertwist = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_altertwist.setMinimumSize(QtCore.QSize(0, 20))
self.pb_altertwist.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_altertwist.setObjectName("pb_altertwist")
self.gridLayout_3.addWidget(self.pb_altertwist, 0, 2, 1, 1)
self.verticalLayout.addLayout(self.gridLayout_3)
self.line_3 = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.verticalLayout.addWidget(self.line_3)
self.pb_finish = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_finish.setMinimumSize(QtCore.QSize(0, 20))
self.pb_finish.setMaximumSize(QtCore.QSize(16777215, 22))
self.pb_finish.setObjectName("pb_finish")
self.verticalLayout.addWidget(self.pb_finish)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Automates creating a reverse foot
#Automates setting up a reverse foot
#Makes sure the minimum amount of items needed is selected and will tell you if not
#Also only creates those items if they are not already present
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
def create_connections(self):
self.pb_select_anklejnt.clicked.connect(self.select_ankle)
self.pb_select_footjnt.clicked.connect(self.select_foot)
self.pb_select_toejnt.clicked.connect(self.select_toe)
self.pb_select_alljnt.clicked.connect(self.select_all)
self.pb_select_legik.clicked.connect(self.select_IK)
self.pb_select_footcntr.clicked.connect(self.select_controller)
self.pb_placementloc_create.clicked.connect(self.create_placement_loc)
self.pb_placementloc_delete.clicked.connect(self.delete_placement_loc)
self.pb_create.clicked.connect(self.create_reffoot)
def select_ankle(self):
selected = cmds.ls(sl=True)
self.le_anklejnt.setText(selected[0])
def select_foot(self):
selected = cmds.ls(sl=True)
self.le_footjnt.setText(selected[0])
def select_toe(self):
selected = cmds.ls(sl=True)
self.le_toejnt.setText(selected[0])
def select_all(self):
selected = cmds.ls(sl=True)
self.le_anklejnt.setText(selected[0])
self.le_footjnt.setText(selected[1])
self.le_toejnt.setText(selected[2])
def select_IK(self):
selected = cmds.ls(sl=True)
self.le_legik.setText(selected[0])
def select_controller(self):
selected = cmds.ls(sl=True)
self.le_legik_2.setText(selected[0])
def create_placement_loc(self):
#Checks if there is already a locator for it in the scene before creating a new one
try:
cmds.select("Reverse_Heel")
heel_locator = cmds.ls(sl=True)
print "You already have a Reverse_Heel locator created!"
except:
cmds.spaceLocator(n='Reverse_Heel')
#Checks if there is already a locator for it in the scene before creating a new one
try:
cmds.select("Reverse_CenterBank")
heel_locator = cmds.ls(sl=True)
print "You already have a Reverse_CenterBank locator created!"
except:
cmds.spaceLocator(n='Reverse_CenterBank')
#Checks if there is already a locator for it in the scene before creating a new one
try:
cmds.select("Reverse_EdgeBank")
heel_locator = cmds.ls(sl=True)
print "You already have a Reverse_EdgeBank locator created!"
except:
cmds.spaceLocator(n='Reverse_EdgeBank')
def delete_placement_loc(self):
try:
cmds.delete("Reverse_Heel")
except:
print "Reverse_Heel locator is already deleted."
try:
cmds.delete("Reverse_CenterBank")
except:
print "Reverse_CenterBank locator is already deleted."
try:
cmds.delete("Reverse_EdgeBank")
except:
print "Reverse_EdgeBank locator is already deleted."
def create_reffoot(self):
radius = 0.2
side = ""
ankle = self.le_anklejnt.text()
foot = self.le_footjnt.text()
toe = self.le_toejnt.text()
#cmds.spaceLocator(n='Reverse_Heel')
heel = 'Reverse_Heel'
#cmds.spaceLocator(n='Reverse_CenterBank')
cbank = 'Reverse_CenterBank'
#cmds.spaceLocator(n='Reverse_EdgeBank')
ebank = 'Reverse_EdgeBank'
leg_IK = self.le_legik.text()
foot_cntr = self.le_legik_2.text()
list_heel = cmds.ls("Reverse_Heel")
list_cbank = cmds.ls('Reverse_CenterBank')
list_ebank = cmds.ls('Reverse_EdgeBank')
list_ankle = cmds.ls(ankle)
list_foot = cmds.ls(foot)
list_toe = cmds.ls(toe)
if self.rb_L.isChecked():
side = "L_"
if self.rb_L_2.isChecked():
side = "R_"
if self.rb_L_3.isChecked():
side = ""
if list_heel != [] and list_cbank !=[] and list_ebank != []:
if list_ankle != [] and list_foot != [] and list_toe != []:
cmds.select(None)
#Align rev cbank to cbank locator
rev_cbank_jnt = cmds.joint(n = side + "cbank_revjnt", rad=radius)
alin_cbank = cmds.pointConstraint(cbank, rev_cbank_jnt)
cmds.delete(alin_cbank)
#Align rev ebank to ebank locator
rev_ebank_jnt = cmds.joint(n = side + "ebank_revjnt", rad=radius)
alin_ebank = cmds.pointConstraint(ebank, rev_ebank_jnt)
cmds.delete(alin_ebank)
#Align rev heel to heel locator
rev_heel_jnt = cmds.joint(n = side + "heel_revjnt", rad=radius)
alin_heel = cmds.pointConstraint(heel, rev_heel_jnt)
cmds.delete(alin_heel)
#Aligh rev pivot to foot joint
rev_pivot_jnt = cmds.joint(n = side + "pivot_revjnt", rad=radius)
alin_pivot = cmds.pointConstraint(foot, rev_pivot_jnt)
cmds.delete(alin_pivot)
#Aligh rev toe to toe joint
rev_toe_jnt = cmds.joint(n = side + "toe_revjnt", rad=radius)
alin_toe = cmds.pointConstraint(toe, rev_toe_jnt)
cmds.delete(alin_toe)
#Align rev ball joint to foot joint
rev_ball_jnt = cmds.joint(n = side + "ball_revjnt", rad=radius)
alin_ball = cmds.pointConstraint(foot, rev_ball_jnt)
cmds.delete(alin_ball)
#Align rev ankle joint to ankle joint
rev_ankle_jnt = cmds.joint(n = side + "ankle_revjnt", rad=radius)
alin_ankle = cmds.pointConstraint(ankle, rev_ankle_jnt)
cmds.delete(alin_ankle)
#Orient the joints --- Maybe add the option to change that orientation??
#Though not neccesary since parent contraints don't care about orientation
cmds.joint(rev_cbank_jnt, e = True, oj = 'xyz', sao = 'yup', ch = True)
cmds.joint(rev_ebank_jnt, e = True, oj = 'none')
cmds.joint(rev_heel_jnt, e = True, oj = 'xyz', sao = 'yup', ch = True)
cmds.joint(rev_ankle_jnt, e = True, oj = 'none')
#Create IK in normal IK chain to be controlled by the reversed foot by parenting
foot_IK = cmds.ikHandle(sj = ankle, ee = foot, sol = "ikSCsolver", n=side + 'foot_IKHndl')
toe_IK = cmds.ikHandle(sj = foot, ee = toe, sol = "ikSCsolver", n=side + 'toe_IKHndl')
cmds.parent(toe_IK[0], rev_pivot_jnt)
cmds.parent(foot_IK[0], rev_toe_jnt)
if leg_IK != None:
cmds.parent(leg_IK, rev_ankle_jnt)
if foot_cntr != None:
#Group the reverse foot and let it be controlled by the
rev_grp = cmds.group(rev_cbank_jnt, n= side + "revfoot_Grp")
cmds.parentConstraint(foot_cntr, rev_grp, mo=True)
#Create attributes on foot controlle
cmds.addAttr(foot_cntr, ln = "C_Bank", at='float', dv=0, k=True)
cmds.addAttr(foot_cntr, ln = "E_Bank", at='float', dv=0, k=True)
cmds.addAttr(foot_cntr, ln = "Heel", at='float', dv=0, k=True)
cmds.addAttr(foot_cntr, ln = "Pivot", at='float', dv=0, k=True)
cmds.addAttr(foot_cntr, ln = "Toe", at='float', dv=0, k=True)
cmds.addAttr(foot_cntr, ln = "Twist", at='float', dv=0, k=True)
cmds.addAttr(foot_cntr, ln = "Ball", at='float', dv=0, k=True)
#Connect the created attributes to the reverse foot joints
cmds.connectAttr(foot_cntr + '.C_Bank', rev_cbank_jnt + '.rotateZ')
cmds.connectAttr(foot_cntr + '.E_Bank', rev_ebank_jnt + '.rotateZ')
cmds.connectAttr(foot_cntr + '.Heel', rev_heel_jnt + '.rotateZ')
cmds.connectAttr(foot_cntr + '.Pivot', rev_pivot_jnt + '.rotateY')
cmds.connectAttr(foot_cntr + '.Toe', rev_toe_jnt + '.rotateZ')
cmds.connectAttr(foot_cntr + '.Twist', rev_toe_jnt + '.rotateY')
cmds.connectAttr(foot_cntr + '.Ball', rev_ball_jnt + '.rotateZ')
else:
print "You haven't filled in all the required joints...."
else:
print "You don't have all the required locator's....."
#Generated code for the UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("Dialog", "Dialog", None, -1))
self.pb_placementloc_create.setText(QtWidgets.QApplication.translate("Dialog", "Create Placement Locators", None, -1))
self.pb_placementloc_delete.setText(QtWidgets.QApplication.translate("Dialog", "Delete Placement Locators", None, -1))
self.l_footjnt.setText(QtWidgets.QApplication.translate("Dialog", "Foot joint", None, -1))
self.l_toejnt.setText(QtWidgets.QApplication.translate("Dialog", "Toe joint", None, -1))
self.l_anklejnt.setText(QtWidgets.QApplication.translate("Dialog", "Ankle joint", None, -1))
self.pb_select_anklejnt.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.le_legik.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Select leg IK if you want it parented", None, -1))
self.pb_select_alljnt.setText(QtWidgets.QApplication.translate("Dialog", "select all", None, -1))
self.pb_select_legik.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.pb_select_toejnt.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.pb_select_footjnt.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.l_legik.setText(QtWidgets.QApplication.translate("Dialog", "Leg IK", None, -1))
self.l_legik_2.setText(QtWidgets.QApplication.translate("Dialog", "Controller", None, -1))
self.pb_select_footcntr.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.le_legik_2.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "If you want standard attributes created", None, -1))
self.groupBox.setTitle(QtWidgets.QApplication.translate("Dialog", "Prefix", None, -1))
self.rb_L.setText(QtWidgets.QApplication.translate("Dialog", "L", None, -1))
self.rb_L_2.setText(QtWidgets.QApplication.translate("Dialog", "R", None, -1))
self.rb_L_3.setText(QtWidgets.QApplication.translate("Dialog", "None", None, -1))
self.pb_create.setText(QtWidgets.QApplication.translate("Dialog", "Create Reverse Foot", None, -1))
def create_widgets(self):
self.setObjectName("Dialog")
self.resize(383, 410)
self.setMinimumSize(QtCore.QSize(200, 35))
self.setMaximumSize(QtCore.QSize(383, 410))
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 361, 395))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(5, 10, 5, 10)
self.verticalLayout.setObjectName("verticalLayout")
self.pb_placementloc_create = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_placementloc_create.setMinimumSize(QtCore.QSize(0, 2))
self.pb_placementloc_create.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_placementloc_create.setObjectName("pb_placementloc_create")
self.verticalLayout.addWidget(self.pb_placementloc_create)
self.pb_placementloc_delete = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_placementloc_delete.setMinimumSize(QtCore.QSize(0, 22))
self.pb_placementloc_delete.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_placementloc_delete.setObjectName("pb_placementloc_delete")
self.verticalLayout.addWidget(self.pb_placementloc_delete)
self.line = QtWidgets.QFrame(self.verticalLayoutWidget)
self.line.setMaximumSize(QtCore.QSize(16777215, 3))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.verticalLayout.addWidget(self.line)
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
self.gridLayout.setContentsMargins(5, 0, 5, -1)
self.gridLayout.setHorizontalSpacing(6)
self.gridLayout.setVerticalSpacing(14)
self.gridLayout.setObjectName("gridLayout")
self.le_toejnt = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_toejnt.setMinimumSize(QtCore.QSize(0, 20))
self.le_toejnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_toejnt.setObjectName("le_toejnt")
self.gridLayout.addWidget(self.le_toejnt, 2, 1, 1, 1)
self.le_footjnt = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_footjnt.setMinimumSize(QtCore.QSize(0, 20))
self.le_footjnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_footjnt.setObjectName("le_footjnt")
self.gridLayout.addWidget(self.le_footjnt, 1, 1, 1, 1)
self.l_footjnt = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_footjnt.setMinimumSize(QtCore.QSize(0, 20))
self.l_footjnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_footjnt.setObjectName("l_footjnt")
self.gridLayout.addWidget(self.l_footjnt, 1, 0, 1, 1)
self.l_toejnt = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_toejnt.setMinimumSize(QtCore.QSize(0, 20))
self.l_toejnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_toejnt.setObjectName("l_toejnt")
self.gridLayout.addWidget(self.l_toejnt, 2, 0, 1, 1)
self.l_anklejnt = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_anklejnt.setMinimumSize(QtCore.QSize(0, 20))
self.l_anklejnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_anklejnt.setObjectName("l_anklejnt")
self.gridLayout.addWidget(self.l_anklejnt, 0, 0, 1, 1)
self.pb_select_anklejnt = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_anklejnt.setMinimumSize(QtCore.QSize(0, 22))
self.pb_select_anklejnt.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_select_anklejnt.setObjectName("pb_select_anklejnt")
self.gridLayout.addWidget(self.pb_select_anklejnt, 0, 2, 1, 1)
self.le_legik = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_legik.setMinimumSize(QtCore.QSize(0, 20))
self.le_legik.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_legik.setObjectName("le_legik")
self.gridLayout.addWidget(self.le_legik, 4, 1, 1, 1)
self.pb_select_alljnt = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_alljnt.setMinimumSize(QtCore.QSize(0, 22))
self.pb_select_alljnt.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_select_alljnt.setObjectName("pb_select_alljnt")
self.gridLayout.addWidget(self.pb_select_alljnt, 3, 1, 1, 1)
self.pb_select_legik = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_legik.setMinimumSize(QtCore.QSize(0, 22))
self.pb_select_legik.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_select_legik.setObjectName("pb_select_legik")
self.gridLayout.addWidget(self.pb_select_legik, 4, 2, 1, 1)
self.pb_select_toejnt = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_toejnt.setMinimumSize(QtCore.QSize(0, 22))
self.pb_select_toejnt.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_select_toejnt.setObjectName("pb_select_toejnt")
self.gridLayout.addWidget(self.pb_select_toejnt, 2, 2, 1, 1)
self.pb_select_footjnt = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_footjnt.setMinimumSize(QtCore.QSize(0, 22))
self.pb_select_footjnt.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_select_footjnt.setObjectName("pb_select_footjnt")
self.gridLayout.addWidget(self.pb_select_footjnt, 1, 2, 1, 1)
self.l_legik = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_legik.setMinimumSize(QtCore.QSize(0, 20))
self.l_legik.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_legik.setObjectName("l_legik")
self.gridLayout.addWidget(self.l_legik, 4, 0, 1, 1)
self.le_anklejnt = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_anklejnt.setMinimumSize(QtCore.QSize(0, 20))
self.le_anklejnt.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_anklejnt.setObjectName("le_anklejnt")
self.gridLayout.addWidget(self.le_anklejnt, 0, 1, 1, 1)
self.l_legik_2 = QtWidgets.QLabel(self.verticalLayoutWidget)
self.l_legik_2.setMinimumSize(QtCore.QSize(0, 20))
self.l_legik_2.setMaximumSize(QtCore.QSize(16777215, 22))
self.l_legik_2.setObjectName("l_legik_2")
self.gridLayout.addWidget(self.l_legik_2, 5, 0, 1, 1)
self.pb_select_footcntr = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_select_footcntr.setMinimumSize(QtCore.QSize(0, 22))
self.pb_select_footcntr.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_select_footcntr.setObjectName("pb_select_footcntr")
self.gridLayout.addWidget(self.pb_select_footcntr, 5, 2, 1, 1)
self.le_legik_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.le_legik_2.setMinimumSize(QtCore.QSize(0, 20))
self.le_legik_2.setMaximumSize(QtCore.QSize(16777215, 22))
self.le_legik_2.setObjectName("le_legik_2")
self.gridLayout.addWidget(self.le_legik_2, 5, 1, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setContentsMargins(5, -1, 5, -1)
self.horizontalLayout.setObjectName("horizontalLayout")
self.groupBox = QtWidgets.QGroupBox(self.verticalLayoutWidget)
self.groupBox.setMinimumSize(QtCore.QSize(0, 50))
self.groupBox.setMaximumSize(QtCore.QSize(16777215, 50))
self.groupBox.setObjectName("groupBox")
self.rb_L = QtWidgets.QRadioButton(self.groupBox)
self.rb_L.setGeometry(QtCore.QRect(10, 20, 81, 22))
self.rb_L.setMinimumSize(QtCore.QSize(0, 20))
self.rb_L.setMaximumSize(QtCore.QSize(16777215, 22))
self.rb_L.setObjectName("rb_L")
self.rb_L_2 = QtWidgets.QRadioButton(self.groupBox)
self.rb_L_2.setGeometry(QtCore.QRect(90, 20, 109, 22))
self.rb_L_2.setMinimumSize(QtCore.QSize(0, 20))
self.rb_L_2.setMaximumSize(QtCore.QSize(16777215, 22))
self.rb_L_2.setObjectName("rb_L_2")
self.rb_L_3 = QtWidgets.QRadioButton(self.groupBox)
self.rb_L_3.setGeometry(QtCore.QRect(170, 20, 167, 22))
self.rb_L_3.setMinimumSize(QtCore.QSize(0, 20))
self.rb_L_3.setMaximumSize(QtCore.QSize(16777215, 22))
self.rb_L_3.setChecked(True)
self.rb_L_3.setObjectName("rb_L_3")
self.horizontalLayout.addWidget(self.groupBox)
self.verticalLayout.addLayout(self.horizontalLayout)
self.pb_create = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.pb_create.setMinimumSize(QtCore.QSize(0, 2))
self.pb_create.setMaximumSize(QtCore.QSize(16777215, 24))
self.pb_create.setObjectName("pb_create")
self.verticalLayout.addWidget(self.pb_create)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Automates setting up a FK or IK tail/spine/neck
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
self.tabWidget.setCurrentIndex(3)
QtCore.QMetaObject.connectSlotsByName(self)
def create_connections(self):
self.pushbutton_jnts_along_crv_t2.clicked.connect(self.create_joints_along_curve)
self.pushbutton_insertjnt_t1.clicked.connect(self.insert_joints)
self.pushbutton_setuptail_t3.clicked.connect(self.tail_setup)
self.pushbutton_setupspine_t4.clicked.connect(self.spine_setup)
self.pushbutton_selectcurve_t4.clicked.connect(self.selected_curve)
self.pushbutton_selectbeginjnt_t4.clicked.connect(self.selected_begin_jnt)
self.pushbutton_selectendjnt_t4.clicked.connect(self.selected_end_jnt)
def selected_object(self):
# Updated the selected parent object window
selected = cmds.ls(sl=True)
try:
self.textbrowser_begin_jnt_t1.setText(selected[0])
except:
self.textbrowser_begin_jnt_t1.setText("Nothing selected")
try:
self.textbrowser_end_jnt_t1.setText(selected[1])
except:
self.textbrowser_end_jnt_t1.setText("Nothing selected")
try:
self.textbrowser_selected_crv_t2.setText(selected[0])
except:
self.textbrowser_selected_crv_t2.setText("Nothing selected")
try:
self.textbrowser_selectedjnt_t3.setText(selected[0])
except:
self.textbrowser_selectedjnt_t3.setText("Nothing selected")
def create_joints_along_curve(self):
selected_crv = cmds.ls(sl=True)
#User inputs
if self.lineedit_prefix_t2.text():
prefix = self.lineedit_prefix_t2.text() + "_"
else:
prefix = ""
if self.lineedit_name_t2.text():
name = self.lineedit_name_t2.text()
else:
name = 0
if self.lineedit_amount_t2.text():
spans = int(self.lineedit_amount_t2.text())
else:
spans = 0
#User input radius
rad_begin = float(self.lineedit_radius_begin_t2.text())
rad_end = float(self.lineedit_radius_end_t2.text())
increment = (rad_begin - rad_end) / (spans)
increment_count = rad_begin + increment
if name > 0 and spans > 0:
#create a new crv to keep the origonal from being edited
new_crv = cmds.duplicate(name = "new_" + selected_crv[0])
rebuild_crv = cmds.rebuildCurve(cch = True, d = 3, rt = 0, s = spans, kep = True, kr = 2, rpo = True)
crv_point = 0
counter = 1
for i in range(spans + 1):
pos_points = cmds.pointOnCurve(rebuild_crv, pr = crv_point)
new = cmds.joint(p= pos_points)
cmds.joint(new, e=True, rad = increment_count)
crv_point += 1
if i == 0:
begin = cmds.rename(prefix + name + "_beginJnt" + str(counter))
cmds.joint(begin, e = True, oj = 'xyz', sao = 'yup', ch = True, rad = rad_begin)
elif i == (spans):
end = cmds.rename(prefix + name + "_endJnt" + str(counter) )
cmds.joint(end, e = True, oj = 'none', rad = rad_end)
else:
cmds.rename(prefix + name + "_jnt" + str(counter))
increment_count -= increment
counter += 1
cmds.joint(begin, e = True, oj = 'xyz', sao = 'yup', ch = True)
cmds.joint(end, e = True, oj = 'none')
else:
print "You did not fill in all the required fields"
def insert_joints(self):
# get the begin and end joint, in that order
selected = cmds.ls(sl = True)
# could add option to select x,y or z orientation of origonal joints, but usually X is used
joint_orient = ".translateX"
#Check if text is entered
if self.lineedit_prefic_t1.text():
prefix = self.lineedit_prefic_t1.text() + "_"
else:
prefix = ""
if self.lineedit_name_t1.text():
name = self.lineedit_name_t1.text()
else:
name = 0
if self.lineedit_amount_t1.text():
amount = int(self.lineedit_amount_t1.text())
else:
amount = 0
rad_begin = float(self.lineedit_radius_begin_t1.text())
rad_end = float(self.lineedit_radius_end_t1.text())
# change radius of origonal joints
cmds.joint(selected[0], e =True, rad = rad_begin)
cmds.joint(selected[1], e =True, rad = rad_end)
#get the distance each joint has to be away to get desired amount of joints insterted
lenght = cmds.getAttr(selected[1] + joint_orient)
difference = lenght / (amount + 1)
# name and number of joints need to be entered other
increment = (rad_begin - rad_end) / (amount + 1)
increment_count = rad_end + increment
if amount > 0 and name > 0:
count = amount + 1
for i in range(amount):
new_jnt = cmds.insertJoint(selected[0])
cmds.rename(prefix + name + "_jnt" + str(count))
cmds.setAttr((prefix + name + "_jnt" + str(count)) + joint_orient, difference)
cmds.joint((prefix + name + "_jnt" + str(count)), e =True, rad = increment_count)
count -= 1
increment_count += increment
# move the original end joint back
cmds.setAttr(selected[1] + joint_orient, difference)
if self.checkbox_suffix_t1.isChecked():
cmds.rename(selected[0],(prefix + name + "_beginjnt1"))
cmds.rename(selected[1],(prefix + name + "_endJnt" + str(amount + 2)))
else:
cmds.rename(selected[0],(prefix + name +"_jnt1"))
cmds.rename(selected[1],(prefix + name + "jnt" + str(amount + 2)))
else:
print "You did not fill in all the required fields"
def tail_setup(self):
#user inputs
if self.lineedit_name_t3.text():
name = self.lineedit_name_t3.text()
else:
name = 0
#Check if text is entered
if self.lineedit_prefix_t3.text():
prefix = self.lineedit_prefix_t3.text() + "_"
else:
prefix = ""
rad_begin = float(self.lineedit_beginradius_t3.text())
rad_end = float(self.lineedit_endradius_t3.text())
size_begin = float(self.lineedit_beginsize_t3.text())
size_end = float(self.lineedit_endsize_t3.text())
circle = self.radiobutton_circle_t3.isChecked()
custom = self.radiobutton_custom_t3.isChecked()
#getting it from a selection becomes very complicated, selection order etc. so user needs to imput controller name manually
if self.lineedit_customcntrname_t3:
custom_controller = self.lineedit_customcntrname_t3.text()
else:
custom_controller = 0
cmds.select( hi=True)
selected = cmds.ls(sl=True)
#get the lenght so the code doesn't create a controller for the last joint
lenght = len(selected) -1
#calculate incremente per joint
increment = (rad_begin - rad_end) / (lenght - 1)
increment_count = rad_begin
increment_s = (size_begin - size_end) / (lenght - 1)
increment_count_s = size_begin
#make sure name count starts at 1
nr = 1
#For some reason combining them into one caused some problems so I decided to just split them for now
#if user wants simple circle controllers
if name > 0:
if self.radiobutton_circle_t3.isChecked():
for i in selected:
if i != selected[lenght]:
circle = cmds.circle(n = prefix + name + "_cntr" + str(nr), nr = [1,0,0], r = increment_count)
cmds.group(n = prefix + name + "_cntr_grp" + str(nr))
null_grp = cmds.group(n = prefix + name + "_cntr_nullgrp" + str(nr))
alin = cmds.parentConstraint(i, null_grp)
cmds.delete(alin)
if i != selected[0]:
# parent second to first, third to second etc.... but skip parenting the first one to something
cmds.parent(prefix + name + "_cntr_nullgrp" + str(nr), prefix + name + "_cntr" + str(nr-1))
if i == selected[1]:
# directly connect rotation of first controller to the second controllers group
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + ".rotate", prefix + name + "_cntr_grp" + str(nr) + ".rotate")
if i != selected[0] and i != selected[1]:
#connect rotate x
adl_x = cmds.shadingNode('addDoubleLinear', au = True, n= "ADL_" + prefix + name + "_rotateX_" + str(nr-1))
cmds.connectAttr(prefix + name + "_cntr_grp" + str(nr-1) + '.rotateX' , "ADL_" + prefix + name + "_rotateX_" + str(nr-1) + ".input1")
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + '.rotateX', "ADL_" + prefix + name + "_rotateX_" + str(nr-1) + ".input2")
cmds.connectAttr("ADL_" + prefix + name + "_rotateX_" + str(nr-1) + ".output", prefix + name + "_cntr_grp" + str(nr) + '.rotateX')
#connect rotate y
adl_y = cmds.shadingNode('addDoubleLinear', au = True, n= "ADL_" + prefix + name + "_rotateY_" + str(nr-1))
cmds.connectAttr(prefix + name + "_cntr_grp" + str(nr-1) + '.rotateY' , "ADL_" + prefix + name + "_rotateY_" + str(nr-1) + ".input1")
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + '.rotateY', "ADL_" + prefix + name + "_rotateY_" + str(nr-1) + ".input2")
cmds.connectAttr("ADL_" + prefix + name + "_rotateY_" + str(nr-1) + ".output", prefix + name + "_cntr_grp" + str(nr) + '.rotateY')
#connect rotate z
adl_z = cmds.shadingNode('addDoubleLinear', au = True, n= "ADL_" + prefix + name + "_rotateZ_" + str(nr-1))
cmds.connectAttr(prefix + name + "_cntr_grp" + str(nr-1) + '.rotateZ' , "ADL_" + prefix + name + "_rotateZ_" + str(nr-1) + ".input1")
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + '.rotateZ', "ADL_" + prefix + name + "_rotateZ_" + str(nr-1) + ".input2")
cmds.connectAttr("ADL_" + prefix + name + "_rotateZ_" + str(nr-1) + ".output", prefix + name + "_cntr_grp" + str(nr) + '.rotateZ')
#contraint joints to controllers
cmds.parentConstraint(prefix + name + "_cntr" + str(nr), i, mo = True)
increment_count -= increment
nr +=1
if self.radiobutton_custom_t3.isChecked() and custom_controller > 0:
test = cmds.select(custom_controller)
cmds.FreezeTransformations(custom_controller)
cmds.makeIdentity(a=True, t=True, r=True, s=True)
cmds.DeleteHistory(custom_controller)
for i in selected:
if i != selected[lenght]:
cmds.duplicate(custom_controller, n = prefix + name + "_cntr" + str(nr))
test = cmds.CreateEmptyGroup()
cmds.rename(test, prefix + name + "_cntr_grp" + str(nr))
cmds.parent(prefix + name + "_cntr" + str(nr), prefix + name + "_cntr_grp" + str(nr))
test2 = cmds.CreateEmptyGroup()
cmds.rename(test2, prefix + name + "_cntr_nullgrp" + str(nr))
cmds.parent(prefix + name + "_cntr_grp" + str(nr), prefix + name + "_cntr_nullgrp" + str(nr))
cmds.xform(prefix + name + "_cntr_nullgrp" + str(nr), s = (increment_count_s, increment_count_s, increment_count_s))
alin = cmds.parentConstraint(i, prefix + name + "_cntr_nullgrp" + str(nr))
cmds.delete(alin)
if i != selected[0]:
# parent second to first, third to second etc.... but skip parenting the first one to something
cmds.parent(prefix + name + "_cntr_nullgrp" + str(nr), prefix + name + "_cntr" + str(nr-1))
if i == selected[1]:
# directly connect rotation of first controller to the second controllers group
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + ".rotate", prefix + name + "_cntr_grp" + str(nr) + ".rotate")
if i != selected[0] and i != selected[1]:
#connect rotate x
adl_x = cmds.shadingNode('addDoubleLinear', au = True, n= "ADL_" + prefix + name + "_rotateX_" + str(nr-1))
cmds.connectAttr(prefix + name + "_cntr_grp" + str(nr-1) + '.rotateX' , "ADL_" + prefix + name + "_rotateX_" + str(nr-1) + ".input1")
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + '.rotateX', "ADL_" + prefix + name + "_rotateX_" + str(nr-1) + ".input2")
cmds.connectAttr("ADL_" + prefix + name + "_rotateX_" + str(nr-1) + ".output", prefix + name + "_cntr_grp" + str(nr) + '.rotateX')
#connect rotate y
adl_y = cmds.shadingNode('addDoubleLinear', au = True, n= "ADL_" + prefix + name + "_rotateY_" + str(nr-1))
cmds.connectAttr(prefix + name + "_cntr_grp" + str(nr-1) + '.rotateY' , "ADL_" + prefix + name + "_rotateY_" + str(nr-1) + ".input1")
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + '.rotateY', "ADL_" + prefix + name + "_rotateY_" + str(nr-1) + ".input2")
cmds.connectAttr("ADL_" + prefix + name + "_rotateY_" + str(nr-1) + ".output", prefix + name + "_cntr_grp" + str(nr) + '.rotateY')
#connect rotate z
adl_z = cmds.shadingNode('addDoubleLinear', au = True, n= "ADL_" + prefix + name + "_rotateZ_" + str(nr-1))
cmds.connectAttr(prefix + name + "_cntr_grp" + str(nr-1) + '.rotateZ' , "ADL_" + prefix + name + "_rotateZ_" + str(nr-1) + ".input1")
cmds.connectAttr(prefix + name + "_cntr" + str(nr-1) + '.rotateZ', "ADL_" + prefix + name + "_rotateZ_" + str(nr-1) + ".input2")
cmds.connectAttr("ADL_" + prefix + name + "_rotateZ_" + str(nr-1) + ".output", prefix + name + "_cntr_grp" + str(nr) + '.rotateZ')
#contraint joints to controllers
cmds.parentConstraint(prefix + name + "_cntr" + str(nr), i, mo = True)
increment_count_s -= increment_s
nr +=1
else:
print "You need to specify you custom controller"
else:
print "You did not fill in all the required fields"
def selected_curve(self):
selected = cmds.ls(sl=True)
self.lineedit_curve_t4.setText(selected[0])
return selected
def selected_begin_jnt(self):
selected = cmds.ls(sl=True)
self.lineedit_beginjnt_t4.setText(selected[0])
return selected
def selected_end_jnt(self):
selected = cmds.ls(sl=True)
self.lineedit_endjnt_t4.setText(selected[0])
return selected
def spine_setup(self):
#selected_crv = self.lineedit_curve_t4.text()
#end_jnt = self.lineedit_endjnt_t4.text()
#begin_jnt = self.lineedit_beginjnt_t4.text()
selected_crv = "new_curve1"
begin_jnt = "M_spine_beginJnt1"
end_jnt = "M_spine_endJnt11"
if self.lineedit_name_t4.text():
name = self.lineedit_name_t4.text()
else:
name = 0
#Check if text is entered
if self.lineedit_prefix_t4.text():
prefix = self.lineedit_prefix_t4.text() + "_"
else:
prefix = ""
#This one is for just three control points
spans = 5
rad_ends = float(self.lineedit_beginradius_t4.text())
rad_middle = float(self.lineedit_endradius_t4.text())
size_ends = float(self.lineedit_beginsize_t4.text())
size_middle = float(self.lineedit_endsize_t4.text())
if name > 0:
new_crv = cmds.duplicate(selected_crv, n=(prefix + name + "_IKCrv"))
rebuild_crv = cmds.rebuildCurve(new_crv, cch = True, d = 3, rt = 0, s = (spans -1), kep = True, kr = 2, rpo = True)
#Get the name of the new curve for later
new_crv_name = cmds.ls(rebuild_crv)
#Create IKSpline handle
cmds.ikHandle(sj = begin_jnt, ee = end_jnt, c= new_crv_name[0], sol = "ikSplineSolver", ccv=False, pcv=False, n= (prefix + name + "_IKSH"))
crv_point = 0
counter = 1
span_count = 0
cluster_list = []
controller_list = []
nr = 1
#-1 at the end as remainder that count starts at 0 (ability to have more)
middle = (spans / 2 + 1) -1
if self.radiobutton_circle_t4.isChecked():
for i in range(spans):
#Need to create a controller for begin and end
#And create cluster for 2 controllers
if i == 0 or i == (spans-1):
begin_cluster = cmds.cluster(new_crv_name[0] + ".cv[" + str(span_count)+ ":" + str(span_count+1) + "]", n = (prefix + name + "_Clst" + str(nr)))
circle = cmds.circle(n = prefix + name + "_Cntr" + str(nr), r = rad_ends)
cmds.group()
null_grp = cmds.rename(prefix + name + "_CntrGrp" + str(nr))
alin = cmds.parentConstraint(begin_cluster, null_grp)
cmds.delete(alin)
cmds.parentConstraint(circle, begin_cluster)
cluster_list.append(begin_cluster[1])
controller_list.append(circle[0])
span_count += 2
nr += 1
#Need to create a controller for middle
elif i == middle:
middle_cluster = cmds.cluster(new_crv_name[0] + ".cv[" + str(span_count)+ "]", n = (prefix + name + "_Clst" + str(nr)))
circle = cmds.circle(r = rad_middle, n = prefix + name + "_Cntr" + str(nr))
cmds.group()
null_grp = cmds.rename(prefix + name + "_CntrGrp" + str(nr))
alin = cmds.parentConstraint(middle_cluster, null_grp)
cmds.delete(alin)
cmds.parentConstraint(circle, middle_cluster)
cluster_list.append(middle_cluster[1])
controller_list.append(null_grp)
span_count += 1
nr += 1
#No need to creat controllers for the inbetween clusters
else:
middle_cluster = cmds.cluster(new_crv_name[0] + ".cv[" + str(span_count)+ "]", n = (prefix + name + "_Clst" + str(nr)))
middle_cluster_getname = cmds.ls(middle_cluster)
cluster_list.append(middle_cluster_getname[1])
span_count += 1
nr += 1
if self.radiobutton_custom_t4.isChecked():
custom_controller = self.lineedit_customcntrname_t4.text()
test = cmds.select(custom_controller)
cmds.FreezeTransformations(custom_controller)
cmds.makeIdentity(a=True, t=True, r=True, s=True)
cmds.DeleteHistory(custom_controller)
for i in range(spans):
#Need to create a controller for begin and end
#And create cluster for 2 controllers
if i == 0 or i == (spans-1):
begin_cluster = cmds.cluster(new_crv_name[0] + ".cv[" + str(span_count)+ ":" + str(span_count+1) + "]", n = (prefix + name + "_Clst" + str(nr)))
circle = cmds.duplicate(custom_controller, n = prefix + name + "_Cntr" + str(nr))
cmds.group(circle)
null_grp = cmds.rename(prefix + name + "_CntrGrp" + str(nr))
alin = cmds.parentConstraint(begin_cluster, null_grp)
cmds.delete(alin)
cmds.xform(null_grp, s = (size_ends,size_ends,size_ends))
cmds.parentConstraint(begin_cluster, circle)
cluster_list.append(begin_cluster[1])
controller_list.append(circle[0])
span_count += 2
nr += 1
#Need to create a controller for middle
elif i == middle:
middle_cluster = cmds.cluster(new_crv_name[0] + ".cv[" + str(span_count)+ "]", n = (prefix + name + "_Clst" + str(nr)))
circle = cmds.duplicate(custom_controller, n = prefix + name + "_Cntr" + str(nr))
empty_grp = cmds.CreateEmptyGroup()
null_grp = cmds.rename(empty_grp, prefix + name + "_CntrGrp" + str(nr))
cmds.parent(circle, null_grp)
alin = cmds.parentConstraint(middle_cluster, null_grp)
cmds.delete(alin)
cmds.xform(null_grp, s = (size_middle,size_middle,size_middle))
cmds.parentConstraint(circle, middle_cluster)
cluster_list.append(middle_cluster[1])
controller_list.append(null_grp)
span_count += 1
nr += 1
#No need to creat controllers for the inbetween clusters
else:
middle_cluster = cmds.cluster(new_crv_name[0] + ".cv[" + str(span_count)+ "]", n = (prefix + name + "_Clst" + str(nr)))
middle_cluster_getname = cmds.ls(middle_cluster)
cluster_list.append(middle_cluster_getname[1])
span_count += 1
nr += 1
#parent all clusters correspondingly
cmds.parentConstraint(cluster_list[0], cluster_list[middle], mo=True)
cmds.parentConstraint(cluster_list[spans-1], cluster_list[middle], mo=True)
cmds.parentConstraint(cluster_list[0], cluster_list[middle -1], mo=True)
cmds.parentConstraint(cluster_list[middle], cluster_list[middle -1], mo=True)
cmds.parentConstraint(cluster_list[spans-1], cluster_list[middle +1], mo=True)
cmds.parentConstraint(cluster_list[middle], cluster_list[middle +1], mo=True)
#parent controllers correctly
cmds.parentConstraint(controller_list[0], controller_list[1], mo=True)
cmds.parentConstraint(controller_list[2], controller_list[1], mo=True)
else:
print "You did not fill in all the required fields"
def closeEvent( self, event):
# Clean up the script job stuff prior to closing the dialog.
try:
cmds.scriptJob( kill=self.SCRIPT_JOB_NUMBER, force=True )
super( Dialog_Window, self ).closeEvent( event )
except:
pass
#Generated code for the UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("Dialog", "Curve SetUp helper", None, -1))
self.label_begin_jnt_t1.setText(QtWidgets.QApplication.translate("Dialog", "Begin Joint", None, -1))
self.label_end_jnt_t1.setText(QtWidgets.QApplication.translate("Dialog", "End_Joint", None, -1))
self.label_prefix_t1.setText(QtWidgets.QApplication.translate("Dialog", "Prefix", None, -1))
self.lineedit_prefic_t1.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Noting entered results in \' \'", None, -1))
self.label_name_t1.setText(QtWidgets.QApplication.translate("Dialog", "Name", None, -1))
self.lineedit_name_t1.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Fill in base joint name.....", None, -1))
self.checkbox_suffix_t1.setText(QtWidgets.QApplication.translate("Dialog", "Add suffix (begin/end)", None, -1))
self.label_amout_t1.setText(QtWidgets.QApplication.translate("Dialog", "Amount", None, -1))
self.label_radius_begin_t1.setText(QtWidgets.QApplication.translate("Dialog", "Begin Radius", None, -1))
self.lineedit_radius_begin_t1.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_radius_end_t1.setText(QtWidgets.QApplication.translate("Dialog", "End Radius", None, -1))
self.lineedit_radius_end_t1.setText(QtWidgets.QApplication.translate("Dialog", "0.5", None, -1))
self.pushbutton_insertjnt_t1.setText(QtWidgets.QApplication.translate("Dialog", "Insert Joints", None, -1))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.insert_jnts), QtWidgets.QApplication.translate("Dialog", "Insert", None, -1))
self.label_selected_crv_t2.setText(QtWidgets.QApplication.translate("Dialog", "Selected Curve", None, -1))
self.label_prefix_t2.setText(QtWidgets.QApplication.translate("Dialog", "Prefix", None, -1))
self.lineedit_prefix_t2.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Noting entered results in \' \'", None, -1))
self.label_name_t2.setText(QtWidgets.QApplication.translate("Dialog", "Name", None, -1))
self.lineedit_name_t2.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Fill in base joint name.....", None, -1))
self.label_amount_t2.setText(QtWidgets.QApplication.translate("Dialog", "Amount of Joints", None, -1))
self.label_radius_begin_t2.setText(QtWidgets.QApplication.translate("Dialog", "Begin Radius", None, -1))
self.lineedit_radius_begin_t2.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_radius_begin_t2_2.setText(QtWidgets.QApplication.translate("Dialog", "End Radius", None, -1))
self.lineedit_radius_end_t2.setText(QtWidgets.QApplication.translate("Dialog", "0.5", None, -1))
self.pushbutton_jnts_along_crv_t2.setText(QtWidgets.QApplication.translate("Dialog", "Create Joints along Curve", None, -1))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.jnts_on_crv), QtWidgets.QApplication.translate("Dialog", "Along Curve", None, -1))
self.label_selectedjnt_t3.setText(QtWidgets.QApplication.translate("Dialog", "Selected begin Joint", None, -1))
self.groupbox_shape_t3.setTitle(QtWidgets.QApplication.translate("Dialog", "Shape", None, -1))
self.radiobutton_circle_t3.setText(QtWidgets.QApplication.translate("Dialog", "Circle", None, -1))
self.label_beginradius_t3.setText(QtWidgets.QApplication.translate("Dialog", "Begin Radius", None, -1))
self.lineedit_beginradius_t3.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_endradius_t3.setText(QtWidgets.QApplication.translate("Dialog", "End Radius", None, -1))
self.lineedit_endradius_t3.setText(QtWidgets.QApplication.translate("Dialog", "0.5", None, -1))
self.radiobutton_custom_t3.setText(QtWidgets.QApplication.translate("Dialog", "Custom", None, -1))
self.label_beginsize_t3.setText(QtWidgets.QApplication.translate("Dialog", "Begin size", None, -1))
self.lineedit_beginsize_t3.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_endsize_t3.setText(QtWidgets.QApplication.translate("Dialog", "End size", None, -1))
self.lineedit_endsize_t3.setText(QtWidgets.QApplication.translate("Dialog", "0.5", None, -1))
self.label_customcntrname_t3.setText(QtWidgets.QApplication.translate("Dialog", "Custom controller\'s name:", None, -1))
self.lineedit_customcntrname_t3.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Enter custom made controllers name", None, -1))
self.label_prefix_t3.setText(QtWidgets.QApplication.translate("Dialog", "Prefix", None, -1))
self.lineedit_prefix_t3.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Noting entered results in \' \'", None, -1))
self.label_name_t3.setText(QtWidgets.QApplication.translate("Dialog", "Name", None, -1))
self.lineedit_name_t3.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Fill in base controllers name.....", None, -1))
self.checkbox_cntrtojnt_t3.setText(QtWidgets.QApplication.translate("Dialog", "Connect Controllers to Joints", None, -1))
self.checkbox_connectcntr_t3.setText(QtWidgets.QApplication.translate("Dialog", "Connect Controllers to eachother", None, -1))
self.pushbutton_setuptail_t3.setText(QtWidgets.QApplication.translate("Dialog", "Create", None, -1))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QtWidgets.QApplication.translate("Dialog", "Tail Set-Up", None, -1))
self.label_curve_t4.setText(QtWidgets.QApplication.translate("Dialog", "Curve", None, -1))
self.pushbutton_selectcurve_t4.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.label_baginjnt_t4.setText(QtWidgets.QApplication.translate("Dialog", "Begin Joint", None, -1))
self.pushbutton_selectbeginjnt_t4.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.label_endjnt_t4.setText(QtWidgets.QApplication.translate("Dialog", "End Joint", None, -1))
self.pushbutton_selectendjnt_t4.setText(QtWidgets.QApplication.translate("Dialog", "select", None, -1))
self.groupbox_shape_t4.setTitle(QtWidgets.QApplication.translate("Dialog", "Shape", None, -1))
self.radiobutton_circle_t4.setText(QtWidgets.QApplication.translate("Dialog", "Circle", None, -1))
self.label_beginradius_t4.setText(QtWidgets.QApplication.translate("Dialog", "End Radius", None, -1))
self.lineedit_beginradius_t4.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_endradius_t4.setText(QtWidgets.QApplication.translate("Dialog", "Middle Radius", None, -1))
self.lineedit_endradius_t4.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.radiobutton_custom_t4.setText(QtWidgets.QApplication.translate("Dialog", "Custom", None, -1))
self.label_beginsize_t4.setText(QtWidgets.QApplication.translate("Dialog", "End size", None, -1))
self.lineedit_beginsize_t4.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_endsize_t4.setText(QtWidgets.QApplication.translate("Dialog", "Middle size", None, -1))
self.lineedit_endsize_t4.setText(QtWidgets.QApplication.translate("Dialog", "1", None, -1))
self.label_customcntrname_t4.setText(QtWidgets.QApplication.translate("Dialog", "Custom controller\'s name:", None, -1))
self.lineedit_customcntrname_t4.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Enter custom made controllers name", None, -1))
self.label_prefix_t4.setText(QtWidgets.QApplication.translate("Dialog", "Prefix", None, -1))
self.lineedit_prefix_t4.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Noting entered results in \' \'", None, -1))
self.label_name_t4.setText(QtWidgets.QApplication.translate("Dialog", "Name", None, -1))
self.lineedit_name_t4.setPlaceholderText(QtWidgets.QApplication.translate("Dialog", "Fill in base controllers name.....", None, -1))
self.pushbutton_setupspine_t4.setText(QtWidgets.QApplication.translate("Dialog", "Create", None, -1))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.spine), QtWidgets.QApplication.translate("Dialog", "Spine", None, -1))
def create_widgets(self):
self.setObjectName("Curve Set-Up helper")
self.resize(295, 450)
self.setMaximumSize(300,455)
self.setMinimumSize(200, 10)
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 281, 431))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.tabWidget = QtWidgets.QTabWidget(self.verticalLayoutWidget)
self.tabWidget.setObjectName("tabWidget")
self.insert_jnts = QtWidgets.QWidget()
self.insert_jnts.setObjectName("insert_jnts")
self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.insert_jnts)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 271, 371))
self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
self.verticalLayout_2.setContentsMargins(10, -1, 10, 10)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.label_begin_jnt_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_begin_jnt_t1.sizePolicy().hasHeightForWidth())
self.label_begin_jnt_t1.setSizePolicy(sizePolicy)
self.label_begin_jnt_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_begin_jnt_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_begin_jnt_t1.setObjectName("label_begin_jnt_t1")
self.verticalLayout_2.addWidget(self.label_begin_jnt_t1)
self.textbrowser_begin_jnt_t1 = QtWidgets.QTextBrowser(self.verticalLayoutWidget_2)
self.textbrowser_begin_jnt_t1.setMinimumSize(QtCore.QSize(0, 18))
self.textbrowser_begin_jnt_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.textbrowser_begin_jnt_t1.setObjectName("textbrowser_begin_jnt_t1")
self.verticalLayout_2.addWidget(self.textbrowser_begin_jnt_t1)
self.label_end_jnt_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_end_jnt_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_end_jnt_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_end_jnt_t1.setObjectName("label_end_jnt_t1")
self.verticalLayout_2.addWidget(self.label_end_jnt_t1)
self.textbrowser_end_jnt_t1 = QtWidgets.QTextBrowser(self.verticalLayoutWidget_2)
self.textbrowser_end_jnt_t1.setMinimumSize(QtCore.QSize(0, 18))
self.textbrowser_end_jnt_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.textbrowser_end_jnt_t1.setObjectName("textbrowser_end_jnt_t1")
self.verticalLayout_2.addWidget(self.textbrowser_end_jnt_t1)
self.label_prefix_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_prefix_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_prefix_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_prefix_t1.setObjectName("label_prefix_t1")
self.verticalLayout_2.addWidget(self.label_prefix_t1)
self.lineedit_prefic_t1 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineedit_prefic_t1.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_prefic_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_prefic_t1.setObjectName("lineedit_prefic_t1")
self.verticalLayout_2.addWidget(self.lineedit_prefic_t1)
self.label_name_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_name_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_name_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_name_t1.setObjectName("label_name_t1")
self.verticalLayout_2.addWidget(self.label_name_t1)
self.lineedit_name_t1 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineedit_name_t1.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_name_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_name_t1.setObjectName("lineedit_name_t1")
self.verticalLayout_2.addWidget(self.lineedit_name_t1)
self.checkbox_suffix_t1 = QtWidgets.QCheckBox(self.verticalLayoutWidget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.checkbox_suffix_t1.sizePolicy().hasHeightForWidth())
self.checkbox_suffix_t1.setSizePolicy(sizePolicy)
self.checkbox_suffix_t1.setMinimumSize(QtCore.QSize(0, 18))
self.checkbox_suffix_t1.setMaximumSize(QtCore.QSize(16777215, 20))
self.checkbox_suffix_t1.setLayoutDirection(QtCore.Qt.LeftToRight)
self.checkbox_suffix_t1.setObjectName("checkbox_suffix_t1")
self.verticalLayout_2.addWidget(self.checkbox_suffix_t1)
self.label_amout_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_amout_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_amout_t1.setMaximumSize(QtCore.QSize(16777215, 24))
self.label_amout_t1.setObjectName("label_amout_t1")
self.verticalLayout_2.addWidget(self.label_amout_t1)
self.lineedit_amount_t1 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineedit_amount_t1.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_amount_t1.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_amount_t1.setObjectName("lineedit_amount_t1")
self.verticalLayout_2.addWidget(self.lineedit_amount_t1)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_radius_begin_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_radius_begin_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_radius_begin_t1.setMaximumSize(QtCore.QSize(70, 20))
self.label_radius_begin_t1.setObjectName("label_radius_begin_t1")
self.horizontalLayout.addWidget(self.label_radius_begin_t1)
self.lineedit_radius_begin_t1 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineedit_radius_begin_t1.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_radius_begin_t1.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_radius_begin_t1.setObjectName("lineedit_radius_begin_t1")
self.horizontalLayout.addWidget(self.lineedit_radius_begin_t1)
self.label_radius_end_t1 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
self.label_radius_end_t1.setMinimumSize(QtCore.QSize(0, 18))
self.label_radius_end_t1.setMaximumSize(QtCore.QSize(70, 20))
self.label_radius_end_t1.setObjectName("label_radius_end_t1")
self.horizontalLayout.addWidget(self.label_radius_end_t1)
self.lineedit_radius_end_t1 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.lineedit_radius_end_t1.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_radius_end_t1.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_radius_end_t1.setObjectName("lineedit_radius_end_t1")
self.horizontalLayout.addWidget(self.lineedit_radius_end_t1)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.pushbutton_insertjnt_t1 = QtWidgets.QPushButton(self.verticalLayoutWidget_2)
self.pushbutton_insertjnt_t1.setObjectName("pushbutton_insertjnt_t1")
self.verticalLayout_2.addWidget(self.pushbutton_insertjnt_t1)
self.tabWidget.addTab(self.insert_jnts, "")
self.jnts_on_crv = QtWidgets.QWidget()
self.jnts_on_crv.setObjectName("jnts_on_crv")
self.verticalLayoutWidget_3 = QtWidgets.QWidget(self.jnts_on_crv)
self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(0, 0, 271, 301))
self.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3)
self.verticalLayout_3.setContentsMargins(10, 7, 10, 10)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.label_selected_crv_t2 = QtWidgets.QLabel(self.verticalLayoutWidget_3)
self.label_selected_crv_t2.setMinimumSize(QtCore.QSize(0, 18))
self.label_selected_crv_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_selected_crv_t2.setObjectName("label_selected_crv_t2")
self.verticalLayout_3.addWidget(self.label_selected_crv_t2)
self.textbrowser_selected_crv_t2 = QtWidgets.QTextBrowser(self.verticalLayoutWidget_3)
self.textbrowser_selected_crv_t2.setMinimumSize(QtCore.QSize(0, 18))
self.textbrowser_selected_crv_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.textbrowser_selected_crv_t2.setObjectName("textbrowser_selected_crv_t2")
self.verticalLayout_3.addWidget(self.textbrowser_selected_crv_t2)
self.label_prefix_t2 = QtWidgets.QLabel(self.verticalLayoutWidget_3)
self.label_prefix_t2.setMinimumSize(QtCore.QSize(0, 18))
self.label_prefix_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_prefix_t2.setObjectName("label_prefix_t2")
self.verticalLayout_3.addWidget(self.label_prefix_t2)
self.lineedit_prefix_t2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_3)
self.lineedit_prefix_t2.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_prefix_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_prefix_t2.setObjectName("lineedit_prefix_t2")
self.verticalLayout_3.addWidget(self.lineedit_prefix_t2)
self.label_name_t2 = QtWidgets.QLabel(self.verticalLayoutWidget_3)
self.label_name_t2.setMinimumSize(QtCore.QSize(0, 18))
self.label_name_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_name_t2.setObjectName("label_name_t2")
self.verticalLayout_3.addWidget(self.label_name_t2)
self.lineedit_name_t2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_3)
self.lineedit_name_t2.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_name_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_name_t2.setObjectName("lineedit_name_t2")
self.verticalLayout_3.addWidget(self.lineedit_name_t2)
self.label_amount_t2 = QtWidgets.QLabel(self.verticalLayoutWidget_3)
self.label_amount_t2.setMinimumSize(QtCore.QSize(0, 18))
self.label_amount_t2.setMaximumSize(QtCore.QSize(16777215, 20))
self.label_amount_t2.setObjectName("label_amount_t2")
self.verticalLayout_3.addWidget(self.label_amount_t2)
self.lineedit_amount_t2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_3)
self.lineedit_amount_t2.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_amount_t2.setMaximumSize(QtCore.QSize(60, 20))
self.lineedit_amount_t2.setObjectName("lineedit_amount_t2")
self.verticalLayout_3.addWidget(self.lineedit_amount_t2)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_radius_begin_t2 = QtWidgets.QLabel(self.verticalLayoutWidget_3)
self.label_radius_begin_t2.setMinimumSize(QtCore.QSize(0, 18))
self.label_radius_begin_t2.setMaximumSize(QtCore.QSize(70, 20))
self.label_radius_begin_t2.setObjectName("label_radius_begin_t2")
self.horizontalLayout_2.addWidget(self.label_radius_begin_t2)
self.lineedit_radius_begin_t2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_3)
self.lineedit_radius_begin_t2.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_radius_begin_t2.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_radius_begin_t2.setObjectName("lineedit_radius_begin_t2")
self.horizontalLayout_2.addWidget(self.lineedit_radius_begin_t2)
self.label_radius_begin_t2_2 = QtWidgets.QLabel(self.verticalLayoutWidget_3)
self.label_radius_begin_t2_2.setMinimumSize(QtCore.QSize(0, 18))
self.label_radius_begin_t2_2.setMaximumSize(QtCore.QSize(70, 20))
self.label_radius_begin_t2_2.setObjectName("label_radius_begin_t2_2")
self.horizontalLayout_2.addWidget(self.label_radius_begin_t2_2)
self.lineedit_radius_end_t2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_3)
self.lineedit_radius_end_t2.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_radius_end_t2.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_radius_end_t2.setObjectName("lineedit_radius_end_t2")
self.horizontalLayout_2.addWidget(self.lineedit_radius_end_t2)
self.verticalLayout_3.addLayout(self.horizontalLayout_2)
self.pushbutton_jnts_along_crv_t2 = QtWidgets.QPushButton(self.verticalLayoutWidget_3)
self.pushbutton_jnts_along_crv_t2.setObjectName("pushbutton_jnts_along_crv_t2")
self.verticalLayout_3.addWidget(self.pushbutton_jnts_along_crv_t2)
self.tabWidget.addTab(self.jnts_on_crv, "")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.verticalLayoutWidget_4 = QtWidgets.QWidget(self.tab)
self.verticalLayoutWidget_4.setGeometry(QtCore.QRect(0, 0, 271, 401))
self.verticalLayoutWidget_4.setObjectName("verticalLayoutWidget_4")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_4)
self.verticalLayout_4.setContentsMargins(10, 10, 10, 0)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.label_selectedjnt_t3 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
self.label_selectedjnt_t3.setMinimumSize(QtCore.QSize(0, 16))
self.label_selectedjnt_t3.setMaximumSize(QtCore.QSize(16777215, 18))
self.label_selectedjnt_t3.setObjectName("label_selectedjnt_t3")
self.verticalLayout_4.addWidget(self.label_selectedjnt_t3)
self.textbrowser_selectedjnt_t3 = QtWidgets.QTextBrowser(self.verticalLayoutWidget_4)
self.textbrowser_selectedjnt_t3.setMinimumSize(QtCore.QSize(0, 18))
self.textbrowser_selectedjnt_t3.setMaximumSize(QtCore.QSize(16777215, 20))
self.textbrowser_selectedjnt_t3.setObjectName("textbrowser_selectedjnt_t3")
self.verticalLayout_4.addWidget(self.textbrowser_selectedjnt_t3)
self.groupbox_shape_t3 = QtWidgets.QGroupBox(self.verticalLayoutWidget_4)
self.groupbox_shape_t3.setMaximumSize(QtCore.QSize(16777215, 175))
self.groupbox_shape_t3.setObjectName("groupbox_shape_t3")
self.radiobutton_circle_t3 = QtWidgets.QRadioButton(self.groupbox_shape_t3)
self.radiobutton_circle_t3.setGeometry(QtCore.QRect(10, 20, 267, 17))
self.radiobutton_circle_t3.setChecked(True)
self.radiobutton_circle_t3.setObjectName("radiobutton_circle_t3")
self.horizontalLayoutWidget = QtWidgets.QWidget(self.groupbox_shape_t3)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(9, 40, 241, 22))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_beginradius_t3 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_beginradius_t3.setMinimumSize(QtCore.QSize(0, 18))
self.label_beginradius_t3.setMaximumSize(QtCore.QSize(70, 20))
self.label_beginradius_t3.setObjectName("label_beginradius_t3")
self.horizontalLayout_3.addWidget(self.label_beginradius_t3)
self.lineedit_beginradius_t3 = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
self.lineedit_beginradius_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_beginradius_t3.setMaximumSize(QtCore.QSize(45, 20))
self.lineedit_beginradius_t3.setObjectName("lineedit_beginradius_t3")
self.horizontalLayout_3.addWidget(self.lineedit_beginradius_t3)
self.label_endradius_t3 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_endradius_t3.setMinimumSize(QtCore.QSize(0, 18))
self.label_endradius_t3.setMaximumSize(QtCore.QSize(60, 20))
self.label_endradius_t3.setObjectName("label_endradius_t3")
self.horizontalLayout_3.addWidget(self.label_endradius_t3)
self.lineedit_endradius_t3 = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
self.lineedit_endradius_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_endradius_t3.setMaximumSize(QtCore.QSize(45, 20))
self.lineedit_endradius_t3.setObjectName("lineedit_endradius_t3")
self.horizontalLayout_3.addWidget(self.lineedit_endradius_t3)
self.radiobutton_custom_t3 = QtWidgets.QRadioButton(self.groupbox_shape_t3)
self.radiobutton_custom_t3.setGeometry(QtCore.QRect(10, 70, 101, 17))
self.radiobutton_custom_t3.setObjectName("radiobutton_custom_t3")
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.groupbox_shape_t3)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 140, 241, 22))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_beginsize_t3 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
self.label_beginsize_t3.setMinimumSize(QtCore.QSize(0, 18))
self.label_beginsize_t3.setMaximumSize(QtCore.QSize(60, 20))
self.label_beginsize_t3.setObjectName("label_beginsize_t3")
self.horizontalLayout_4.addWidget(self.label_beginsize_t3)
self.lineedit_beginsize_t3 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2)
self.lineedit_beginsize_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_beginsize_t3.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_beginsize_t3.setObjectName("lineedit_beginsize_t3")
self.horizontalLayout_4.addWidget(self.lineedit_beginsize_t3)
self.label_endsize_t3 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
self.label_endsize_t3.setMinimumSize(QtCore.QSize(0, 18))
self.label_endsize_t3.setMaximumSize(QtCore.QSize(60, 20))
self.label_endsize_t3.setObjectName("label_endsize_t3")
self.horizontalLayout_4.addWidget(self.label_endsize_t3)
self.lineedit_endsize_t3 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2)
self.lineedit_endsize_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_endsize_t3.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_endsize_t3.setObjectName("lineedit_endsize_t3")
self.horizontalLayout_4.addWidget(self.lineedit_endsize_t3)
self.label_customcntrname_t3 = QtWidgets.QLabel(self.groupbox_shape_t3)
self.label_customcntrname_t3.setGeometry(QtCore.QRect(10, 90, 241, 20))
self.label_customcntrname_t3.setObjectName("label_customcntrname_t3")
self.lineedit_customcntrname_t3 = QtWidgets.QLineEdit(self.groupbox_shape_t3)
self.lineedit_customcntrname_t3.setGeometry(QtCore.QRect(10, 110, 241, 20))
self.lineedit_customcntrname_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_customcntrname_t3.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_customcntrname_t3.setObjectName("lineedit_customcntrname_t3")
self.verticalLayout_4.addWidget(self.groupbox_shape_t3)
self.label_prefix_t3 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
self.label_prefix_t3.setMinimumSize(QtCore.QSize(0, 14))
self.label_prefix_t3.setMaximumSize(QtCore.QSize(16777215, 16))
self.label_prefix_t3.setObjectName("label_prefix_t3")
self.verticalLayout_4.addWidget(self.label_prefix_t3)
self.lineedit_prefix_t3 = QtWidgets.QLineEdit(self.verticalLayoutWidget_4)
self.lineedit_prefix_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_prefix_t3.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_prefix_t3.setObjectName("lineedit_prefix_t3")
self.verticalLayout_4.addWidget(self.lineedit_prefix_t3)
self.label_name_t3 = QtWidgets.QLabel(self.verticalLayoutWidget_4)
self.label_name_t3.setMinimumSize(QtCore.QSize(0, 14))
self.label_name_t3.setMaximumSize(QtCore.QSize(16777215, 16))
self.label_name_t3.setObjectName("label_name_t3")
self.verticalLayout_4.addWidget(self.label_name_t3)
self.lineedit_name_t3 = QtWidgets.QLineEdit(self.verticalLayoutWidget_4)
self.lineedit_name_t3.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_name_t3.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_name_t3.setObjectName("lineedit_name_t3")
self.verticalLayout_4.addWidget(self.lineedit_name_t3)
self.checkbox_cntrtojnt_t3 = QtWidgets.QCheckBox(self.verticalLayoutWidget_4)
self.checkbox_cntrtojnt_t3.setMinimumSize(QtCore.QSize(0, 14))
self.checkbox_cntrtojnt_t3.setMaximumSize(QtCore.QSize(16777215, 16))
self.checkbox_cntrtojnt_t3.setChecked(True)
self.checkbox_cntrtojnt_t3.setObjectName("checkbox_cntrtojnt_t3")
self.verticalLayout_4.addWidget(self.checkbox_cntrtojnt_t3)
self.checkbox_connectcntr_t3 = QtWidgets.QCheckBox(self.verticalLayoutWidget_4)
self.checkbox_connectcntr_t3.setMinimumSize(QtCore.QSize(0, 14))
self.checkbox_connectcntr_t3.setMaximumSize(QtCore.QSize(16777215, 16))
self.checkbox_connectcntr_t3.setChecked(True)
self.checkbox_connectcntr_t3.setObjectName("checkbox_connectcntr_t3")
self.verticalLayout_4.addWidget(self.checkbox_connectcntr_t3)
self.pushbutton_setuptail_t3 = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
self.pushbutton_setuptail_t3.setObjectName("pushbutton_setuptail_t3")
self.verticalLayout_4.addWidget(self.pushbutton_setuptail_t3)
self.tabWidget.addTab(self.tab, "")
self.verticalLayout.addWidget(self.tabWidget)
self.spine = QtWidgets.QWidget()
self.spine.setObjectName("spine")
self.verticalLayoutWidget_5 = QtWidgets.QWidget(self.spine)
self.verticalLayoutWidget_5.setGeometry(QtCore.QRect(0, 0, 281, 410))
self.verticalLayoutWidget_5.setObjectName("verticalLayoutWidget_5")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_5)
self.verticalLayout_5.setContentsMargins(10, 10, 10, 10)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setSpacing(0)
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_curve_t4 = QtWidgets.QLabel(self.verticalLayoutWidget_5)
self.label_curve_t4.setMinimumSize(QtCore.QSize(60, 14))
self.label_curve_t4.setMaximumSize(QtCore.QSize(60, 16))
self.label_curve_t4.setObjectName("label_curve_t4")
self.horizontalLayout_5.addWidget(self.label_curve_t4)
self.lineedit_curve_t4 = QtWidgets.QLineEdit(self.verticalLayoutWidget_5)
self.lineedit_curve_t4.setMinimumSize(QtCore.QSize(120, 0))
self.lineedit_curve_t4.setMaximumSize(QtCore.QSize(120, 16777215))
self.lineedit_curve_t4.setObjectName("lineedit_curve_t4")
self.horizontalLayout_5.addWidget(self.lineedit_curve_t4)
self.pushbutton_selectcurve_t4 = QtWidgets.QPushButton(self.verticalLayoutWidget_5)
self.pushbutton_selectcurve_t4.setMinimumSize(QtCore.QSize(50, 20))
self.pushbutton_selectcurve_t4.setMaximumSize(QtCore.QSize(60, 24))
self.pushbutton_selectcurve_t4.setObjectName("pushbutton_selectcurve_t4")
self.horizontalLayout_5.addWidget(self.pushbutton_selectcurve_t4)
self.verticalLayout_5.addLayout(self.horizontalLayout_5)
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.label_baginjnt_t4 = QtWidgets.QLabel(self.verticalLayoutWidget_5)
self.label_baginjnt_t4.setMinimumSize(QtCore.QSize(60, 14))
self.label_baginjnt_t4.setMaximumSize(QtCore.QSize(60, 16))
self.label_baginjnt_t4.setObjectName("label_baginjnt_t4")
self.horizontalLayout_8.addWidget(self.label_baginjnt_t4)
self.lineedit_beginjnt_t4 = QtWidgets.QLineEdit(self.verticalLayoutWidget_5)
self.lineedit_beginjnt_t4.setMinimumSize(QtCore.QSize(120, 0))
self.lineedit_beginjnt_t4.setMaximumSize(QtCore.QSize(120, 16777215))
self.lineedit_beginjnt_t4.setObjectName("lineedit_beginjnt_t4")
self.horizontalLayout_8.addWidget(self.lineedit_beginjnt_t4)
self.pushbutton_selectbeginjnt_t4 = QtWidgets.QPushButton(self.verticalLayoutWidget_5)
self.pushbutton_selectbeginjnt_t4.setMinimumSize(QtCore.QSize(50, 20))
self.pushbutton_selectbeginjnt_t4.setMaximumSize(QtCore.QSize(60, 24))
self.pushbutton_selectbeginjnt_t4.setObjectName("pushbutton_selectbeginjnt_t4")
self.horizontalLayout_8.addWidget(self.pushbutton_selectbeginjnt_t4)
self.verticalLayout_5.addLayout(self.horizontalLayout_8)
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
self.label_endjnt_t4 = QtWidgets.QLabel(self.verticalLayoutWidget_5)
self.label_endjnt_t4.setMinimumSize(QtCore.QSize(60, 14))
self.label_endjnt_t4.setMaximumSize(QtCore.QSize(60, 16))
self.label_endjnt_t4.setObjectName("label_endjnt_t4")
self.horizontalLayout_9.addWidget(self.label_endjnt_t4)
self.lineedit_endjnt_t4 = QtWidgets.QLineEdit(self.verticalLayoutWidget_5)
self.lineedit_endjnt_t4.setMinimumSize(QtCore.QSize(120, 0))
self.lineedit_endjnt_t4.setMaximumSize(QtCore.QSize(120, 16777215))
self.lineedit_endjnt_t4.setObjectName("lineedit_endjnt_t4")
self.horizontalLayout_9.addWidget(self.lineedit_endjnt_t4)
self.pushbutton_selectendjnt_t4 = QtWidgets.QPushButton(self.verticalLayoutWidget_5)
self.pushbutton_selectendjnt_t4.setMinimumSize(QtCore.QSize(50, 20))
self.pushbutton_selectendjnt_t4.setMaximumSize(QtCore.QSize(60, 24))
self.pushbutton_selectendjnt_t4.setObjectName("pushbutton_selectendjnt_t4")
self.horizontalLayout_9.addWidget(self.pushbutton_selectendjnt_t4)
self.verticalLayout_5.addLayout(self.horizontalLayout_9)
self.groupbox_shape_t4 = QtWidgets.QGroupBox(self.verticalLayoutWidget_5)
self.groupbox_shape_t4.setMinimumSize(QtCore.QSize(0, 175))
self.groupbox_shape_t4.setMaximumSize(QtCore.QSize(16777215, 175))
self.groupbox_shape_t4.setObjectName("groupbox_shape_t4")
self.radiobutton_circle_t4 = QtWidgets.QRadioButton(self.groupbox_shape_t4)
self.radiobutton_circle_t4.setGeometry(QtCore.QRect(10, 20, 267, 17))
self.radiobutton_circle_t4.setChecked(True)
self.radiobutton_circle_t4.setObjectName("radiobutton_circle_t4")
self.horizontalLayoutWidget_6 = QtWidgets.QWidget(self.groupbox_shape_t4)
self.horizontalLayoutWidget_6.setGeometry(QtCore.QRect(9, 40, 241, 22))
self.horizontalLayoutWidget_6.setObjectName("horizontalLayoutWidget_6")
self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_6)
self.horizontalLayout_10.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
self.label_beginradius_t4 = QtWidgets.QLabel(self.horizontalLayoutWidget_6)
self.label_beginradius_t4.setMinimumSize(QtCore.QSize(0, 18))
self.label_beginradius_t4.setMaximumSize(QtCore.QSize(60, 20))
self.label_beginradius_t4.setObjectName("label_beginradius_t4")
self.horizontalLayout_10.addWidget(self.label_beginradius_t4)
self.lineedit_beginradius_t4 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_6)
self.lineedit_beginradius_t4.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_beginradius_t4.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_beginradius_t4.setObjectName("lineedit_beginradius_t4")
self.horizontalLayout_10.addWidget(self.lineedit_beginradius_t4)
self.label_endradius_t4 = QtWidgets.QLabel(self.horizontalLayoutWidget_6)
self.label_endradius_t4.setMinimumSize(QtCore.QSize(0, 18))
self.label_endradius_t4.setMaximumSize(QtCore.QSize(60, 20))
self.label_endradius_t4.setObjectName("label_endradius_t4")
self.horizontalLayout_10.addWidget(self.label_endradius_t4)
self.lineedit_endradius_t4 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_6)
self.lineedit_endradius_t4.setMinimumSize(QtCore.QSize(30, 18))
self.lineedit_endradius_t4.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_endradius_t4.setObjectName("lineedit_endradius_t4")
self.horizontalLayout_10.addWidget(self.lineedit_endradius_t4)
self.radiobutton_custom_t4 = QtWidgets.QRadioButton(self.groupbox_shape_t4)
self.radiobutton_custom_t4.setGeometry(QtCore.QRect(10, 70, 101, 17))
self.radiobutton_custom_t4.setObjectName("radiobutton_custom_t4")
self.horizontalLayoutWidget_7 = QtWidgets.QWidget(self.groupbox_shape_t4)
self.horizontalLayoutWidget_7.setGeometry(QtCore.QRect(10, 140, 241, 22))
self.horizontalLayoutWidget_7.setObjectName("horizontalLayoutWidget_7")
self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_7)
self.horizontalLayout_11.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.label_beginsize_t4 = QtWidgets.QLabel(self.horizontalLayoutWidget_7)
self.label_beginsize_t4.setMinimumSize(QtCore.QSize(0, 18))
self.label_beginsize_t4.setMaximumSize(QtCore.QSize(60, 20))
self.label_beginsize_t4.setObjectName("label_beginsize_t4")
self.horizontalLayout_11.addWidget(self.label_beginsize_t4)
self.lineedit_beginsize_t4 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_7)
self.lineedit_beginsize_t4.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_beginsize_t4.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_beginsize_t4.setObjectName("lineedit_beginsize_t4")
self.horizontalLayout_11.addWidget(self.lineedit_beginsize_t4)
self.label_endsize_t4 = QtWidgets.QLabel(self.horizontalLayoutWidget_7)
self.label_endsize_t4.setMinimumSize(QtCore.QSize(0, 18))
self.label_endsize_t4.setMaximumSize(QtCore.QSize(60, 20))
self.label_endsize_t4.setObjectName("label_endsize_t4")
self.horizontalLayout_11.addWidget(self.label_endsize_t4)
self.lineedit_endsize_t4 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_7)
self.lineedit_endsize_t4.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_endsize_t4.setMaximumSize(QtCore.QSize(50, 20))
self.lineedit_endsize_t4.setObjectName("lineedit_endsize_t4")
self.horizontalLayout_11.addWidget(self.lineedit_endsize_t4)
self.label_customcntrname_t4 = QtWidgets.QLabel(self.groupbox_shape_t4)
self.label_customcntrname_t4.setGeometry(QtCore.QRect(10, 90, 241, 20))
self.label_customcntrname_t4.setObjectName("label_customcntrname_t4")
self.lineedit_customcntrname_t4 = QtWidgets.QLineEdit(self.groupbox_shape_t4)
self.lineedit_customcntrname_t4.setGeometry(QtCore.QRect(10, 110, 241, 20))
self.lineedit_customcntrname_t4.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_customcntrname_t4.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_customcntrname_t4.setObjectName("lineedit_customcntrname_t4")
self.verticalLayout_5.addWidget(self.groupbox_shape_t4)
self.label_prefix_t4 = QtWidgets.QLabel(self.verticalLayoutWidget_5)
self.label_prefix_t4.setMinimumSize(QtCore.QSize(0, 14))
self.label_prefix_t4.setMaximumSize(QtCore.QSize(16777215, 16))
self.label_prefix_t4.setObjectName("label_prefix_t4")
self.verticalLayout_5.addWidget(self.label_prefix_t4)
self.lineedit_prefix_t4 = QtWidgets.QLineEdit(self.verticalLayoutWidget_5)
self.lineedit_prefix_t4.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_prefix_t4.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_prefix_t4.setObjectName("lineedit_prefix_t4")
self.verticalLayout_5.addWidget(self.lineedit_prefix_t4)
self.label_name_t4 = QtWidgets.QLabel(self.verticalLayoutWidget_5)
self.label_name_t4.setMinimumSize(QtCore.QSize(0, 14))
self.label_name_t4.setMaximumSize(QtCore.QSize(16777215, 16))
self.label_name_t4.setObjectName("label_name_t4")
self.verticalLayout_5.addWidget(self.label_name_t4)
self.lineedit_name_t4 = QtWidgets.QLineEdit(self.verticalLayoutWidget_5)
self.lineedit_name_t4.setMinimumSize(QtCore.QSize(0, 18))
self.lineedit_name_t4.setMaximumSize(QtCore.QSize(16777215, 20))
self.lineedit_name_t4.setObjectName("lineedit_name_t4")
self.verticalLayout_5.addWidget(self.lineedit_name_t4)
self.pushbutton_setupspine_t4 = QtWidgets.QPushButton(self.verticalLayoutWidget_5)
self.pushbutton_setupspine_t4.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_setupspine_t4.setMaximumSize(QtCore.QSize(16777215, 24))
self.pushbutton_setupspine_t4.setObjectName("pushbutton_setupspine_t4")
self.verticalLayout_5.addWidget(self.pushbutton_setupspine_t4)
self.tabWidget.addTab(self.spine, "")
self.verticalLayout.addWidget(self.tabWidget)
self.SCRIPT_JOB_NUMBER = cmds.scriptJob( event=[ 'idle', self.selected_object ], protected = True)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...
Automates fingers including a spread and curl attribute, works with different amounts of fingers
from PySide2 import QtCore
from PySide2 import QtWidgets
from PySide2 import QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as moui
import maya.cmds as cmds
def maya_main_window():
main_window_ptr = moui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class Dialog_Window(QtWidgets.QDialog):
def __init__(self, parent = maya_main_window()):
super(Dialog_Window, self).__init__(parent)
self.setWindowFlags(self.windowFlags()^QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_connections()
self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)
def create_connections(self):
self.pushbutton_thumbjoint.clicked.connect(self.select_thumb)
self.pushbutton_indexjoint.clicked.connect(self.select_index)
self.pushbutton_middlejoint.clicked.connect(self.select_middle)
self.pushbutton_ringjoint.clicked.connect(self.select_ring)
self.pushbutton_pinkyjoint.clicked.connect(self.select_pinky)
self.pushbutton_create.clicked.connect(self.finger_setup)
self.pushbutton_handcontroller.clicked.connect(self.select_hand)
def select_thumb(self):
selected = cmds.ls(sl=True)
self.lineedit_thumbjoint.setText(selected[0])
def select_index(self):
selected = cmds.ls(sl=True)
self.lineedit_indexjoint.setText(selected[0])
def select_middle(self):
selected = cmds.ls(sl=True)
self.lineedit_middlejoint.setText(selected[0])
def select_ring(self):
selected = cmds.ls(sl=True)
self.lineedit_ringjoint.setText(selected[0])
def select_pinky(self):
selected = cmds.ls(sl=True)
self.lineedit_pinkyjoint.setText(selected[0])
def select_hand(self):
selected = cmds.ls(sl=True)
self.lineedit_handcontroller.setText(selected[0])
def finger_setup(self):
name_nr = 0
name = []
selected_fingers = []
if self.lineedit_thumbjoint.text():
selected_fingers.append(self.lineedit_thumbjoint.text())
name.append(self.lineedit_thumbname.text())
if self.lineedit_indexjoint.text():
selected_fingers.append(self.lineedit_indexjoint.text())
name.append(self.lineedit_indexname.text())
if self.lineedit_middlejoint.text():
selected_fingers.append(self.lineedit_middlejoint.text())
name.append(self.lineedit_middlename.text())
if self.lineedit_ringjoint.text():
selected_fingers.append(self.lineedit_ringjoint.text())
name.append(self.lineedit_ringname.text())
if self.lineedit_pinkyjoint.text():
selected_fingers.append(self.lineedit_pinkyjoint.text())
name.append(self.lineedit_pinkyname.text())
#Get prefix
if self.lineedit_prefix.text():
prefix = self.lineedit_prefix.text()
else:
prefix = ""
#For setting the positive or negative rotation
is_middle = len(name) % 2
md_y_list_end = []
#not accasible by user yet
rad_increment = 0.8
#Hand controller to which the attributes will be added
if self.lineedit_handcontroller.text():
selected_hand = self.lineedit_handcontroller.text()
else:
selected_hand = 0
#Add curl and spread atribute to the selected hand controller
cmds.addAttr(selected_hand, ln = "Curl", at='float', dv = 0, k=True)
cmds.addAttr(selected_hand, ln = "Spread", at='float', dv = 0, k=True)
if selected_hand > 0 and len(selected_fingers) > 0:
for i in selected_fingers:
cmds.select(i, hi = True)
selected = cmds.ls(sl=True)
lenght = len(selected) -1
nr = 1
circle_ctr_list = []
circle_ctrgrp_list = []
adl_z_list = []
adl_y_list = []
md_y_list = []
list_nr = 0
for i in selected:
if i != selected[lenght]:
if i == selected[0]:
circle = cmds.circle(n = prefix + name[name_nr] + "_Maincntr" + str(nr), nr = [1,0,0], r = rad_increment*1.5)
circle_ctr_list.insert(0, circle[0])
cntr_grp = cmds.group(n = prefix +name[name_nr] + "_Maincntrgrp" + str(nr))
circle_ctrgrp_list.insert(0, cntr_grp)
null_grp = cmds.group(n = prefix + name[name_nr] + "_Mainnullgrp" + str(nr))
align = cmds.parentConstraint(i, null_grp)
cmds.delete(align)
circle = cmds.circle(n = prefix + name[name_nr] + "_cntr" + str(nr), nr = [1,0,0], r = rad_increment)
circle_ctr_list.append(circle[0])
cntr_grp = cmds.group(n = prefix +name[name_nr] + "_cntrgrp" + str(nr))
circle_ctrgrp_list.append(cntr_grp)
null_grp = cmds.group(n = prefix + name[name_nr] + "_nullgrp" + str(nr))
align = cmds.parentConstraint(i, null_grp)
cmds.delete(align)
cmds.parentConstraint(circle[0], i)
cmds.parent(null_grp, circle_ctr_list[nr-1])
#Curl + Main Controller (Rotate Z)
adl_z = cmds.shadingNode('addDoubleLinear', au=True, n="ADL_" + prefix + name[name_nr] + "Curl" + str(nr))
adl_z_list.append(adl_z)
cmds.connectAttr(circle_ctr_list[0] + '.rotateZ', adl_z_list[list_nr] + '.input1')
cmds.connectAttr(circle_ctrgrp_list[0] + '.rotateZ', adl_z_list[list_nr] + '.input2')
cmds.connectAttr(adl_z_list[list_nr] + '.output', circle_ctrgrp_list[list_nr + 1] + '.rotateZ')
#Only connect to the first controller (Fingers don't bend sideways)
if i == selected[0]:
#Spread + Main Controller (Rotate Y > ! positive and negative)
adl_y = cmds.shadingNode('addDoubleLinear', au=True, n="ADL_" + prefix + name[name_nr] + "Spread" + str(nr))
adl_y_list.append(adl_y)
cmds.connectAttr(adl_y_list[list_nr] + '.output', circle_ctrgrp_list[list_nr + 1] + '.rotateY')
cmds.connectAttr(circle_ctr_list[0] + '.rotateY', adl_y_list[list_nr] + '.input1')
md_y = cmds.shadingNode('multiplyDivide', au = True, n="MD_" + prefix + name[name_nr] + "Spread" + str(nr))
md_y_list.append(md_y)
md_y_list_end.append(md_y)
cmds.connectAttr(selected_hand + ".Spread" ,md_y_list[list_nr] + ".input1X")
cmds.connectAttr(md_y_list[list_nr] + ".outputX", circle_ctrgrp_list[0] + '.rotateY')
#Connect atribute on hand to group that controls overall curl
nr +=1
list_nr +=1
cmds.connectAttr(selected_hand + ".Curl", circle_ctrgrp_list[0] + '.rotateZ')
name_nr +=1
#Now the fingers on the inside need to spread in and the outer fingers need to spread out
#If the amount of fingers is odd
if is_middle > 0:
middle = len(name) / 2
for i in range(len(name)):
if i == middle:
cmds.setAttr(md_y_list_end[i] + ".input2X", 0)
elif i < middle:
cmds.setAttr(md_y_list_end[i] + ".input2X", 1)
elif i > middle:
cmds.setAttr(md_y_list_end[i] + ".input2X", -1)
#if the amount of fingers is even
elif is_middle == 0:
middle = (len(name) /2)
for i in range(len(name)):
if i < middle:
cmds.setAttr(md_y_list_end[i] + ".input2X", -1)
elif i >= middle:
cmds.setAttr(md_y_list_end[i] + ".input2X", 1)
else:
print "You need to fill in the hand controller and select a minumum of 1 finger"
#Generated code for the UI from Qt-Designer
def retranslateUi(self):
self.setWindowTitle(QtWidgets.QApplication.translate("Finger SetUp", "Finger SetUp", None, -1))
self.groupBox.setTitle(QtWidgets.QApplication.translate("FingerSetUp", "Select the first Joint of each finger (No need to fill all of them)", None, -1))
self.label_ringjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "Ring finger Joint", None, -1))
self.lineedit_thumbname.setText(QtWidgets.QApplication.translate("FingerSetUp", "thumb", None, -1))
self.lineedit_indexname.setText(QtWidgets.QApplication.translate("FingerSetUp", "index", None, -1))
self.label_middlejoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "Middle finger Joint", None, -1))
self.lineedit_middlename.setText(QtWidgets.QApplication.translate("FingerSetUp", "middle", None, -1))
self.lineedit_ringname.setText(QtWidgets.QApplication.translate("FingerSetUp", "ring", None, -1))
self.label_indexname.setText(QtWidgets.QApplication.translate("FingerSetUp", " name", None, -1))
self.lineedit_pinkyname.setText(QtWidgets.QApplication.translate("FingerSetUp", "pinky", None, -1))
self.label_ringname.setText(QtWidgets.QApplication.translate("FingerSetUp", " name", None, -1))
self.label_handcontroller.setText(QtWidgets.QApplication.translate("FingerSetUp", "Hand Controller", None, -1))
self.label_middlename.setText(QtWidgets.QApplication.translate("FingerSetUp", " name", None, -1))
self.label_thumbjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "Thumb Joint", None, -1))
self.label_indexjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "Index finger Joint", None, -1))
self.pushbutton_thumbjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "select", None, -1))
self.label_pinkyname.setText(QtWidgets.QApplication.translate("FingerSetUp", " name", None, -1))
self.label_thumbname.setText(QtWidgets.QApplication.translate("FingerSetUp", " name", None, -1))
self.pushbutton_indexjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "select", None, -1))
self.pushbutton_middlejoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "select", None, -1))
self.pushbutton_ringjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "select", None, -1))
self.pushbutton_pinkyjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "select", None, -1))
self.label_pinkyjoint.setText(QtWidgets.QApplication.translate("FingerSetUp", "Pinky Joint", None, -1))
self.pushbutton_handcontroller.setText(QtWidgets.QApplication.translate("FingerSetUp", "select", None, -1))
self.lineedit_endrad.setText(QtWidgets.QApplication.translate("FingerSetUp", "0.5", None, -1))
self.lineedit_beginrad.setText(QtWidgets.QApplication.translate("FingerSetUp", "1", None, -1))
self.label_endrad.setText(QtWidgets.QApplication.translate("FingerSetUp", "End Radius", None, -1))
self.label_beginrad.setText(QtWidgets.QApplication.translate("FingerSetUp", "Begin Radius", None, -1))
self.label_prefix.setText(QtWidgets.QApplication.translate("FingerSetUp", "prefix", None, -1))
self.lineedit_prefix.setPlaceholderText(QtWidgets.QApplication.translate("FingerSetUp", "You don\'t have to enter a prefix", None, -1))
self.pushbutton_create.setText(QtWidgets.QApplication.translate("FingerSetUp", "Create", None, -1))
def create_widgets(self):
self.setObjectName("FingerSetUp")
self.resize(360, 501)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
self.verticalLayoutWidget = QtWidgets.QWidget(self)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 340, 480))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(3, 10, 3, 5)
self.verticalLayout.setObjectName("verticalLayout")
self.groupBox = QtWidgets.QGroupBox(self.verticalLayoutWidget)
self.groupBox.setObjectName("groupBox")
self.gridLayoutWidget = QtWidgets.QWidget(self.groupBox)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 20, 311, 321))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(10, 0, 10, -1)
self.gridLayout.setObjectName("gridLayout")
self.label_ringjoint = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_ringjoint.setMinimumSize(QtCore.QSize(0, 20))
self.label_ringjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_ringjoint.setObjectName("label_ringjoint")
self.gridLayout.addWidget(self.label_ringjoint, 6, 0, 1, 1)
self.lineedit_thumbname = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_thumbname.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_thumbname.setMaximumSize(QtCore.QSize(160, 22))
self.lineedit_thumbname.setObjectName("lineedit_thumbname")
self.gridLayout.addWidget(self.lineedit_thumbname, 1, 1, 1, 2)
self.lineedit_indexname = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_indexname.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_indexname.setMaximumSize(QtCore.QSize(160, 22))
self.lineedit_indexname.setObjectName("lineedit_indexname")
self.gridLayout.addWidget(self.lineedit_indexname, 3, 1, 1, 2)
self.label_middlejoint = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_middlejoint.setMinimumSize(QtCore.QSize(0, 20))
self.label_middlejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_middlejoint.setObjectName("label_middlejoint")
self.gridLayout.addWidget(self.label_middlejoint, 4, 0, 1, 1)
self.lineedit_middlename = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_middlename.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_middlename.setMaximumSize(QtCore.QSize(160, 22))
self.lineedit_middlename.setObjectName("lineedit_middlename")
self.gridLayout.addWidget(self.lineedit_middlename, 5, 1, 1, 2)
self.lineedit_ringname = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_ringname.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_ringname.setMaximumSize(QtCore.QSize(160, 22))
self.lineedit_ringname.setObjectName("lineedit_ringname")
self.gridLayout.addWidget(self.lineedit_ringname, 7, 1, 1, 2)
self.label_indexname = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_indexname.setMinimumSize(QtCore.QSize(0, 20))
self.label_indexname.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_indexname.setObjectName("label_indexname")
self.gridLayout.addWidget(self.label_indexname, 3, 0, 1, 1)
self.lineedit_pinkyname = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_pinkyname.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_pinkyname.setMaximumSize(QtCore.QSize(160, 22))
self.lineedit_pinkyname.setObjectName("lineedit_pinkyname")
self.gridLayout.addWidget(self.lineedit_pinkyname, 9, 1, 1, 2)
self.label_ringname = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_ringname.setMinimumSize(QtCore.QSize(0, 20))
self.label_ringname.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_ringname.setObjectName("label_ringname")
self.gridLayout.addWidget(self.label_ringname, 7, 0, 1, 1)
self.label_handcontroller = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_handcontroller.setMinimumSize(QtCore.QSize(0, 20))
self.label_handcontroller.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_handcontroller.setObjectName("label_handcontroller")
self.gridLayout.addWidget(self.label_handcontroller, 11, 0, 1, 1)
self.label_middlename = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_middlename.setMinimumSize(QtCore.QSize(0, 20))
self.label_middlename.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_middlename.setObjectName("label_middlename")
self.gridLayout.addWidget(self.label_middlename, 5, 0, 1, 1)
self.label_thumbjoint = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_thumbjoint.setMinimumSize(QtCore.QSize(0, 20))
self.label_thumbjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_thumbjoint.setObjectName("label_thumbjoint")
self.gridLayout.addWidget(self.label_thumbjoint, 0, 0, 1, 1)
self.label_indexjoint = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_indexjoint.setMinimumSize(QtCore.QSize(0, 20))
self.label_indexjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_indexjoint.setObjectName("label_indexjoint")
self.gridLayout.addWidget(self.label_indexjoint, 2, 0, 1, 1)
self.lineedit_thumbjoint = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_thumbjoint.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_thumbjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_thumbjoint.setObjectName("lineedit_thumbjoint")
self.gridLayout.addWidget(self.lineedit_thumbjoint, 0, 1, 1, 1)
self.pushbutton_thumbjoint = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushbutton_thumbjoint.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_thumbjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_thumbjoint.setObjectName("pushbutton_thumbjoint")
self.gridLayout.addWidget(self.pushbutton_thumbjoint, 0, 2, 1, 1)
self.lineedit_pinkyjoint = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_pinkyjoint.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_pinkyjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_pinkyjoint.setObjectName("lineedit_pinkyjoint")
self.gridLayout.addWidget(self.lineedit_pinkyjoint, 8, 1, 1, 1)
self.lineedit_indexjoint = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_indexjoint.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_indexjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_indexjoint.setObjectName("lineedit_indexjoint")
self.gridLayout.addWidget(self.lineedit_indexjoint, 2, 1, 1, 1)
self.label_pinkyname = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_pinkyname.setMinimumSize(QtCore.QSize(0, 20))
self.label_pinkyname.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_pinkyname.setObjectName("label_pinkyname")
self.gridLayout.addWidget(self.label_pinkyname, 9, 0, 1, 1)
self.lineedit_ringjoint = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_ringjoint.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_ringjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_ringjoint.setObjectName("lineedit_ringjoint")
self.gridLayout.addWidget(self.lineedit_ringjoint, 6, 1, 1, 1)
self.label_thumbname = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_thumbname.setMinimumSize(QtCore.QSize(0, 20))
self.label_thumbname.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_thumbname.setAutoFillBackground(False)
self.label_thumbname.setObjectName("label_thumbname")
self.gridLayout.addWidget(self.label_thumbname, 1, 0, 1, 1)
self.pushbutton_indexjoint = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushbutton_indexjoint.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_indexjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_indexjoint.setObjectName("pushbutton_indexjoint")
self.gridLayout.addWidget(self.pushbutton_indexjoint, 2, 2, 1, 1)
self.pushbutton_middlejoint = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushbutton_middlejoint.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_middlejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_middlejoint.setObjectName("pushbutton_middlejoint")
self.gridLayout.addWidget(self.pushbutton_middlejoint, 4, 2, 1, 1)
self.pushbutton_ringjoint = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushbutton_ringjoint.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_ringjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_ringjoint.setObjectName("pushbutton_ringjoint")
self.gridLayout.addWidget(self.pushbutton_ringjoint, 6, 2, 1, 1)
self.lineedit_middlejoint = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_middlejoint.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_middlejoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_middlejoint.setObjectName("lineedit_middlejoint")
self.gridLayout.addWidget(self.lineedit_middlejoint, 4, 1, 1, 1)
self.pushbutton_pinkyjoint = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushbutton_pinkyjoint.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_pinkyjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_pinkyjoint.setObjectName("pushbutton_pinkyjoint")
self.gridLayout.addWidget(self.pushbutton_pinkyjoint, 8, 2, 1, 1)
self.label_pinkyjoint = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_pinkyjoint.setMinimumSize(QtCore.QSize(0, 20))
self.label_pinkyjoint.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_pinkyjoint.setObjectName("label_pinkyjoint")
self.gridLayout.addWidget(self.label_pinkyjoint, 8, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 2, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 10, 0, 1, 3)
self.lineedit_handcontroller = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.lineedit_handcontroller.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_handcontroller.setMaximumSize(QtCore.QSize(160, 22))
self.lineedit_handcontroller.setText("")
self.lineedit_handcontroller.setObjectName("lineedit_handcontroller")
self.gridLayout.addWidget(self.lineedit_handcontroller, 11, 1, 1, 1)
self.pushbutton_handcontroller = QtWidgets.QPushButton(self.gridLayoutWidget)
self.pushbutton_handcontroller.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_handcontroller.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_handcontroller.setObjectName("pushbutton_handcontroller")
self.gridLayout.addWidget(self.pushbutton_handcontroller, 11, 2, 1, 1)
self.gridLayoutWidget_2 = QtWidgets.QWidget(self.groupBox)
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 380, 311, 31))
self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setContentsMargins(10, -1, 10, -1)
self.gridLayout_2.setObjectName("gridLayout_2")
self.lineedit_endrad = QtWidgets.QLineEdit(self.gridLayoutWidget_2)
self.lineedit_endrad.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_endrad.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_endrad.setObjectName("lineedit_endrad")
self.gridLayout_2.addWidget(self.lineedit_endrad, 0, 3, 1, 1)
self.lineedit_beginrad = QtWidgets.QLineEdit(self.gridLayoutWidget_2)
self.lineedit_beginrad.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_beginrad.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_beginrad.setObjectName("lineedit_beginrad")
self.gridLayout_2.addWidget(self.lineedit_beginrad, 0, 1, 1, 1)
self.label_endrad = QtWidgets.QLabel(self.gridLayoutWidget_2)
self.label_endrad.setMinimumSize(QtCore.QSize(0, 20))
self.label_endrad.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_endrad.setObjectName("label_endrad")
self.gridLayout_2.addWidget(self.label_endrad, 0, 2, 1, 1)
self.label_beginrad = QtWidgets.QLabel(self.gridLayoutWidget_2)
self.label_beginrad.setMinimumSize(QtCore.QSize(0, 20))
self.label_beginrad.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_beginrad.setObjectName("label_beginrad")
self.gridLayout_2.addWidget(self.label_beginrad, 0, 0, 1, 1)
self.horizontalLayoutWidget = QtWidgets.QWidget(self.groupBox)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 350, 311, 31))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(10, -1, 10, -1)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_prefix = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_prefix.setMinimumSize(QtCore.QSize(0, 20))
self.label_prefix.setMaximumSize(QtCore.QSize(16777215, 22))
self.label_prefix.setObjectName("label_prefix")
self.horizontalLayout.addWidget(self.label_prefix)
self.lineedit_prefix = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
self.lineedit_prefix.setMinimumSize(QtCore.QSize(0, 20))
self.lineedit_prefix.setMaximumSize(QtCore.QSize(16777215, 22))
self.lineedit_prefix.setObjectName("lineedit_prefix")
self.horizontalLayout.addWidget(self.lineedit_prefix)
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.groupBox)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 430, 311, 31))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.pushbutton_create = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
self.pushbutton_create.setMinimumSize(QtCore.QSize(0, 20))
self.pushbutton_create.setMaximumSize(QtCore.QSize(16777215, 22))
self.pushbutton_create.setObjectName("pushbutton_create")
self.horizontalLayout_2.addWidget(self.pushbutton_create)
self.verticalLayout.addWidget(self.groupBox)
try:
Dialog.close()
Dialog.deleteLater()
except:
pass
Dialog = Dialog_Window()
Dialog.show()
...