NurbsCurve
using Autodesk.DesignScript.Interfaces;
using ProtoGeometryGenerator;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Autodesk.DesignScript.Geometry
{
[GenerateFromInterface(typeof(INurbsCurveEntity), typeof(IGeometryFactory), new Type[] {
})]
public class NurbsCurve : Curve
{
internal INurbsCurveEntity NurbsCurveEntity => HostImpl as INurbsCurveEntity;
public int Degree => NurbsCurveEntity.get_Degree();
public bool IsPeriodic => NurbsCurveEntity.get_IsPeriodic();
public bool IsRational => NurbsCurveEntity.get_IsRational();
internal NurbsCurve(INurbsCurveEntity host)
: base(host)
{
}
internal new static void InitType()
{
Geometry.RegisterHostType(typeof(INurbsCurveEntity), (IGeometryEntity host) => new NurbsCurve(host as INurbsCurveEntity));
}
public Point[] ControlPoints()
{
return Point.Wrap(NurbsCurveEntity.ControlPoints());
}
public Point[] PeriodicControlPoints()
{
return Point.Wrap(NurbsCurveEntity.PeriodicControlPoints());
}
public double[] Knots()
{
return NurbsCurveEntity.Knots();
}
public double[] PeriodicKnots()
{
return NurbsCurveEntity.PeriodicKnots();
}
public double[] Weights()
{
return NurbsCurveEntity.Weights();
}
public static NurbsCurve ByControlPoints(IEnumerable<Point> points)
{
return Wrap(HostFactory.Factory.NurbsCurveByControlPoints(Point.Unwrap(points)));
}
public static NurbsCurve ByControlPoints(IEnumerable<Point> points, int degree = 3)
{
return Wrap(HostFactory.Factory.NurbsCurveByControlPoints(Point.Unwrap(points), degree));
}
public static NurbsCurve ByControlPoints(IEnumerable<Point> points, int degree = 3, bool closeCurve = false)
{
return Wrap(HostFactory.Factory.NurbsCurveByControlPoints(Point.Unwrap(points), degree, closeCurve));
}
public static NurbsCurve ByControlPointsWeightsKnots(IEnumerable<Point> points, double[] weights, double[] knots, int degree = 3)
{
return Wrap(HostFactory.Factory.NurbsCurveByControlPointsWeightsKnots(Point.Unwrap(points), weights, knots, degree));
}
public static NurbsCurve ByPoints(IEnumerable<Point> points)
{
return Wrap(HostFactory.Factory.NurbsCurveByPoints(Point.Unwrap(points)));
}
public static NurbsCurve ByPoints(IEnumerable<Point> points, bool closeCurve = false)
{
return Wrap(HostFactory.Factory.NurbsCurveByPoints(Point.Unwrap(points), closeCurve));
}
public static NurbsCurve ByPoints(IEnumerable<Point> points, int degree = 3)
{
return Wrap(HostFactory.Factory.NurbsCurveByPoints(Point.Unwrap(points), degree));
}
public static NurbsCurve ByPointsTangents(IEnumerable<Point> points, Vector startTangent, Vector endTangent)
{
return Wrap(HostFactory.Factory.NurbsCurveByPointsTangents(Point.Unwrap(points), Vector.Unwrap(startTangent), Vector.Unwrap(endTangent)));
}
internal static NurbsCurve Wrap(INurbsCurveEntity host)
{
if (host != null)
return new NurbsCurve(host);
return null;
}
internal static NurbsCurve[] Wrap(INurbsCurveEntity[] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static NurbsCurve[][] Wrap(INurbsCurveEntity[][] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static INurbsCurveEntity Unwrap(NurbsCurve o)
{
return o.NurbsCurveEntity;
}
internal static INurbsCurveEntity[] Unwrap(IEnumerable<NurbsCurve> o)
{
return o.Select(Unwrap).ToArray();
}
internal static INurbsCurveEntity[] Unwrap(NurbsCurve[] o)
{
return o.Select(Unwrap).ToArray();
}
internal static INurbsCurveEntity[][] Unwrap(NurbsCurve[][] 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("NurbsCurve(Degree = ", Degree).Append(")");
}
}
}