Helix
using Autodesk.DesignScript.Interfaces;
using Autodesk.DesignScript.Runtime;
using ProtoGeometryGenerator;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Autodesk.DesignScript.Geometry
{
[GenerateFromInterface(typeof(IHelixEntity), typeof(IGeometryFactory), new Type[] {
})]
public class Helix : Curve
{
internal IHelixEntity HelixEntity => HostImpl as IHelixEntity;
public double Angle => HelixEntity.get_Angle();
[Scaling()]
public double Pitch {
get {
return HelixEntity.get_Pitch() * DesignScriptEntity.scaleFactor;
}
}
[Scaling()]
public double Radius {
get {
return HelixEntity.get_Radius() * DesignScriptEntity.scaleFactor;
}
}
[Scaling()]
public Vector AxisDirection {
get {
return Vector.Wrap(HelixEntity.get_AxisDirection().Scale(1 / DesignScriptEntity.scaleFactor));
}
}
public Point AxisPoint => Point.Wrap(HelixEntity.get_AxisPoint());
internal Helix(IHelixEntity host)
: base(host)
{
}
internal new static void InitType()
{
Geometry.RegisterHostType(typeof(IHelixEntity), (IGeometryEntity host) => new Helix(host as IHelixEntity));
}
public static Helix ByAxis([DefaultArgument("Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)")] Point axisPoint, [DefaultArgument("Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)")] Vector axisDirection, [DefaultArgument("Autodesk.DesignScript.Geometry.Point.ByCoordinates(1, 0, 0)")] Point startPoint, [Scaling()] double pitch = 1, double angleTurns = 360)
{
DesignScriptEntity.CheckArgsForAsmExtents(pitch);
return Wrap(HostFactory.Factory.HelixByAxis(Point.Unwrap(axisPoint), Vector.Unwrap(axisDirection), Point.Unwrap(startPoint), pitch / DesignScriptEntity.scaleFactor, angleTurns));
}
internal static Helix Wrap(IHelixEntity host)
{
if (host != null)
return new Helix(host);
return null;
}
internal static Helix[] Wrap(IHelixEntity[] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static Helix[][] Wrap(IHelixEntity[][] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static IHelixEntity Unwrap(Helix o)
{
return o.HelixEntity;
}
internal static IHelixEntity[] Unwrap(IEnumerable<Helix> o)
{
return o.Select(Unwrap).ToArray();
}
internal static IHelixEntity[] Unwrap(Helix[] o)
{
return o.Select(Unwrap).ToArray();
}
internal static IHelixEntity[][] Unwrap(Helix[][] o)
{
return o.Select(Unwrap).ToArray();
}
public override string ToString()
{
StringBuilder builder = DesignScriptEntity.GetBuilder();
AppendTo(builder);
return builder.ToString();
}
internal override void AppendTo(StringBuilder builder)
{
builder.Add("Helix(Angle = ", Angle).Add(", Pitch = ", Pitch).Add(", Radius = ", Radius)
.Add(", AxisDirection = ", AxisDirection)
.Add(", AxisPoint = ", AxisPoint)
.Append(")");
}
}
}