对于你的程序,思路是不错的,但设置相对比较繁琐,我修改了一下,可直接借用CAD的文本样式设置功能来进行处理。

- [FONT=courier new]
- Sub Test()
- ' 用法:首先把要统一的文本样式设置为当前的文本样式,
- ' 程序自动把当前图形中的所有文本对象的样式名称设置为当前的文本样式的名称
- ' 对于当前图形中的所有单行文本对象的宽度比例因子设置为当前的文本样式的宽度比例因子
-
- On Error Resume Next
-
- ' 设置文本样式
- ThisDrawing.SendCommand "'_style" & vbCr
- ' 创建选择集
- Dim ssetObj As AcadSelectionSet
- Set ssetObj = ThisDrawing.SelectionSets("SSET")
- If Err Then Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")
-
- ' 使用过滤机制,仅选择文本对象
- Dim gpCode(0) As Integer
- Dim dataValue(0) As Variant
- gpCode(0) = 0
- dataValue(0) = "*Text"
-
- ' 使用过滤机制,添加所有的文本对象到选择集
- ssetObj.Select acSelectionSetAll, , , gpCode, dataValue
-
- ' 枚举文本对象,更改文本样式
- Dim i As Integer
- For i = 0 To ssetObj.Count - 1
- ssetObj(i).StyleName = ThisDrawing.ActiveTextStyle.Name '使用当前的文本样式
- If TypeOf ssetObj(i) Is AcadText Then ssetObj(i).ScaleFactor = ThisDrawing.ActiveTextStyle.Width '对于单行文本设置宽度比例因子
- Next
- End Sub
- [/FONT]
|