TSplineInitialSymmetry
using Autodesk.DesignScript.Interfaces;
using System.Collections.Generic;
using System.Linq;
namespace Autodesk.DesignScript.Geometry.TSpline
{
    public class TSplineInitialSymmetry : DesignScriptEntity
    {
        internal ITSplineInitialSymmetryEntity TSplineInitialSymmetryEntity => HostImpl as ITSplineInitialSymmetryEntity;
        public bool IsRadial => TSplineInitialSymmetryEntity.get_IsRadial();
        public bool XAxis => TSplineInitialSymmetryEntity.get_XAxis();
        public bool YAxis => TSplineInitialSymmetryEntity.get_YAxis();
        public bool ZAxis => TSplineInitialSymmetryEntity.get_ZAxis();
        public int RadialSymmetryFaces => TSplineInitialSymmetryEntity.get_RadialSymmetryFaces();
        internal TSplineInitialSymmetry(ITSplineInitialSymmetryEntity host, bool persist)
            : base(host, persist)
        {
        }
        public override string ToString()
        {
            string[] obj = new string[11] {
                "TSplineInitialSymmetry(IsRadial = ",
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null
            };
            bool flag = IsRadial;
            obj[1] = flag.ToString();
            obj[2] = ", XAxis = ";
            flag = XAxis;
            obj[3] = flag.ToString();
            obj[4] = ", YAxis = ";
            flag = YAxis;
            obj[5] = flag.ToString();
            obj[6] = ", ZAxis = ";
            flag = ZAxis;
            obj[7] = flag.ToString();
            obj[8] = ", RadialSymmetryFaces = ";
            obj[9] = RadialSymmetryFaces.ToString();
            obj[10] = ")";
            return string.Concat(obj);
        }
        internal static TSplineInitialSymmetry Wrap(ITSplineInitialSymmetryEntity host, bool persist = true)
        {
            if (host == null)
                return null;
            return new TSplineInitialSymmetry(host, persist);
        }
        internal static TSplineInitialSymmetry[] Wrap(ITSplineInitialSymmetryEntity[] hosts, bool persist = true)
        {
            return (from x in hosts
            select Wrap(x, persist)).ToArray();
        }
        internal static TSplineInitialSymmetry[][] Wrap(ITSplineInitialSymmetryEntity[][] hosts, bool persist = true)
        {
            return (from x in hosts
            select Wrap(x, persist)).ToArray();
        }
        internal static ITSplineInitialSymmetryEntity[][] Unwrap(TSplineInitialSymmetry[][] o)
        {
            return (from x in o
            select Unwrap(x)).ToArray();
        }
        internal static ITSplineInitialSymmetryEntity[] Unwrap(TSplineInitialSymmetry[] o)
        {
            return (from x in o
            select Unwrap(x)).ToArray();
        }
        internal static ITSplineInitialSymmetryEntity[] Unwrap(IEnumerable<TSplineInitialSymmetry> o)
        {
            return (from x in o
            select Unwrap(x)).ToArray();
        }
        internal static ITSplineInitialSymmetryEntity Unwrap(TSplineInitialSymmetry o)
        {
            return o.TSplineInitialSymmetryEntity;
        }
        public static TSplineInitialSymmetry ByRadial(int symmetricFaces = 1)
        {
            return Wrap(HostFactory.Factory.TSplineInitialSymmetryByRadial(symmetricFaces), true);
        }
        public static TSplineInitialSymmetry ByAxial(bool xAxis = true, bool yAxis = true, bool zAxis = true)
        {
            return Wrap(HostFactory.Factory.TSplineInitialSymmetryByAxial(xAxis, yAxis, zAxis), true);
        }
    }
}
            