Plane
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(IPlaneEntity), typeof(IGeometryFactory), new Type[] {
})]
public class Plane : Geometry
{
internal IPlaneEntity PlaneEntity => HostImpl as IPlaneEntity;
public Point Origin => Point.Wrap(PlaneEntity.get_Origin());
[Scaling()]
public Vector Normal {
get {
return Vector.Wrap(PlaneEntity.get_Normal().Scale(1 / DesignScriptEntity.scaleFactor));
}
}
[Scaling()]
public Vector XAxis {
get {
return Vector.Wrap(PlaneEntity.get_XAxis().Scale(1 / DesignScriptEntity.scaleFactor));
}
}
[Scaling()]
public Vector YAxis {
get {
return Vector.Wrap(PlaneEntity.get_YAxis().Scale(1 / DesignScriptEntity.scaleFactor));
}
}
internal Plane(IPlaneEntity host)
: base(host)
{
}
internal static void InitType()
{
Geometry.RegisterHostType(typeof(IPlaneEntity), (IGeometryEntity host) => new Plane(host as IPlaneEntity));
}
public CoordinateSystem ToCoordinateSystem()
{
return CoordinateSystem.Wrap(PlaneEntity.ToCoordinateSystem());
}
public Plane Offset([Scaling()] double dist = 1)
{
DesignScriptEntity.CheckArgsForAsmExtents(dist);
return Wrap(PlaneEntity.Offset(dist / DesignScriptEntity.scaleFactor));
}
public static Plane ByOriginNormal([DefaultArgument("Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)")] Point origin, [DefaultArgument("Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)")] Vector normal)
{
return Wrap(HostFactory.Factory.PlaneByOriginNormal(Point.Unwrap(origin), Vector.Unwrap(normal)));
}
public static Plane ByOriginNormalXAxis([DefaultArgument("Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)")] Point origin, [DefaultArgument("Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)")] Vector normal, [DefaultArgument("Autodesk.DesignScript.Geometry.Vector.ByCoordinates(1, 0, 0)")] Vector xAxis)
{
return Wrap(HostFactory.Factory.PlaneByOriginNormalXAxis(Point.Unwrap(origin), Vector.Unwrap(normal), Vector.Unwrap(xAxis)));
}
public static Plane ByOriginXAxisYAxis([DefaultArgument("Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)")] Point origin, [DefaultArgument("Autodesk.DesignScript.Geometry.Vector.ByCoordinates(1, 0, 0)")] Vector xAxis, [DefaultArgument("Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 1, 0)")] Vector yAxis)
{
return Wrap(HostFactory.Factory.PlaneByOriginXAxisYAxis(Point.Unwrap(origin), Vector.Unwrap(xAxis), Vector.Unwrap(yAxis)));
}
public static Plane ByBestFitThroughPoints(IEnumerable<Point> points)
{
return Wrap(HostFactory.Factory.PlaneByBestFitThroughPoints(Point.Unwrap(points)));
}
public static Plane ByLineAndPoint(Line line, Point point)
{
return Wrap(HostFactory.Factory.PlaneByLineAndPoint(Line.Unwrap(line), Point.Unwrap(point)));
}
public static Plane ByThreePoints(Point origin, Point planePoint, Point xAxisPoint)
{
return Wrap(HostFactory.Factory.PlaneByThreePoints(Point.Unwrap(origin), Point.Unwrap(planePoint), Point.Unwrap(xAxisPoint)));
}
public static Plane XY()
{
return Wrap(HostFactory.Factory.PlaneXY());
}
public static Plane XZ()
{
return Wrap(HostFactory.Factory.PlaneXZ());
}
public static Plane YZ()
{
return Wrap(HostFactory.Factory.PlaneYZ());
}
internal static Plane Wrap(IPlaneEntity host)
{
if (host != null)
return new Plane(host);
return null;
}
internal static Plane[] Wrap(IPlaneEntity[] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static Plane[][] Wrap(IPlaneEntity[][] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static IPlaneEntity Unwrap(Plane o)
{
return o.PlaneEntity;
}
internal static IPlaneEntity[] Unwrap(IEnumerable<Plane> o)
{
return o.Select(Unwrap).ToArray();
}
internal static IPlaneEntity[] Unwrap(Plane[] o)
{
return o.Select(Unwrap).ToArray();
}
internal static IPlaneEntity[][] Unwrap(Plane[][] 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("Plane(Origin = ", Origin).Add(", Normal = ", Normal).Add(", XAxis = ", XAxis)
.Add(", YAxis = ", YAxis)
.Append(")");
}
}
}