CAD 让文字显示在指定区域,自动根据文字内容调整文字高度
程序代码: | [ 复制代码到剪贴板 ] |
'***********************************************************************************************
'根据给定矩形区域填充文字(即使文字充满矩形框,根据文字内容自动调整文字高度)********************************
' P1和P2 为矩形框的两个对角点,A文字的角度(只接受0、90、270三个角度)
Public Function 文字填充模块(ByVal Txt As String, ByVal P1 As Variant, P2 As Variant, A As Double)
Dim 文字 As AcadText
Dim 文字高度 As Double
Dim 文字长度 As Double
Dim 矩形框长度 As Double
Dim 矩形框高度 As Double
Dim 中点1(2) As Double
Dim 角点1 As Variant, 角点2 As Variant
If Abs(P1(0) - P2(0)) = 0 Or Abs(P1(1) - P2(1)) = 0 Then Exit Function
If A = 0 Then
矩形框长度 = Abs(P1(0) - P2(0))
矩形框高度 = Abs(P1(1) - P2(1))
Else
矩形框长度 = Abs(P1(1) - P2(1))
矩形框高度 = Abs(P1(0) - P2(0))
End If
中点1(0) = (P1(0) + P2(0)) / 2
中点1(1) = (P1(1) + P2(1)) / 2
中点1(2) = (P1(2) + P2(2)) / 2
Set 文字 = ThisDrawing.ModelSpace.AddText(Txt, Point3D(0, 0, 0), 2.5)
文字.GetBoundingBox 角点1, 角点2
文字长度 = Abs(角点1(0) - 角点2(0))
文字高度 = Abs(角点1(1) - 角点2(1))
If 矩形框长度 / 文字长度 <= 矩形框高度 / 文字高度 Then
文字.ScaleEntity 角点1, 矩形框长度 / 文字长度
Else
文字.ScaleEntity 角点1, 矩形框高度 / 文字高度
End If
文字.Alignment = acAlignmentMiddleCenter
文字.Move 文字.TextAlignmentPoint, 中点1
文字.Rotate 中点1, A * Atn(1) * 4 / 180
End Function
'根据给定矩形区域填充文字(即使文字充满矩形框,根据文字内容自动调整文字高度)********************************
' P1和P2 为矩形框的两个对角点,A文字的角度(只接受0、90、270三个角度)
Public Function 文字填充模块(ByVal Txt As String, ByVal P1 As Variant, P2 As Variant, A As Double)
Dim 文字 As AcadText
Dim 文字高度 As Double
Dim 文字长度 As Double
Dim 矩形框长度 As Double
Dim 矩形框高度 As Double
Dim 中点1(2) As Double
Dim 角点1 As Variant, 角点2 As Variant
If Abs(P1(0) - P2(0)) = 0 Or Abs(P1(1) - P2(1)) = 0 Then Exit Function
If A = 0 Then
矩形框长度 = Abs(P1(0) - P2(0))
矩形框高度 = Abs(P1(1) - P2(1))
Else
矩形框长度 = Abs(P1(1) - P2(1))
矩形框高度 = Abs(P1(0) - P2(0))
End If
中点1(0) = (P1(0) + P2(0)) / 2
中点1(1) = (P1(1) + P2(1)) / 2
中点1(2) = (P1(2) + P2(2)) / 2
Set 文字 = ThisDrawing.ModelSpace.AddText(Txt, Point3D(0, 0, 0), 2.5)
文字.GetBoundingBox 角点1, 角点2
文字长度 = Abs(角点1(0) - 角点2(0))
文字高度 = Abs(角点1(1) - 角点2(1))
If 矩形框长度 / 文字长度 <= 矩形框高度 / 文字高度 Then
文字.ScaleEntity 角点1, 矩形框长度 / 文字长度
Else
文字.ScaleEntity 角点1, 矩形框高度 / 文字高度
End If
文字.Alignment = acAlignmentMiddleCenter
文字.Move 文字.TextAlignmentPoint, 中点1
文字.Rotate 中点1, A * Atn(1) * 4 / 180
End Function
[本日志由 田草 于 2007-01-22 12:40 AM 编辑]
|
田草 于 2007-01-23 01:01 PM 发表评论:
谢谢光临
dylan_sue 于 2007-01-23 11:48 AM 发表评论:
qiang !
发表评论 - 不要忘了输入验证码哦! |