1.A.AngleOnPlaneTo(B,normal)
向量A到B的逆时针角度,范围为 [0-360°],注意是左闭右闭,但revit画出来的水平线默认会有一定误差,故,X轴与线5实际夹角为360°。
测试6根详图线
代码:
List<XYZ> dirs=new List<XYZ>() { line1,line2 , line3 , line4 ,line5,line6};
for (int i = 0; i < dirs.Count; i++)
{
var dir = dirs[i];
var angle = XYZ.BasisX.AngleOnPlaneTo(dir, XYZ.BasisZ) * 180 / (Math.PI);
TaskDialog.Show("提示", $"X轴与向量{i+1}的角度为{angle}");
}
计算结果:
2.A.AngleTo(B)
向量A到B的角度,范围为 [0-180°],注意:1.不是一定按照逆时针,例如第一条线,但默认会按逆时针来计算,例如线6;2.是左闭右闭。
代码:
List<XYZ> dirs=new List<XYZ>() { line1,line2 , line3 , line4 ,line5,line6};
for (int i = 0; i < dirs.Count; i++)
{
var dir = dirs[i];
var angle = XYZ.BasisX.AngleTo(dir) * 180 / (Math.PI);
TaskDialog.Show("提示", $"X轴与向量{i+1}的角度为{angle}");
}
计算结果