OTL Python Modules
To call back
kwargs["node"].hdaModule().somethingDefName()
Get and Set Geometry info
def test():
geo = hou.pwd().geometry()
bbox = geo.boundingBox().minvec() ###min = minvec(), max = maxvec(). size = sizevec(),
center = center()
detail = geo.attribValue("attributeName")
Get and Set Parameter info
def test():
floatparm = hou.Node.evalParm(hou.pwd(), "parm")
vecterParm = hou.Node.evalParmTuple(hou.pwd(), "t") ###You can use it for multiple value
hou.Node.parm(hou.pwd(),"rx").set(50) ###set parameters
hou.Node.parmTuple(hou.pwd(),"r").set([50,50,50]) ###set parameters
Make New Node the example makes object_merge node and merge something from inside of the otl.
def makeMerges(mergeNode,offsetX,offsetY):
node = hou.pwd()
error = ""
pos = node.position()
parent = node.parent()
name = node.name() + "_" + mergeNode + "_merge"
for child in parent.children():
if name == child.name():
error = "ERROR :: Merge Node already exists"
if error:
hou.ui.displayMessage(error)
return 0
merge = parent.createNode("object_merge",name)
merge.move(hou.Vector2(pos[0]+offsetX,pos[1]+offsetY))
merge.parm("objpath1").set(node.path() + "/" + mergeNode)
Copy Rop Nodes
def createmantra():
curROPs = hou.node( hou.pwd().path() + '/ropnet1' ).children()
newROPs = hou.copyNodesTo( curROPs , hou.node('/out') )
for rop in newROPs:
if rop.name() == "ropName":
rop.parm("mantra1_forceobject").set(hou.pwd().name() + "/nodeNameInside")