Point
using Autodesk.DesignScript.Geometry.Properties;
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(IPointEntity), typeof(IGeometryFactory), new Type[] {
})]
public class Point : Geometry
{
internal IPointEntity PointEntity => HostImpl as IPointEntity;
[Scaling()]
public double X {
get {
return PointEntity.get_X() * DesignScriptEntity.scaleFactor;
}
}
[Scaling()]
public double Y {
get {
return PointEntity.get_Y() * DesignScriptEntity.scaleFactor;
}
}
[Scaling()]
public double Z {
get {
return PointEntity.get_Z() * DesignScriptEntity.scaleFactor;
}
}
internal Point(IPointEntity host)
: base(host)
{
}
internal static void InitType()
{
Geometry.RegisterHostType(typeof(IPointEntity), (IGeometryEntity host) => new Point(host as IPointEntity));
}
public Vector AsVector()
{
return Vector.Wrap(PointEntity.AsVector());
}
public Point Add(Vector vectorToAdd)
{
return Wrap(PointEntity.Add(Vector.Unwrap(vectorToAdd)));
}
public Point Subtract(Vector vectorToSubtract)
{
return Wrap(PointEntity.Subtract(Vector.Unwrap(vectorToSubtract)));
}
[IsVisibleInDynamoLibrary(false)]
[IsObsolete("point_project_deprecated", typeof(Resources))]
[Obsolete("This method is deprecated and will be removed in a future version of Dynamo. Use Geometry.ProjectPointsOnto(Point[] points, Vector projectionDirection) instead.")]
public Geometry[] Project(Geometry baseGeometry, Vector projectionDirection)
{
return Geometry.Wrap(PointEntity.Project(Geometry.Unwrap(baseGeometry), Vector.Unwrap(projectionDirection)));
}
public static Point ByCoordinates([Scaling()] double x = 0, [Scaling()] double y = 0)
{
DesignScriptEntity.CheckArgsForAsmExtents(x, y);
return Wrap(HostFactory.Factory.PointByCoordinates(x / DesignScriptEntity.scaleFactor, y / DesignScriptEntity.scaleFactor));
}
public static Point Origin()
{
return Wrap(HostFactory.Factory.PointOrigin());
}
public static Point ByCoordinates([Scaling()] double x = 0, [Scaling()] double y = 0, [Scaling()] double z = 0)
{
DesignScriptEntity.CheckArgsForAsmExtents(x, y, z);
return Wrap(HostFactory.Factory.PointByCoordinates(x / DesignScriptEntity.scaleFactor, y / DesignScriptEntity.scaleFactor, z / DesignScriptEntity.scaleFactor));
}
public static Point ByCartesianCoordinates([DefaultArgument("Autodesk.DesignScript.Geometry.CoordinateSystem.ByOrigin(0, 0, 0)")] CoordinateSystem coordinateSystem, [Scaling()] double x = 0, [Scaling()] double y = 0, [Scaling()] double z = 0)
{
DesignScriptEntity.CheckArgsForAsmExtents(x, y, z);
return Wrap(HostFactory.Factory.PointByCartesianCoordinates(CoordinateSystem.Unwrap(coordinateSystem), x / DesignScriptEntity.scaleFactor, y / DesignScriptEntity.scaleFactor, z / DesignScriptEntity.scaleFactor));
}
public static Point ByCylindricalCoordinates([DefaultArgument("Autodesk.DesignScript.Geometry.CoordinateSystem.ByOrigin(0, 0, 0)")] CoordinateSystem coordinateSystem, double angle = 0, [Scaling()] double elevation = 0, [Scaling()] double radius = 1)
{
DesignScriptEntity.CheckArgsForAsmExtents(elevation, radius);
return Wrap(HostFactory.Factory.PointByCylindricalCoordinates(CoordinateSystem.Unwrap(coordinateSystem), angle, elevation / DesignScriptEntity.scaleFactor, radius / DesignScriptEntity.scaleFactor));
}
public static Point BySphericalCoordinates([DefaultArgument("Autodesk.DesignScript.Geometry.CoordinateSystem.ByOrigin(0, 0, 0)")] CoordinateSystem coordinateSystem, double phi = 0, double theta = 0, [Scaling()] double radius = 1)
{
DesignScriptEntity.CheckArgsForAsmExtents(radius);
return Wrap(HostFactory.Factory.PointBySphericalCoordinates(CoordinateSystem.Unwrap(coordinateSystem), phi, theta, radius / DesignScriptEntity.scaleFactor));
}
public static Point[] PruneDuplicates(IEnumerable<Point> points, [Scaling()] double tolerance = 0.001)
{
DesignScriptEntity.CheckArgsForAsmExtents(tolerance);
return Wrap(HostFactory.Factory.PointPruneDuplicates(Unwrap(points), tolerance / DesignScriptEntity.scaleFactor));
}
internal static Point Wrap(IPointEntity host)
{
if (host != null)
return new Point(host);
return null;
}
internal static Point[] Wrap(IPointEntity[] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static Point[][] Wrap(IPointEntity[][] hosts)
{
return hosts.Select(Wrap).ToArray();
}
internal static IPointEntity Unwrap(Point o)
{
return o.PointEntity;
}
internal static IPointEntity[] Unwrap(IEnumerable<Point> o)
{
return o.Select(Unwrap).ToArray();
}
internal static IPointEntity[] Unwrap(Point[] o)
{
return o.Select(Unwrap).ToArray();
}
internal static IPointEntity[][] Unwrap(Point[][] o)
{
return o.Select(Unwrap).ToArray();
}
protected override bool Equals(DesignScriptEntity other)
{
if (base.Equals(other))
return true;
Point point = other as Point;
if (point != null) {
double num = X;
if (num.Equals(point.X)) {
num = Y;
if (num.Equals(point.Y)) {
num = Z;
return num.Equals(point.Z);
}
}
}
return false;
}
protected override int ComputeHashCode()
{
return HashCode.Combine(X, Y, Z);
}
public override string ToString()
{
StringBuilder builder = DesignScriptEntity.GetBuilder();
AppendTo(builder);
return builder.ToString();
}
internal override void AppendTo(StringBuilder builder)
{
builder.Add("Point(X = ", X).Add(", Y = ", Y).Add(", Z = ", Z)
.Append(")");
}
}
}