NurbsSurface
using Autodesk.DesignScript.Interfaces;
using ProtoGeometryGenerator;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Autodesk.DesignScript.Geometry
{
[GenerateFromInterface(typeof(INurbsSurfaceEntity), typeof(IGeometryFactory), new Type[] {
})]
public class NurbsSurface : Surface
{
internal INurbsSurfaceEntity NurbsSurfaceEntity => HostImpl as INurbsSurfaceEntity;
public int DegreeU => NurbsSurfaceEntity.get_DegreeU();
public int DegreeV => NurbsSurfaceEntity.get_DegreeV();
public int NumControlPointsU => NurbsSurfaceEntity.get_NumControlPointsU();
public int NumControlPointsV => NurbsSurfaceEntity.get_NumControlPointsV();
public bool IsPeriodicInU => NurbsSurfaceEntity.get_IsPeriodicInU();
public bool IsPeriodicInV => NurbsSurfaceEntity.get_IsPeriodicInV();
public bool IsRational => NurbsSurfaceEntity.get_IsRational();
internal NurbsSurface(INurbsSurfaceEntity host)
: base(host)
{
}
internal new static void InitType()
{
Geometry.RegisterHostType(typeof(INurbsSurfaceEntity), (IGeometryEntity host) => new NurbsSurface(host as INurbsSurfaceEntity));
}
public Point[][] ControlPoints()
{
return Point.Wrap(NurbsSurfaceEntity.ControlPoints());
}
public double[][] Weights()
{
return NurbsSurfaceEntity.Weights();
}
public double[] UKnots()
{
return NurbsSurfaceEntity.UKnots();
}
public double[] VKnots()
{
return NurbsSurfaceEntity.VKnots();
}
public static NurbsSurface ByPoints(Point[][] points, int uDegree = 3, int vDegree = 3)
{
return Wrap(HostFactory.Factory.NurbsSurfaceByPoints(Point.Unwrap(points), uDegree, vDegree));
}
public static NurbsSurface ByPointsTangents(Point[][] points, IEnumerable<Vector> startUTangents, IEnumerable<Vector> endUTangents, IEnumerable<Vector> startVTangents, IEnumerable<Vector> endVTangents)
{
return Wrap(HostFactory.Factory.NurbsSurfaceByPointsTangents(Point.Unwrap(points), Vector.Unwrap(startUTangents), Vector.Unwrap(endUTangents), Vector.Unwrap(startVTangents), Vector.Unwrap(endVTangents)));
}
public static NurbsSurface ByPointsTangentsKnotsDerivatives(Point[][] points, IEnumerable<Vector> startUTangents, IEnumerable<Vector> endUTangents, IEnumerable<Vector> startVTangents, IEnumerable<Vector> endVTangents, double[] uKnots, double[] vKnots, IEnumerable<Vector> cornerTwistDerivatives)
{
return Wrap(HostFactory.Factory.NurbsSurfaceByPointsTangentsKnotsDerivatives(Point.Unwrap(points), Vector.Unwrap(startUTangents), Vector.Unwrap(endUTangents), Vector.Unwrap(startVTangents), Vector.Unwrap(endVTangents), uKnots, vKnots, Vector.Unwrap(cornerTwistDerivatives)));
}
public static NurbsSurface ByControlPoints(Point[][] controlVertices, int uDegree = 3, int vDegree = 3)
{
return Wrap(HostFactory.Factory.NurbsSurfaceByControlPoints(Point.Unwrap(controlVertices), uDegree, vDegree));
}
public static NurbsSurface ByControlPointsWeightsKnots(Point[][] controlVertices, double[][] weights, double[] knotsU, double[] knotsV, int uDegree = 3, int vDegree = 3)
{
return Wrap(HostFactory.Factory.NurbsSurfaceByControlPointsWeightsKnots(Point.Unwrap(controlVertices), weights, knotsU, knotsV, uDegree, vDegree));
}
internal static NurbsSurface Wrap(INurbsSurfaceEntity host)
{
if (host != null)
return new NurbsSurface(host);
return null;
}
internal static NurbsSurface[] Wrap(INurbsSurfaceEntity[] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static NurbsSurface[][] Wrap(INurbsSurfaceEntity[][] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static INurbsSurfaceEntity Unwrap(NurbsSurface o)
{
return o.NurbsSurfaceEntity;
}
internal static INurbsSurfaceEntity[] Unwrap(IEnumerable<NurbsSurface> o)
{
return o.Select(Unwrap).ToArray();
}
internal static INurbsSurfaceEntity[] Unwrap(NurbsSurface[] o)
{
return o.Select(Unwrap).ToArray();
}
internal static INurbsSurfaceEntity[][] Unwrap(NurbsSurface[][] 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("NurbsSurface(DegreeU = ", DegreeU).Add(", DegreeV = ", DegreeV).Append(")");
}
}
}