///
<summary>
///3点创建圆弧到任意空间
///
</summary>
public static ObjectId AddArcToSomeSpace(this
Autodesk.AutoCAD.DatabaseServices.Database db, string
LayoutName,Point3d PtStart, Point3d PtMid, Point3d PtEnd)
{
CircularArc3d ent = new CircularArc3d(PtStart, PtMid, PtEnd);
Vector2d
vecStart = new Vector2d(ent.StartPoint.X - ent.Center.X,
ent.StartPoint.Y - ent.Center.Y);
Vector2d
vecEnd = new Vector2d(ent.EndPoint.X - ent.Center.X, ent.EndPoint.Y
- ent.Center.Y);
//这个时候可能点并不在想要画的那个弧上,假设是优弧,可能画出来的时劣弧。就要判断下是否在弧上。
//方法就是判断角度是否在两个角度之间
Vector2d
vecMid = new Vector2d(PtMid.X - ent.Center.X, PtMid.Y -
ent.Center.Y);
double
angMax=vecStart.Angle;
double
angMin=vecEnd.Angle;
double
angMid=vecMid.Angle;
double
temp;
if(angMax<angMin)
{
temp=angMin;
angMin=angMax;
angMax=temp;
}
ObjectId
entId;
if (angMid
> angMin && angMid
< angMax)
{
entId =
CurrentDatabase.AddArcToSomeSpace(LayoutName, ent.Center,
ent.Radius, angMin, angMax);
}
else
{
entId =
CurrentDatabase.AddArcToSomeSpace(LayoutName, ent.Center,
ent.Radius, angMax, angMin);
}
return
entId;
}
///
<summary>
///3点创建圆弧到模型空间
///
</summary>
public static ObjectId AddArcToModelSpace(this
Autodesk.AutoCAD.DatabaseServices.Database db, Point3d PtStart,
Point3d PtMid, Point3d PtEnd)
{
return
CurrentDatabase.AddArcToSomeSpace("Model", PtStart, PtMid,
PtEnd);
}
// 由圆心、半径、起始角度和终止角度创建圆弧的函数.
public static ObjectId AddArcToSomeSpace(this
Autodesk.AutoCAD.DatabaseServices.Database db, string LayoutName,
Point3d cenPt, double radius, double startAng, double endAng)
{
Arc ent =
new Arc(cenPt, radius, startAng, endAng);
ObjectId
entId = ent.AddToSomeSpace(LayoutName);
return
entId;
}
public static ObjectId AddArcToModelSpace(this
Autodesk.AutoCAD.DatabaseServices.Database db, Point3d cenPt,
double radius, double startAng, double endAng)
{
return
CurrentDatabase.AddArcToSomeSpace("Model",cenPt, radius, startAng,
endAng);
}