Why does my Python component run without error but gives null output?
here my code:
import Rhino.Geometry as rg
import Grasshopper.Kernel as gh
import Grasshopper.Kernel.Data as ghdata
class CircleIntersection(gh.GH_Component):
"""Checks for intersections between circles and draws lines."""
def __init__(self):
super(CircleIntersection, self).__init__("Circle Intersection", "CircleInt", "Checks for intersections between circles and draws lines.", "Custom", "Analysis")
def RegisterInputParams(self):
self.AddParameter(ghparams.GH_PointParam, "Points", "P", "A list of points representing circle centers", ghdata.GH_ParamAccess.item)
self.AddParameter(ghparams.GH_NumberParam, "Radius", "R", "The radius of the circles", ghdata.GH_ParamAccess.item)
def RegisterOutputParams(self, pManager):
self.AddParameter(ghparams.GH_LineParam, "Lines", "L", "Lines connecting intersecting circles", ghdata.GH_ParamAccess.list)
self.AddParameter(ghparams.GH_BoolParam, "Intersections", "I", "Boolean indicating if circles intersect", ghdata.GH_ParamAccess.list)
def SolveInstance(self, doc, DA):
points = self.GetInput(0).CastTo<list[rg.Point3d]>()
radius = self.GetInput(1).CastTo<float>()
print("Points:", points)
print("Radius:", radius)
if not points or radius <= 0:
print("Invalid input: Points must be non-empty and radius must be positive.")
return
circles = [rg.Circle(pt, radius) for pt in points]
print("Circles:", circles)
lines = []
intersections = []
for i in range(len(circles)):
for j in range(i + 1, len(circles)):
intersection_result = rg.Intersection.CurveCurve(circles[i], circles[j])
print("Intersection Result for Circles {} and {}: {}".format(i, j, intersection_result))
if intersection_result.Count > 0:
line = rg.Line(circles[i].Center, circles[j].Center)
lines.append(line)
intersections.append(True)
else:
intersections.append(False)
print("Lines:", lines)
print("Intersections:", intersections)
DA.SetDataList(0, lines)
DA.SetDataList(1, intersections)
and screenshot