BIGAL提到的标准VBA函数实际上就是这个图。公用事业角度x轴(和ThisDrawing.Utility.GetDistance表示距离)。毫无疑问,AngleFromXAxis使用了相同的数学公式。
然而,需要注意的是,在UCS中使用这两个函数而不是世界坐标系时。如果可能存在替代UCS,则需要坐标转换。参见示例:
- Sub AngleSample()
- Dim vPoint1 As Variant
- Dim vPoint2 As Variant
- Dim vTrans1 As Variant
- Dim vTrans2 As Variant
- Dim d As Double
- Dim strMsg As String
- With ThisDrawing.Utility
- On Error Resume Next
- vPoint1 = .GetPoint(, "Select Point 1: " & vbCr)
- If Err <> 0 Then Exit Sub
- vTrans1 = .TranslateCoordinates(vPoint1, acWorld, acUCS, 0)
- vPoint2 = .GetPoint(vTrans1, "Select Point 2: ")
- If Err <> 0 Then Exit Sub
- On Error GoTo 0
- vTrans2 = .TranslateCoordinates(vPoint2, acWorld, acUCS, 0)
- d = .AngleFromXAxis(vTrans1, vTrans2)
- strMsg = .AngleToString(d, acDegrees, 2)
- .Prompt "Angle in Degrees is " & strMsg & vbLf
- End With
- End Sub
|