3d版本- Public Function CenterFromBulge(oPline As AcadLWPolyline, index As Integer) As Variant
- If oPline Is Nothing Then Exit Function
- If (UBound(oPline.Coordinates) - 1) / 2 0 Then
- If Bulge > 1 Then
- Ang = Ang - ((0.5 * pi) - (pi - BulgeAng))
- Else
- Ang = Ang + ((0.5 * pi) - BulgeAng)
- End If
- Else
- If Bulge 0 Then
- dAng = 0
- Else
- dAng = pi '180
- End If
- ElseIf Rd(dX, 0) Then 'Line is vertical
- If dY > 0 Then
- dAng = 0.5 * pi '90
- Else
- dAng = 1.5 * pi '270
- End If
- Else
- dAng = Atn(dY / dX)
- If dAng 270
- If dX 270
- dAng = pi + dAng '90->180
- Else '270->360
- dAng = 2 * pi + dAng
- End If
- Else
- If dX 270
- dAng = pi + dAng
- End If
- End If
- End If
- AngFromX = dAng
- End Function
- Function Rd(num1 As Variant, num2 As Variant) As Boolean
- Dim dRet As Double
- dRet = num1 - num2
- If Abs(dRet) < 0.00000001 Then Rd = True
- End Function
|