Helix
using Autodesk.DesignScript.Interfaces;
using Autodesk.DesignScript.Runtime;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace Autodesk.DesignScript.Geometry
{
public class Helix : Curve
{
internal IHelixEntity HelixEntity => HostImpl as IHelixEntity;
public double Angle => HelixEntity.Angle;
public double Pitch => HelixEntity.Pitch;
public double Radius => HelixEntity.Radius;
public Vector AxisDirection => Vector.Wrap(HelixEntity.AxisDirection, true);
public Point AxisPoint => Point.Wrap(HelixEntity.AxisPoint, true);
internal Helix(IHelixEntity host, bool persist)
: base(host, persist)
{
}
public override string ToString()
{
return "Helix(Angle = " + Angle.ToString(GeometryExtension.DoublePrintFormat, CultureInfo.InvariantCulture) + ", Pitch = " + Pitch.ToString(GeometryExtension.DoublePrintFormat, CultureInfo.InvariantCulture) + ", Radius = " + Radius.ToString(GeometryExtension.DoublePrintFormat, CultureInfo.InvariantCulture) + ", AxisDirection = " + AxisDirection + ", AxisPoint = " + AxisPoint + ")";
}
internal new static void InitType()
{
Geometry.RegisterHostType(typeof(IHelixEntity), (IGeometryEntity host, bool persist) => new Helix(host as IHelixEntity, persist));
}
internal static Helix Wrap(IHelixEntity host, bool persist = true)
{
return Geometry.Wrap(host, false, null) as Helix;
}
internal static Helix[] Wrap(IHelixEntity[] hosts, bool persist = true)
{
return (from x in hosts
select Wrap(x, persist)).ToArray();
}
internal static Helix[][] Wrap(IHelixEntity[][] hosts, bool persist = true)
{
return (from x in hosts
select Wrap(x, persist)).ToArray();
}
internal static IHelixEntity[][] Unwrap(Helix[][] o)
{
return (from x in o
select Unwrap(x)).ToArray();
}
internal static IHelixEntity[] Unwrap(Helix[] o)
{
return (from x in o
select Unwrap(x)).ToArray();
}
internal static IHelixEntity[] Unwrap(IEnumerable<Helix> o)
{
return (from x in o
select Unwrap(x)).ToArray();
}
internal static IHelixEntity Unwrap(Helix o)
{
return o.HelixEntity;
}
public static Helix ByAxis([DefaultArgument("Point.ByCoordinates(0, 0, 0)")] Point axisPoint, [DefaultArgument("Vector.ByCoordinates(0, 0, 1)")] Vector axisDirection, [DefaultArgument("Point.ByCoordinates(1, 0, 0)")] Point startPoint, double pitch = 1, double angleTurns = 360)
{
return Wrap(HostFactory.Factory.HelixByAxis(Point.Unwrap(axisPoint), Vector.Unwrap(axisDirection), Point.Unwrap(startPoint), pitch, angleTurns), true);
}
}
}