注意2D点和3D点角度的代码区别
[CommandMethod("AngleFromXAxis")]
public static void AngleFromXAxis()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database dB = doc.Database;
PromptPointResult pPtRes = doc.Editor.GetPoint("\nfirst point");//符号\n换行
Point3d start = pPtRes.Value;
Point2d start2d = new Point2d(start.X, start.Y);//将3D点去除z坐标转换为2D点
pPtRes = doc.Editor.GetPoint("\nsecond point");
Point3d end = pPtRes.Value;
Point2d end2d = new Point2d(end.X, end.Y);
//CAD弹出对话框提示(文本不可复制)
Application.ShowAlertDialog("Angle from XAxis(2D): " + start2d.GetVectorTo(end2d).Angle.ToString());
//命令栏提示(文本可复制)
doc.Editor.WriteMessage("\nAngle from XAxis(2D): " + start2d.GetVectorTo(end2d).Angle.ToString());
Vector3d vx = new Vector3d(1, 0, 0);
//输出3D点相对X轴向量的角度
doc.Editor.WriteMessage("\nAngle from XAxis(3D): " + start.GetVectorTo(end).GetAngleTo(vx).ToString());
}