Polygon
using Autodesk.DesignScript.Geometry.Properties;
using Autodesk.DesignScript.Interfaces;
using Autodesk.DesignScript.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Autodesk.DesignScript.Geometry
{
public class Polygon : PolyCurve
{
internal IPolygonEntity PolygonEntity => HostImpl as IPolygonEntity;
[IsObsolete("polygon_points_deprecated", typeof(Resources))]
[Obsolete("This property is deprecated and will be removed in Dynamo 5.0. Use PolyCurve.Points instead.")]
[IsVisibleInDynamoLibrary(false)]
public new Point[] Points {
get {
return Point.Wrap(PolygonEntity.get_Points());
}
}
[Scaling()]
public double PlaneDeviation {
get {
return PolygonEntity.get_PlaneDeviation() * DesignScriptEntity.scaleFactor;
}
}
internal Polygon(IPolygonEntity host)
: base(host)
{
}
public override string ToString()
{
return "Polygon";
}
internal new static void InitType()
{
Geometry.RegisterHostType(typeof(IPolygonEntity), (IGeometryEntity host) => new Polygon(host as IPolygonEntity));
}
internal static Polygon Wrap(IPolygonEntity host)
{
return Geometry.Wrap(host, null) as Polygon;
}
internal static Polygon[] Wrap(IPolygonEntity[] hosts)
{
return (from x in hosts
select Wrap(x)).ToArray();
}
internal static Polygon[][] Wrap(IPolygonEntity[][] hosts)
{
return (from x in hosts
select Wrap(x)).ToArray();
}
internal static IPolygonEntity[][] Unwrap(Polygon[][] o)
{
return (from x in o
select Unwrap(x)).ToArray();
}
internal static IPolygonEntity[] Unwrap(Polygon[] o)
{
return (from x in o
select Unwrap(x)).ToArray();
}
internal static IPolygonEntity[] Unwrap(IEnumerable<Polygon> o)
{
return (from x in o
select Unwrap(x)).ToArray();
}
internal static IPolygonEntity Unwrap(Polygon o)
{
return o.PolygonEntity;
}
public static Polygon ByPoints(IEnumerable<Point> points)
{
return Wrap(HostFactory.Factory.PolygonByPoints(Point.Unwrap(points)));
}
public static Polygon RegularPolygon(Circle circle, int numberSides = 5)
{
return Wrap(HostFactory.Factory.PolygonRegularPolygon(Circle.Unwrap(circle), numberSides));
}
public virtual Point[] Corners()
{
return Point.Wrap(PolygonEntity.Corners());
}
public virtual Point Center()
{
return Point.Wrap(PolygonEntity.Center());
}
public Point[] SelfIntersections()
{
return Point.Wrap(PolygonEntity.SelfIntersections());
}
public bool ContainmentTest(Point point)
{
return PolygonEntity.ContainmentTest(Point.Unwrap(point));
}
}
}