Just luckily solved it myself if anyone has the same issue here’s my solution
Python
# Assign curves to groups according to whether they are connected via shared start points and end points. Group numbers are not important.
# Colin McCrone, 2015-09-28
import clr
import math
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Determine whether two points are equal
def PointsEqual(pt1, pt2):
tolerance = 0.00001
if (math.fabs(pt1.X - pt2.X) < tolerance and
math.fabs(pt1.Y - pt2.Y) < tolerance and
math.fabs(pt1.Z - pt2.Z) < tolerance):
return True
else:
return False
# Get input
crvs = IN[0]
# List the group to which each curve belongs
crvGroup = [-1 for x in range(len(crvs))]
crvGroup[0] = 0
maxGroupNum = 1
# Find start and end points for each curve
starts = []
ends = []
for crv in crvs:
starts.append(Curve.PointAtParameter(crv,0))
ends.append(crv.PointAtParameter(1))
# Find connected groups of curves
for i in range(len(crvs)):
# Add i to its own group it not already part of a group
if (crvGroup[i] == -1):
crvGroup[i] = i
# Find connections
for j in range(len(crvs)):
if (i != j and
(PointsEqual(starts[i], starts[j]) or
PointsEqual(starts[i], ends[j]) or
PointsEqual(ends[i], starts[j]) or
PointsEqual(ends[i], ends[j]))):
# Add j to i group
if (crvGroup[j] == -1):
crvGroup[j] = crvGroup[i]
# Add j group to i group
elif (crvGroup[i] != crvGroup[j]):
oldNum = crvGroup[j]
for k in range(len(crvs)):
if (crvGroup[k] == oldNum):
crvGroup[k] = crvGroup[i]
# Output the (arbitrary) group numbers
OUT = crvGroup