Intersection

class rhino3dm.Intersection
static LineLine(lineA, lineB)

Intersects two lines.

Parameters:
  • lineA (Line) – First line for intersection.

  • lineB (Line) – Second line for intersection.

  • tolerance (float) – If tolerance > 0.0, then an intersection is reported only if the distance between the points is <= tolerance. If tolerance <= 0.0, then the closest point between the lines is reported.

  • finiteSegments (bool) – If true, the input lines are treated as finite segments. If false, the input lines are treated as infinite lines.

Returns:

tuple (bool, float, float)

  • True if a closest point can be calculated and the result passes the tolerance parameter test; otherwise false.

  • Parameter on lineA that is closest to LineB. The shortest distance between the lines is the chord from lineA.PointAt(a) to lineB.PointAt(b)

  • Parameter on lineB that is closest to LineA. The shortest distance between the lines is the chord from lineA.PointAt(a) to lineB.PointAt(b)

Return type:

(bool, float, float)

static LineLine(lineA, lineB, tolerance, finiteSegments)

Intersects two lines.

Parameters:
  • lineA (Line) – First line for intersection.

  • lineB (Line) – Second line for intersection.

  • tolerance (float) – If tolerance > 0.0, then an intersection is reported only if the distance between the points is <= tolerance. If tolerance <= 0.0, then the closest point between the lines is reported.

  • finiteSegments (bool) – If true, the input lines are treated as finite segments. If false, the input lines are treated as infinite lines.

Returns:

tuple (bool, float, float)

  • True if a closest point can be calculated and the result passes the tolerance parameter test; otherwise false.

  • Parameter on lineA that is closest to LineB. The shortest distance between the lines is the chord from lineA.PointAt(a) to lineB.PointAt(b)

  • Parameter on lineB that is closest to LineA. The shortest distance between the lines is the chord from lineA.PointAt(a) to lineB.PointAt(b)

Return type:

(bool, float, float)

static LinePlane(line, plane)

Intersects a line and a plane. This function only returns True if the intersection result is a single point (i.e. if the line is coincident with the plane then no intersection is assumed).

Parameters:
Returns:

tuple (bool, float)

  • True on success, False on failure.

  • Parameter on line where intersection occurs. If the parameter is not within the {0, 1} Interval then the finite segment does not intersect the plane.

Return type:

(bool, float)

static PlanePlane(planeA, planeB)

Intersects two planes and return the intersection line. If the planes are parallel or coincident, no intersection is assumed.

Parameters:
Returns:

tuple (bool, Line)

  • True on success, False on failure.

  • If this function returns true, the intersectionLine parameter will return the line where the planes intersect.

Return type:

(bool, Line)

static PlanePlanePlane(planeA, planeB, planeC)

Intersects three planes to find the single point they all share.

Parameters:
Returns:

tuple (bool, rhino3dm.Point3d)

  • True on success, False on failure. If at least two out of the three planes are parallel or coincident, failure is assumed.

  • Point where all three planes converge.

Return type:

(bool, rhino3dm.Point3d)

static PlaneSphere(plane, sphere)

Intersects a plane with a sphere using exact calculations.

Parameters:
Returns:

tuple (PlaneSphereIntersection, Circle)

  • If is returned, the intersectionCircle has a radius of zero and the center point is the point on the plane closest to the sphere.

  • Intersection result.

Return type:

(PlaneSphereIntersection, Circle)

static LineCircle(line, circle)

Intersects a line with a circle using exact calculations.

Parameters:
  • line (Line) – Line for intersection.

  • circle (Circle) – Circle for intersection.

Returns:

tuple (LineCircleIntersection, float, rhino3dm.Point3d, float, rhino3dm.Point3d)

  • If is returned, only t1 and point1 will have valid values. If is returned, t2 and point2 will also be filled out.

  • Parameter on line for first intersection.

  • Point on circle closest to first intersection.

  • Parameter on line for second intersection.

  • Point on circle closest to second intersection.

Return type:

(LineCircleIntersection, float, rhino3dm.Point3d, float, rhino3dm.Point3d)

static LineSphere(line, sphere)

Intersects a line with a sphere using exact calculations.

Parameters:
Returns:

tuple (LineSphereIntersection, rhino3dm.Point3d, rhino3dm.Point3d)

  • If is returned, the first point is the point on the line closest to the sphere and the second point is the point on the sphere closest to the line. If is returned, the first point is the point on the line and the second point is the same point on the sphere.

  • First intersection point.

  • Second intersection point.

Return type:

(LineSphereIntersection, rhino3dm.Point3d, rhino3dm.Point3d)

static LineCylinder(line, cylinder)

Intersects a line with a cylinder using exact calculations.

Parameters:
  • line (Line) – Line for intersection.

  • cylinder (Cylinder) – Cylinder for intersection.

Returns:

tuple (LineCylinderIntersection, rhino3dm.Point3d, rhino3dm.Point3d)

  • If None is returned, the first point is the point on the line closest to the cylinder and the second point is the point on the cylinder closest to the line. If is returned, the first point is the point on the line and the second point is the same point on the cylinder.

  • First intersection point.

  • Second intersection point.

Return type:

(LineCylinderIntersection, rhino3dm.Point3d, rhino3dm.Point3d)

static SphereSphere(sphereA, sphereB)

Intersects two spheres using exact calculations.

Parameters:
Returns:

tuple (SphereSphereIntersection, Circle)

  • The intersection type.

  • If intersection is a point, then that point will be the center, radius 0.

Return type:

(SphereSphereIntersection, Circle)

static LineBox(line, box, tolerance)

Intersects an infinite line and an axis aligned bounding box.

Parameters:
  • box (rhino3dm.BoundingBox) – BoundingBox to intersect.

  • line (Line) – Line for intersection.

  • tolerance (float) – If tolerance > 0.0, then the intersection is performed against a box that has each side moved out by tolerance.

Returns:

tuple (bool, rhino3dm.Interval)

  • True if the line intersects the box, False if no intersection occurs.

  • The chord from line.PointAt(lineParameters.T0) to line.PointAt(lineParameters.T1) is the intersection.

Return type:

(bool, rhino3dm.Interval)