﻿Intersection.CurveCurve Method

Finds the intersections between two curves.

Namespace:  Rhino.Geometry.Intersect
Assembly:  RhinoCommon (in RhinoCommon.dll)
Syntax
```public static CurveIntersections CurveCurve(
Curve curveA,
Curve curveB,
double tolerance,
double overlapTolerance
)```

#### Parameters

curveA
Type: Rhino.GeometryCurve
First curve for intersection.
curveB
Type: Rhino.GeometryCurve
Second curve for intersection.
tolerance
Type: SystemDouble
Intersection tolerance. If the curves approach each other to within tolerance, an intersection is assumed.
overlapTolerance
Type: SystemDouble
The tolerance with which the curves are tested.

#### Return Value

Type: CurveIntersections
A collection of intersection events.
Examples
```partial class Examples
{
public static Rhino.Commands.Result IntersectCurves(Rhino.RhinoDoc doc)
{
// Select two curves to intersect
var go = new Rhino.Input.Custom.GetObject();
go.SetCommandPrompt("Select two curves");
go.GeometryFilter = Rhino.DocObjects.ObjectType.Curve;
go.GetMultiple(2, 2);
if (go.CommandResult() != Rhino.Commands.Result.Success)
return go.CommandResult();

// Validate input
var curveA = go.Object(0).Curve();
var curveB = go.Object(1).Curve();
if (curveA == null || curveB == null)
return Rhino.Commands.Result.Failure;

// Calculate the intersection
const double intersection_tolerance = 0.001;
const double overlap_tolerance = 0.0;
var events = Rhino.Geometry.Intersect.Intersection.CurveCurve(curveA, curveB, intersection_tolerance, overlap_tolerance);

// Process the results
if (events != null)
{
for (int i = 0; i < events.Count; i++)
{
var ccx_event = events[i];
if (ccx_event.PointA.DistanceTo(ccx_event.PointB) > double.Epsilon)
{
}
}
doc.Views.Redraw();
}
return Rhino.Commands.Result.Success;
}
}```
```import Rhino
import scriptcontext

def IntersectCurves():
# Select two curves to intersect
go = Rhino.Input.Custom.GetObject()
go.SetCommandPrompt("Select two curves")
go.GeometryFilter = Rhino.DocObjects.ObjectType.Curve
go.GetMultiple(2, 2)
if go.CommandResult()!=Rhino.Commands.Result.Success: return

# Validate input
curveA = go.Object(0).Curve()
curveB = go.Object(1).Curve()
if not curveA or not curveB: return

# Calculate the intersection
intersection_tolerance = 0.001
overlap_tolerance = 0.0
events = Rhino.Geometry.Intersect.Intersection.CurveCurve(curveA, curveB, intersection_tolerance, overlap_tolerance)

# Process the results
if not events: return
for ccx_event in events:
if ccx_event.PointA.DistanceTo(ccx_event.PointB) > float.Epsilon:
scriptcontext.doc.Views.Redraw()

if __name__=="__main__":
IntersectCurves()```
Version Information

#### Rhino for Mac

Supported in: 5.4

#### Rhino for Windows

Supported in: 6.5