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 QtCorefrom PySide import QtGuiparm = 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 QtCorefrom PySide import QtGuiparm = 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 toolutilsviewer = toolutils.sceneViewer()geo = viewer.selectGeometry()parm = kwargs["parms"][0]parm.set(str(geo))