Hougraph source
From DreamsteepWiki
THIS IS A SKETCH OF AN IDEA TO BECOME A WORKING FRAMEWORK UPDATED JULY 1 2010
"""
THIS WILL ONLY WORK WHEN USED THROUGH HOUDINI
(add /sma/kl_py_sys/ to PATH in houdini py shell )
###
created nov 24,2007
updated june 30,2010
MODES : BATCH , EXPOT SCRIPT, RUN LIVE VIA TCP
"""
import sys_data_tree
import sys_kernel
try:
import hou
except:
print 'WARN NO HOUDINI SUPPORT FROM CURRENT SHELL '
raise 'sys_houdinilink::NO HOU MODULE FOUND'
##
GLOB = sys_kernel.sys_globals()
globalvars= GLOB.get()
##
HOUDINIPATH =globalvars[10]
print 'hpath@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
print HOUDINIPATH
"""
#print dir(sub_HSOP)
C:\Program Files\Side Effects Software\Houdini 9.0.719\bin\hython.exe
#OTHER RELAVANT LINKS
C:\Program Files\Side Effects Software\Houdini 9.0.719\bin\hscript.exe
####
mplay.exe
"""
#print hou
#hou.node('/obj')
#######################################################
class HOUDINI_SOP_GRAPH(sys_data_tree.data_graph):
#def __init__(self):
NODES_CREATED = []
#######################################################
class houd_SOP_NODE(sys_data_tree.node_base):
##########
#def __init__(self):
def __init__(self, node):
self.node = node
self.NODES_CREATED =[]
self.currentpath = '/obj'
##########
##########
##########
def parentnode(self,pnode,cnode):
#NODE = hou.node(self.currentpath).createNode(self.defaulttype)
#print self.name
print self.defaulttype
#self.NODES_CREATED.append(NODE)
##########
#########
"""
example of some derived nodes and functions
"""
class edit_HSOP(houd_SOP_NODE):
def __init__(self, node):
self.node = node
self.name = ''
def clearscene(self):
print 'SOFIST!'
#NODE = hou.node(self.currentpath).createNode(self.defaulttype)
#self.NODES_CREATED.append(NODE)
hou.hipFile.clear()
class add_HSOP(houd_SOP_NODE):
def __init__(self, node):
self.node = node
self.currentpath = '/obj'
self.defaulttype = 'geo'
def addnode(self,name):
NODE = hou.node(self.currentpath).createNode(self.defaulttype)
#print self.name
#print self.defaulttype
########################################
########################################
"""
HG = HOUDINI_SOP_GRAPH('HGRAPH')
N1 = houd_SOP_NODE('TNOD')
N2 = edit_HSOP('NUENODER')
N3 = add_HSOP('fooey')
#RUN A COMMAND
N1.settype('wolf')
N2.settype('qwoulfy')
HG.add(N1)
HG.add(N2)
###
N2.clearscene()
N3.addnode('xxx')
#run a derived datanode com :
#N1.help()
HG.dumpall()
###
#HG.dumpall()
#HG.save_graph_file('C:/HOUDINI_COMMAND_GRAPH.txt')
"""
########################################
########################################
#######################################################
class HOUDINI_COP_GRAPH(sys_data_tree.data_graph):
def __init__(self, node):
self.node = node
self.INPUTNODES = []
self.PROCESSINGNODES = []
#self.INPUTNODES = []
####
def export_shk(self):
pass
####
def import_shk(self):
pass
####
def add_layer(self,layername,input1,input2):
#Layer1 = Layer(crop_1_3___, ColorWheel1, "Over", 0, 0, 0);
pass
##########################
"""
#QUICK INSTRUCTIONS
import sys_data_tree
#CREATE A GRAPH
graph = sys_data_tree.data_graph('NEWCHAR')
#CREATE SOME NODES
node = sys_data_tree.node_base('INPUTS')
node2 = sys_data_tree.node_base('OUTPUTS')
node3 = sys_data_tree.node_base('TYPE')
node4 = sys_data_tree.node_base('frug')
node5 = sys_data_tree.node_base('brugh')
#SET THE TYPES
node.settype('wolf')
node2.settype('bear')
node3.settype('quadrowolf')
#ADD ONE OR MORE ATTRIBUTES TO A NODE AND SET VALUE
node.addattr('sparky',2.1)
node.addattr('kranker','tweeky')
node2.addattr('plugger','ee4.32')
#node3.addattr('sparrrky',2.1)
#node4.addattr('sparreeky',2.1)
#node5.addattr('sparrreeeky',2.1)
#LIST A NODES ATTRIBUTES
#node2.listallattrs()
#RETURN A NODES ATTRIBUTES
#print node.getattrib('kranker')
#print node2.gettype()
#print node3.getname()
#ADD NODES TO GRAPH
graph.add(node)
graph.add(node2)
graph.add(node3)
graph.add(node4)
graph.add(node5)
##USE THE GRAPH TO LINK NODES INTO A TREE
graph.link(node,node2)
graph.link(node3,node2)
graph.link(node4,node2)
SET PARENTING AS WELL AS LINKS (parented node trees can be linked, as well)
graph.parent_obj(node2,node)
graph.parent_obj(node3,node2)
graph.parent_obj(node4,node)
graph.parent_obj(node5,node)
#LIST ALL NODES
#print graph.listnodes('name')
#print node.listoutputs()
######################################
#SHOW NODE LINKS
#clear buffers
#graph.setupwalk()
#print graph.walklinked('INPUTS','name')
######################################
#graph.setupwalk()
#print graph.walk_up_linked('INPUTS','name')
######################################
#SHOW PARENTING
#clear buffers
#graph.setupwalk()
#graph.walk('INPUTS','name')
######################################
#print graph.list_parents(node3)
#print graph.list_parents_name('brugh')
#print graph.find_node('nodenamer')
################
#if graph.is_parent_of(node,node3):
# print 'hell yeah'
#graph.dumpall()
######################################
#SAVE AN XML
graph.setupwalk()
graph.save_XML_file('C:/pus.xml','INPUTS')
######################################
#LOAD AN XML (NOT DONE YET)
newgraf = sys_data_tree.data_graph('NGBEE')
newgraf.setupwalk()
newgraf.load_XML_file('C:/pus.xml')
newgraf.dumpall()
######################################
#graph.dumpall()
######################################
"""
"""
dir(hou)
hou.cd('/')
hou.pwd()
hou.node('/obj')
hou.setTime(100)
"""
"""
class NodeWrapper:
def __init__(self, node):
self.node = node
def __getattr__(self, name):
# First check for children nodes:
child = self.node.node(name)
if child is not None:
return NodeWrapper(child)
# Now check for parameters:
parm = self.node.parm(name)
if parm is not None:
return parm
# Do a normal attribute lookup:
return getattr(self.node, name)
Scene = NodeWrapper(hou.node("/obj"))
If /obj/geo1 is a geo object, you can write:
CODE
>>> Scene.geo1.tx.eval()
0.0
>>> Scene.geo1.tx.set(1.0)
"""

