Files
Nexus/2025/scripts/modeling_tools/ModIt/Modeling/ModIt_2Bevels_UI.py
2025-12-05 08:08:44 +08:00

250 lines
6.9 KiB
Python

##--------------------------------------------------------------------------
## ScriptName : ModIt 3.0
## Author : Wizix
## StartDate : 2022/09/09
## LastUpdate : 2022/13/09
## Version : 0.0.1
##-------------------------------------------------------------------------- I M P O R T
from maya import cmds as mc
try:
from PySide6 import QtWidgets, QtCore, QtGui
from PySide6.QtWidgets import *
from PySide6.QtGui import *
from PySide6.QtCore import *
from shiboken6 import wrapInstance
except ImportError:
from PySide2 import QtWidgets, QtCore, QtGui
from shiboken2 import wrapInstance
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QWidget
import shiboken2
from maya import OpenMayaUI as omui
##---------------------------------------- Import Modules
import importlib
from .. import ModIt_Global
importlib.reload(ModIt_Global)
from .. import ModIt_CSS
importlib.reload(ModIt_CSS)
##---------------------------------------- Import Classes
##-------------------------------------------------------------------------- G L O B A L V A R
##PATH_SET
IconPath = ModIt_Global.IconsPathThemeClassic
PreferencePath = ModIt_Global.PreferencePath
ToolsPath = ModIt_Global.ToolPath
WindowsTitle = "Bevel2"
BevelA = ""
BevelB = ""
##UI INFO
# ________________//
# ___________________________________________
# ________________//
def SEND_INFO(BevelA_node, BevelB_node):
global BevelA
BevelA = BevelA_node
global BevelB
BevelB = BevelB_node
return BevelA + BevelB
class Bevel2_UI(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Bevel2_UI, self).__init__()
self.setMinimumSize(420, 100)
self.buildUI()
#Wireframe OnSHade ON
viewport = mc.getPanel(withFocus=True)
mc.modelEditor(viewport, edit=True, wireframeOnShaded=True)
def buildUI(self):
##UI - Preferences
iconButtonSize = 10
# ________________//
# ___________________________________________## UI
# ________________//
BEVELS2_MLyt = QtWidgets.QVBoxLayout(self)
self.setStyleSheet(ModIt_Global.Theme)
Title = QtWidgets.QLabel(" - M i x e d B e v e l s - ")
Title.setAlignment(QtCore.Qt.AlignCenter)
BEVELS2_MLyt.addWidget(Title)
BEVELS2_MLyt.addSpacing(10)
# ___________________________________________## BEVEL A
SliderA_HLyt = QtWidgets.QHBoxLayout(self)
BEVELS2_MLyt.addLayout(SliderA_HLyt)
BevA_Title = QtWidgets.QLabel(" - Bevel A ")
SliderA_HLyt.addWidget(BevA_Title)
self.BevelA_Slider = QtWidgets.QSlider()
self.BevelA_Slider.setMinimum(1)
self.BevelA_Slider.setMaximum(95)
self.BevelA_Slider.setProperty("value", 50)
self.BevelA_Slider.setOrientation(QtCore.Qt.Horizontal)
self.BevelA_Slider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.BevelA_Slider.setTickInterval(1)
self.BevelA_Slider.setFixedHeight(22)
self.BevelA_Slider.valueChanged.connect(self.SliderA_Action)
SliderA_HLyt.addWidget(self.BevelA_Slider)
self.BevelA_SpinBox = QtWidgets.QDoubleSpinBox()
self.BevelA_SpinBox.setDecimals(2)
self.BevelA_SpinBox.setFixedWidth(40)
self.BevelA_SpinBox.setFixedHeight(18)
self.BevelA_SpinBox.setRange(0.01, 0.95)
self.BevelA_SpinBox.setValue(0.5)
self.BevelA_SpinBox.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
self.BevelA_SpinBox.editingFinished.connect(self.SpinBoxA_Action)
SliderA_HLyt.addWidget(self.BevelA_SpinBox)
BEVELS2_MLyt.addSpacing(5)
# ___________________________________________## BEVEL B
SliderB_HLyt = QtWidgets.QHBoxLayout(self)
BEVELS2_MLyt.addLayout(SliderB_HLyt)
BevB_Title = QtWidgets.QLabel(" - Bevel B ")
SliderB_HLyt.addWidget(BevB_Title)
self.BevelB_Slider = QtWidgets.QSlider()
self.BevelB_Slider.setMinimum(1)
self.BevelB_Slider.setMaximum(95)
self.BevelB_Slider.setProperty("value", 50)
self.BevelB_Slider.setOrientation(QtCore.Qt.Horizontal)
self.BevelB_Slider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.BevelB_Slider.setTickInterval(1)
self.BevelB_Slider.setFixedHeight(22)
self.BevelB_Slider.valueChanged.connect(self.SliderB_Action)
SliderB_HLyt.addWidget(self.BevelB_Slider)
self.BevelB_SpinBox = QtWidgets.QDoubleSpinBox()
self.BevelB_SpinBox.setDecimals(2)
self.BevelB_SpinBox.setFixedWidth(40)
self.BevelB_SpinBox.setFixedHeight(18)
self.BevelB_SpinBox.setRange(0.01, 0.95)
self.BevelB_SpinBox.setValue(0.5)
self.BevelB_SpinBox.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
self.BevelB_SpinBox.editingFinished.connect(self.SpinBoxB_Action)
SliderB_HLyt.addWidget(self.BevelB_SpinBox)
BEVELS2_MLyt.addStretch()
def Action(self):
pass
def SliderA_Action(self):
BevelAValue = self.BevelA_Slider.value()/100
self.BevelA_SpinBox.setValue(BevelAValue)
mc.setAttr(str(BevelA) + ".fraction", BevelAValue)
def SpinBoxA_Action(self):
SpinBoxAValue = self.BevelA_SpinBox.value()*100
self.BevelA_Slider.setValue(SpinBoxAValue)
self.BevelA_SpinBox.clearFocus()
def SliderB_Action(self):
BevelBValue = self.BevelB_Slider.value()/100
self.BevelB_SpinBox.setValue(BevelBValue)
mc.setAttr(str(BevelB) + ".fraction", BevelBValue)
def SpinBoxB_Action(self):
SpinBoxBValue = self.BevelB_SpinBox.value()*100
self.BevelB_Slider.setValue(SpinBoxBValue)
self.BevelB_SpinBox.clearFocus()
def Dock(Widget, width=200, height=200, hp="free", show=True):
label = getattr(Widget, "label", WindowsTitle)
try:
mc.deleteUI(WindowsTitle)
except RuntimeError:
pass
dockControl = mc.workspaceControl(
WindowsTitle,
initialWidth=width,
minimumWidth=False,
widthProperty=hp,
heightProperty=hp,
label=label
)
dockPtr = omui.MQtUtil.findControl(dockControl)
dockWidget = wrapInstance(int(dockPtr), QtWidgets.QWidget)
dockWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose)
child = Widget(dockWidget)
dockWidget.layout().addWidget(child)
if show:
mc.evalDeferred(
lambda *args: mc.workspaceControl(
dockControl,
edit=True,
widthProperty="free",
restore=True
)
)
return child
def showUI():
ui = Dock(Bevel2_UI)
ui.show()
# Get a pointer and convert it to Qt Widget object
qw = omui.MQtUtil.findWindow(WindowsTitle)
widget = wrapInstance(int(qw), QWidget)
# Create a QIcon object
icon = QIcon(IconPath + "ModIt_Window_Ico.png")
# Assign the icon
widget.setWindowIcon(icon)
return ui