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()); } }
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; }