M_Rhino_Geometry_Vector3d_IsParallelTo - mcneel/rhinocommon-api-docs GitHub Wiki

Vector3d.IsParallelTo Method (Vector3d)

Determines whether this vector is parallel to another vector, within one degree (within Pi / 180).

Namespace: Rhino.Geometry
Assembly: RhinoCommon (in RhinoCommon.dll) Version: Rhino 6.0

Syntax

C#

public int IsParallelTo(
	Vector3d other
)

VB

Public Function IsParallelTo ( 
	other As Vector3d
) As Integer

Parameters

 

other
Type: Rhino.Geometry.Vector3d
Vector to use for comparison.

Return Value

Type: Int32
Parallel indicator: +1 = both vectors are parallel

0 = vectors are not parallel, or at least one of the vectors is zero

-1 = vectors are anti-parallel.

Examples

VB

Imports Rhino.Geometry

Partial Class Examples
  Public Shared Function IntersectLines(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
    Dim go As New Rhino.Input.Custom.GetObject()
    go.SetCommandPrompt("Select lines")
    go.GeometryFilter = Rhino.DocObjects.ObjectType.Curve
    go.GetMultiple(2, 2)
    If go.CommandResult() <> Rhino.Commands.Result.Success Then
      Return go.CommandResult()
    End If
    If go.ObjectCount <> 2 Then
      Return Rhino.Commands.Result.Failure
    End If

    Dim crv0 As LineCurve = TryCast(go.Object(0).Geometry(), LineCurve)
    Dim crv1 As LineCurve = TryCast(go.Object(1).Geometry(), LineCurve)
    If crv0 Is Nothing OrElse crv1 Is Nothing Then
      Return Rhino.Commands.Result.Failure
    End If

    Dim line0 As Line = crv0.Line
    Dim line1 As Line = crv1.Line
    Dim v0 As Vector3d = line0.Direction
    v0.Unitize()
    Dim v1 As Vector3d = line1.Direction
    v1.Unitize()

    If v0.IsParallelTo(v1) <> 0 Then
      Rhino.RhinoApp.WriteLine("Selected lines are parallel.")
      Return Rhino.Commands.Result.[Nothing]
    End If

    Dim a As Double, b As Double
    If Not Rhino.Geometry.Intersect.Intersection.LineLine(line0, line1, a, b) Then
      Rhino.RhinoApp.WriteLine("No intersection found.")
      Return Rhino.Commands.Result.[Nothing]
    End If

    Dim pt0 As Point3d = line0.PointAt(a)
    Dim pt1 As Point3d = line1.PointAt(b)
    ' pt0 and pt1 should be equal, so we will only add pt0 to the document
    doc.Objects.AddPoint(pt0)
    doc.Views.Redraw()
    Return Rhino.Commands.Result.Success
  End Function
End Class

C#

using Rhino.Geometry;

partial class Examples
{
  public static Rhino.Commands.Result IntersectLines(Rhino.RhinoDoc doc)
  {
    Rhino.Input.Custom.GetObject go = new Rhino.Input.Custom.GetObject();
    go.SetCommandPrompt( "Select lines" );
    go.GeometryFilter = Rhino.DocObjects.ObjectType.Curve;
    go.GetMultiple( 2, 2);
    if( go.CommandResult() != Rhino.Commands.Result.Success )
      return go.CommandResult();
    if( go.ObjectCount != 2 )
      return Rhino.Commands.Result.Failure;

    LineCurve crv0 = go.Object(0).Geometry() as LineCurve;
    LineCurve crv1 = go.Object(1).Geometry() as LineCurve;
    if( crv0==null || crv1==null )
      return Rhino.Commands.Result.Failure;

    Line line0 = crv0.Line;
    Line line1 = crv1.Line;
    Vector3d v0 = line0.Direction;
    v0.Unitize();
    Vector3d v1 = line1.Direction;
    v1.Unitize();

    if( v0.IsParallelTo(v1) != 0 )
    {
      Rhino.RhinoApp.WriteLine("Selected lines are parallel.");
      return Rhino.Commands.Result.Nothing;
    }

    double a, b;
    if( !Rhino.Geometry.Intersect.Intersection.LineLine(line0, line1, out a, out b))
    {
      Rhino.RhinoApp.WriteLine("No intersection found.");
      return Rhino.Commands.Result.Nothing;
    }

    Point3d pt0 = line0.PointAt(a);
    Point3d pt1 = line1.PointAt(b);
    // pt0 and pt1 should be equal, so we will only add pt0 to the document
    doc.Objects.AddPoint( pt0 );
    doc.Views.Redraw();
    return Rhino.Commands.Result.Success;
  }
}

Python

import Rhino
import scriptcontext

def IntersectLines():
    go = Rhino.Input.Custom.GetObject()
    go.SetCommandPrompt( "Select lines" )
    go.GeometryFilter = Rhino.DocObjects.ObjectType.Curve
    go.GetMultiple( 2, 2)
    if go.CommandResult()!=Rhino.Commands.Result.Success:
      return go.CommandResult()
    if go.ObjectCount!=2: return Rhino.Commands.Result.Failure

    crv0 = go.Object(0).Geometry()
    crv1 = go.Object(1).Geometry()
    if not crv0 or not crv1: return Rhino.Commands.Result.Failure

    line0 = crv0.Line
    line1 = crv1.Line
    v0 = line0.Direction
    v0.Unitize()
    v1 = line1.Direction
    v1.Unitize()

    if v0.IsParallelTo(v1)!=0:
        print "Selected lines are parallel."
        return Rhino.Commands.Result.Nothing

    rc, a, b = Rhino.Geometry.Intersect.Intersection.LineLine(line0, line1)
    if not rc:
        print "No intersection found."
        return Rhino.Commands.Result.Nothing

    pt0 = line0.PointAt(a)
    pt1 = line1.PointAt(b)
    # pt0 and pt1 should be equal, so we will only add pt0 to the document
    scriptcontext.doc.Objects.AddPoint(pt0)
    scriptcontext.doc.Views.Redraw()
    return Rhino.Commands.Result.Success

if __name__=="__main__":
    IntersectLines()

Version Information

Supported in: 6.0.16224.21491, 5D58w

See Also

Reference

Vector3d Structure
IsParallelTo Overload
Rhino.Geometry Namespace

⚠️ **GitHub.com Fallback** ⚠️