明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1851|回复: 2

CAD按线自动旋转文字的方法

[复制链接]
发表于 2017-12-20 09:57 | 显示全部楼层 |阅读模式

在绘图中有时需要将文字按线的角度自动对齐,先计算线的角度,然后将文字改为线的角度。
常用的线为多段线和直线,如果是直线,可以通过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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2020-8-29 11:52 | 显示全部楼层
纯几何计算,赞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 19:08 , Processed in 0.344146 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表