GhPython ExtendCurve Problem

Hello,

I am currently writing a python component that extend both sides of a list of curves onto the boundary if both endpoints falls within the boundary.

The list of curves called partitions are input into x and I set it as List Access Curve Type
The boundary I set as Item Access Curve Type

The error shows is Iteration over non-sequence use of polyline curves

Any help will be much appreciated. Thanks.

extendCurve trial.gh (5.8 KB) extendCurve trial.3dm (23.4 KB)

Hope this help:

import Rhino.Geometry as rg
if boundry.Contains(line.To) == rg.PointContainment.Inside and boundry.Contains(line.From) == rg.PointContainment.Inside:
    curve = line.ToNurbsCurve()
    a = curve.Extend(rg.CurveEnd.Both, rg.CurveExtensionStyle.Line, [boundry]);

ExtendCurve.gh (2.9 KB)

I tried and it works. Great thanks.

Hi Mahiyar,

I tried your few lines of code and it works perfectly for curves. However if any item in the list to be extended to the boundary is a polyline, the script gives an error when I try also to extend both ends to the boundary.

It says polyline doesn’t have the attribue ‘To’ and in the polyline class of the rhino library, I couldn’t find a way to extract it’s endpoints.

Another way I tried is to explode the all lines, if the length of the list is greater than one, meaning its a polyline, then get the first index and the last index of the exploded list of lines. However, an error msg shows ‘Guid’ object has no attribute ‘ToNurbCurves’.

Do you know anyway I can extend the two ends of the polyline to a boundary that contain it?

Thanks.

extendCurve trial.3dm (22.7 KB) extendCurve trial.gh (11.7 KB)

import Rhino.Geometry as rg
if boundry.Contains(curve.PointAtStart) == rg.PointContainment.Inside and boundry.Contains(curve.PointAtEnd) == rg.PointContainment.Inside:
    a = curve.Extend(rg.CurveEnd.Both, rg.CurveExtensionStyle.Line, [boundry])

ExtendCurve.gh (3.3 KB)

1 Like

Amazing thanks.