?? dxfarc.cs
字號:
?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Drawing;
namespace DXFFile
{
public class DXFArc:DXFFigure
{
// Fields
private ArcType type;
// Methods
public DXFArc()
{
}
public DXFArc(DXFData aData)
: base(aData)
{
this.type = (ArcType)aData.selfType;
}
public override void ExportAsDXF(DXFExport ADXFExport)
{
switch (this.type)
{
case ArcType.atCircle:
ADXFExport.AddName("ARC", "AcDbCircle");
ADXFExport.AddColor(base.data);
ADXFExport.AddThickness(base.data);
ADXFExport.Add3DPoint(10, base.data.point);
ADXFExport.AddFloat(40, ADXFExport.MM(base.data.radius));
ADXFExport.current.Add("100");
ADXFExport.current.Add("AcDbArc");
ADXFExport.AddFloat(50, base.data.startAngle);
ADXFExport.AddFloat(0x33, base.data.endAngle);
return;
case ArcType.atEllipse:
ADXFExport.AddName("ELLIPSE", "AcDbEllipse");
ADXFExport.AddColor(base.data);
ADXFExport.AddThickness(base.data);
ADXFExport.Add3DPoint(10, base.data.point);
ADXFExport.Add3DPoint(11, base.data.point1);
ADXFExport.AddFloat(40, base.data.radius);
if (Math.Abs((float)(base.data.startAngle - base.data.endAngle)) > DXFExport.accuracy)
{
ADXFExport.AddFloat(0x29, base.data.startAngle);
ADXFExport.AddFloat(0x2a, base.data.endAngle);
}
return;
}
}
public override bool IntersecRect(Rect aRect)
{
Rectangle rectangle = new Rectangle(0, 0, 0, 0);
rectangle = Rectangle.Intersect(new Rectangle(aRect.X1, aRect.Y1, aRect.X2, aRect.Y2), new Rectangle((int)Math.Round((double)(base.data.point.X - base.data.radius)), (int)Math.Round((double)(base.data.point.Y - base.data.radius)), (int)Math.Round((double)(base.data.point.X + base.data.radius)), (int)Math.Round((double)(base.data.point.Y + base.data.radius))));
if (((rectangle.X <= 0) && (rectangle.Y <= 0)) && ((rectangle.Width <= 0) && (rectangle.Height <= 0)))
{
return false;
}
return true;
}
public override void ParseToLines(ArrayList NewElemes)
{
DXFLine line = new DXFLine(base.data);
DXFPoint point = new DXFPoint();
float x = base.data.point.X;
float y = base.data.point.Y;
float radius = base.data.radius;
float num4 = radius;
float num5 = (base.data.startAngle * 3.141593f) / 180f;
float num6 = (base.data.endAngle * 3.141593f) / 180f;
if (num6 <= num5)
{
num6 += 6.283185f;
}
int num11 = (int)Math.Round((double)(((num6 - num5) / 3.141593f) * 16f));
if (num11 < 4)
{
num11 = 4;
}
float num7 = (num6 - num5) / ((float)(num11 - 1));
for (int i = 0; i < (num11 - 2); i++)
{
line.Layer = base.Layer;
NewElemes.Add(line.Clone());
float num8 = (float)Math.Sin((double)num5);
float num9 = (float)Math.Cos((double)num5);
point.X = x + (radius * num9);
point.Y = y + (num4 * num8);
line.StartPoint = (DXFPoint)point.Clone();
num5 += num7;
num8 = (float)Math.Sin((double)num5);
num9 = (float)Math.Cos((double)num5);
point.X = x + (radius * num9);
point.Y = y + (num4 * num8);
line.EndPoint = (DXFPoint)point.Clone();
}
}
// Properties
public float EndAngle
{
get
{
return base.data.endAngle;
}
set
{
base.data.endAngle = value;
}
}
public DXFPoint Point
{
get
{
return base.data.point;
}
set
{
base.data.point = value;
}
}
public float Radius
{
get
{
return base.data.radius;
}
set
{
base.data.radius = value;
}
}
public float StartAngle
{
get
{
return base.data.startAngle;
}
set
{
base.data.startAngle = value;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -