Parm Menu Scripts
PARMmenu.xml
<?xml version="1.0" encoding="UTF-8"?>
<menuDocument>
<menu>
<separatorItem></separatorItem>
<scriptItem id="key_baker">
<label>Key Baker</label>
<scriptPath>$HOME/houdini15.5/scripts/Parm Insert.py</scriptPath>
</scriptItem>
</menu>
</menuDocument>
Key Baker
parm = kwargs["parms"]
framerange = range(int(hou.expandString('$RFSTART')), int(hou.expandString('$RFEND')) + 1 )
for i in parm:
keyVals = {}
for kf in framerange:
keyVals[kf] = i.evalAtFrame(kf)
i.deleteAllKeyframes()
for kf in framerange:
setKey = hou.Keyframe()
setKey.setFrame(kf)
setKey.setValue( keyVals[kf] )
i.setKeyframe(setKey)
Parm Layout Up
from PySide import QtCore
from PySide import QtGui
parm = kwargs["parms"][0]
parmTmp = parm.parmTemplate()
node = parm.node()
parmGroup = node.parmTemplateGroup()
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
Lbox = QtGui.QVBoxLayout()
mpos = QtGui.QCursor().pos()
self.setGeometry(mpos.x() - 100 ,mpos.y() - 200 ,250,120)
self.setWindowTitle('Parm Up & Down')
self.checkBox = QtGui.QCheckBox('Keep in Current Folder', self)
Lbox.addWidget(self.checkBox)
upButton = QtGui.QPushButton('Up', self)
Lbox.addWidget(upButton)
upButton.clicked.connect( self.upButtonPress )
downButton = QtGui.QPushButton('Down', self)
Lbox.addWidget(downButton)
downButton.clicked.connect( self.downButtonPress )
self.setLayout(Lbox)
def HierarchyIndexies(self):
return parmGroup.findIndices(parmTmp)
def HierarchyFolders(self):
curFolder = parmGroup
parmHierarchy = [curFolder]
for i in self.HierarchyIndexies():
curItem = curFolder.parmTemplates()[i]
if curItem.type().name() == "Folder":
curFolder = curItem
parmHierarchy.append(curItem)
return parmHierarchy
def upButtonPress(self):
index = self.HierarchyIndexies()[-1]
folder = self.HierarchyFolders()[-1]
if index == 0:
parmNext = folder
else:
parmNext = folder.parmTemplates()[index-1]
if not (index == 0 and self.checkBox.isChecked()):
parmGroup.remove(parmTmp)
parmRef = parmGroup.find(parmNext.name())
if index != 0 and parmRef.type().name() == "Folder" and not self.checkBox.isChecked():
parmGroup.appendToFolder(parmRef,parmTmp)
else:
parmGroup.insertBefore(parmRef,parmTmp)
node.setParmTemplateGroup(parmGroup)
def downButtonPress(self):
index = self.HierarchyIndexies()[-1]
folder = self.HierarchyFolders()[-1]
folNum = len(folder.parmTemplates())-1
if index == folNum:
parmNext = folder
else:
parmNext = folder.parmTemplates()[index+1]
if not (index == folNum and self.checkBox.isChecked()):
parmGroup.remove(parmTmp)
parmRef = parmGroup.find(parmNext.name())
if index != folNum and parmRef.type().name() == "Folder" and not self.checkBox.isChecked():
if len(parmRef.parmTemplates()) != 0:
parmGroup.insertBefore(parmRef.parmTemplates()[0],parmTmp)
else:
parmGroup.appendToFolder(parmRef,parmTmp)
else:
parmGroup.insertAfter(parmRef,parmTmp)
node.setParmTemplateGroup(parmGroup)
dialog = Example()
dialog.show()
Parm Insert
parm = kwargs["parms"][0]
parmTmp = parm.parmTemplate()
node = parm.node()
parmGroup = node.parmTemplateGroup()
newParm = hou.FloatParmTemplate("newParm", "NewParm", 1)
parmGroup.insertAfter(parmTmp,newParm)
node.setParmTemplateGroup(parmGroup)
Parm Insert(PySide)
from PySide import QtCore
from PySide import QtGui
parm = kwargs["parms"][0]
parmTmp = parm.parmTemplate()
node = parm.node()
parmGroup = node.parmTemplateGroup()
class Panel(QtGui.QWidget):
def __init__(self):
super(Panel, self).__init__()
self.initUI()
def initUI(self):
Lbox = QtGui.QGridLayout()
mpos = QtGui.QCursor().pos()
self.setGeometry(mpos.x() - 100 ,mpos.y() - 200 ,250,120)
self.setWindowTitle('Parm Insert')
label_Name = QtGui.QLabel('Name:')
Lbox.addWidget(label_Name,0,0)
label_Label = QtGui.QLabel('Label:')
Lbox.addWidget(label_Label,1,0)
Type_Label = QtGui.QLabel('Type:')
Lbox.addWidget(Type_Label,2,0)
text_Name = QtGui.QLineEdit("newParm",self)
text_Name.textChanged.connect(lambda: self.onTextChanged( text_Name, text_Label ) )
Lbox.addWidget(text_Name,0,1)
text_Label = QtGui.QLineEdit("newLabel",self)
Lbox.addWidget(text_Label,1,1)
parmType = QtGui.QComboBox(self)
parmType.addItems(["Float","Vector","Int","String","Ramp_Float", "Ramp_Color"])
Lbox.addWidget(parmType,2,1)
button = QtGui.QPushButton("Create Parm" , self)
button.clicked.connect(lambda: self.pressButton( text_Name.text(),text_Label.text(), parmType.currentText() ) )
Lbox.addWidget(button,3,1)
self.onTextChanged( text_Name, text_Label )
self.setLayout(Lbox)
def pressButton(self, name, label, ptype):
if not parmGroup.find(name):
if ptype == "Float":
newParm = hou.FloatParmTemplate(name, label, 1)
elif ptype == "Vector":
newParm = hou.FloatParmTemplate(name, label, 3)
elif ptype == "Int":
newParm = hou.IntParmTemplate(name, label, 1)
elif ptype == "String":
newParm = hou.StringParmTemplate(name, label, 1)
elif ptype == "Ramp_Float":
newParm = hou.RampParmTemplate(name, label, ramp_parm_type=hou.rampParmType.Float)
elif ptype == "Ramp_Color":
newParm = hou.RampParmTemplate(name, label, ramp_parm_type=hou.rampParmType.Color)
parmGroup.insertAfter(parmTmp,newParm)
node.setParmTemplateGroup(parmGroup)
else:
msgBox = QtGui.QMessageBox(self)
msgBox.setText( 'F**k! "%s" is Already Exist' % name)
msgBox.show();
self.close()
def onTextChanged(self , name, label):
if not parmGroup.find(name.text()):
name.setStyleSheet("background-color: rgb(255, 255, 255);")
else:
name.setStyleSheet("background-color: rgb(255, 107, 107);")
text = name.text()
label.setText( text[0].upper() + text[1:] )
dialog = Panel()
dialog.show()
Make Selection List of the polygon number
import toolutils
viewer = toolutils.sceneViewer()
geo = viewer.selectGeometry()
parm = kwargs["parms"][0]
parm.set(str(geo))