CAD按线自动旋转文字的方法
在绘图中有时需要将文字按线的角度自动对齐,先计算线的角度,然后将文字改为线的角度。
常用的线为多段线和直线,如果是直线,可以通过startPoint、endPoint获得线段的起止点。直线也可以直接获得角度。
对于多段线,可以通过Coordinates获得点的数量,通过Coordinate(n)(0),Coordinate(n)(1)获得x,y的坐标,用文字的坐标与多段线的坐标点逐一比较,取多段线上离文字最近的两点计算角度。
对于文字调整角度需要转换为弧度,然后修改文字对象的属性。
比如文字旋转角为55度,oText.Rotation = 55* 0.017453292
190度的线与10度的线在观感上是一致的,如果把文字角度与线角度设置为一样,那样文字会一个正立,一个倒立。需要自行处理一下。
计算两点长度的公式为:Sqr((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
计算两点角度的函数如下
Private Const PI = 3.14159265358979
Public Function GetTwoPointAngle(X1 As Double, Y1 As Double, X2 As Double, Y2 As Double) As Double
'已知两点计算线段的角度(返回角度值)
Dim Length As Double '长度
Dim Radian As Double '弧度
Dim Angle As Double '角度
Dim X As Double, Y As Double, c As Double
X = X2 - X1
Y = Y2 - Y1
Length = Sqr(X ^ 2 + Y ^ 2) '长度
If Length > 0 Then
c = X / Length
Radian = ArcCos(c) '(弧度)
Angle = Radian / 0.017453292 '角度
If Y < 0 Then
Angle= 360 - Angle
End If
End If
GetTwoPointAngle = Angle
End Function
Public Function ArcCos(X As Double) As Double
'反余弦函数
If X = 1 Then
ArcCos = 0
ElseIf X = -1 Then
ArcCos = PI
Else
ArcCos = PI / 2 - Atn(X / Sqr(-X * X + 1))
End If
End Function
这工具好!!!!!!!!!!!!! 纯几何计算,赞
页:
[1]