Esempio n. 1
0
        public override void ParseToLines(ArrayList NewElemes)
        {
            float    single;
            float    single1;
            DXFPoint dXFPoint = new DXFPoint();
            DXFLine  dXFLine  = new DXFLine();
            float    x        = this.data.point.X;
            float    y        = this.data.point.Y;

            if (this.ellipse)
            {
                single  = Math.Abs(this.data.point1.X);
                single1 = Math.Abs(this.data.point1.Y);
                if (single == 0f)
                {
                    single = single1 * this.data.radius;
                }
                if (single1 == 0f)
                {
                    single1 = single * this.data.radius;
                }
            }
            else
            {
                single  = this.data.radius;
                single1 = single;
            }
            float single2 = this.data.startAngle * 3.141593f / 180f;
            float single3 = this.data.endAngle * 3.141593f / 180f;
            int   num     = (int)Math.Round((double)((single3 - single2) / 3.141593f * 16f));

            if (num < 4)
            {
                num = 4;
            }
            float single4 = (single3 - single2) / (float)(num - 1);

            for (int i = 0; i < num - 2; i++)
            {
                dXFLine.Layer = base.Layer;
                float single5 = (float)Math.Sin((double)single2);
                float single6 = (float)Math.Cos((double)single2);
                dXFPoint.X         = x + single * single6;
                dXFPoint.Y         = y + single1 * single5;
                dXFLine.StartPoint = (DXFPoint)dXFPoint.Clone();
                single2            = single2 + single4;
                single5            = (float)Math.Sin((double)single2);
                single6            = (float)Math.Cos((double)single2);
                dXFPoint.X         = x + single * single6;
                dXFPoint.Y         = y + single1 * single5;
                dXFLine.EndPoint   = (DXFPoint)dXFPoint.Clone();
                NewElemes.Add(dXFLine.Clone());
            }
        }
Esempio n. 2
0
        public DXFHatch(DXFData aData) : base(aData)
        {
            int j;

            this.boundaries   = new ArrayList();
            this.patternName  = "";
            this.boundaryType = (HatchBoundaryType)aData.selfType;
            DXFPoint dXFPoint = new DXFPoint();

            base.Layer = "0";
            this.SetStyle(aData);
            this.boundaries.Clear();
            switch (this.boundaryType)
            {
            case HatchBoundaryType.hbtPolyPolyline:
            {
                if (aData.count > 0)
                {
                    for (int i = 0; i < aData.points.Count; i++)
                    {
                        if (((ArrayList)aData.points[i]).Count >= 3)
                        {
                            this.boundaries.Add(new ArrayList());
                            for (j = 0; j < ((ArrayList)aData.points[i]).Count; j++)
                            {
                                dXFPoint = (DXFPoint)((ArrayList)aData.points[i])[j];
                                if (j < 2 || dXFPoint.X != ((DXFPoint)((ArrayList)aData.points[i])[j - 2]).X ||
                                    dXFPoint.Y != ((DXFPoint)((ArrayList)aData.points[i])[j - 2]).Y)
                                {
                                    ((ArrayList)this.boundaries[this.boundaries.Count - 1]).Add(dXFPoint.Clone());
                                }
                                else
                                {
                                    dXFPoint = null;
                                }
                            }
                            if (((ArrayList)this.boundaries[this.boundaries.Count - 1]).Count < 3)
                            {
                                for (j = 0;
                                     j < ((ArrayList)this.boundaries[this.boundaries.Count - 1]).Count - 1;
                                     j++)
                                {
                                    ((ArrayList)this.boundaries[this.boundaries.Count - 1])[j] = null;
                                }
                                this.boundaries.Remove((ArrayList)this.boundaries[this.boundaries.Count - 1]);
                            }
                        }
                    }
                }
                return;
            }

            case HatchBoundaryType.hbtCircle:
            {
                this.bndAmount = 1;
                return;
            }

            case HatchBoundaryType.hbtEllipse:
            {
                this.bndAmount = 1;
                return;
            }
            }
            this.bndAmount = 0;
        }