Skip to content

Instantly share code, notes, and snippets.

@yone80
Last active April 9, 2016 17:38
Show Gist options
  • Save yone80/186bca200b11ed4d24470c6aa51e5e39 to your computer and use it in GitHub Desktop.
Save yone80/186bca200b11ed4d24470c6aa51e5e39 to your computer and use it in GitHub Desktop.
Houdini Python SOP
def checkConnectivity(e1, e2):
chk = e1.points()[0].number == e2.points()[0].number
chk = chk or e1.points()[0].number == e2.points()[1].number
chk = chk or e1.points()[1].number == e2.points()[0].number
chk = chk or e1.points()[1].number == e2.points()[1].number
return chk
node = hou.pwd()
geo = node.geometry()
prefix = node.parm('prefix').eval().strip()
if prefix == '':
prefix = 'edge'
else:
prefix = prefix.replace(' ', '_')
ptn = node.parm('group').eval().strip()
#if ptn == '': ptn = '*'
if ptn != '':
edges = set( geo.globEdges(ptn) )
used_edges = set()
def recursiveConnectedEdges(current, grp):
unused = edges - used_edges # update unused for recursive
for e in unused:
unused = edges - used_edges # update unused for loop
if e in unused:
if(checkConnectivity(current, e)):
used_edges.add(e)
grp.add(e)
recursiveConnectedEdges(e, grp)
i = 1
for e in edges:
unused = edges - used_edges
if e in unused:
used_edges.add(e)
grp = geo.createEdgeGroup( prefix + str(i) )
grp.add(e)
recursiveConnectedEdges(e, grp)
i += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment