求助:修改单行文字的内容
看了“开发精彩实例教程”,自己也是试着编了一段程序,不过不知道怎么回事,没有作用啊。问题可能是出在"For ..next"循环那里,各位大虾能不能帮着看一下啊。下面是我的部分代码:
Public Sub Text2()
Dim TextSelect As AcadSelectionSet
Dim filterType(0) As Integer
Dim filterData(0)
Dim adText As AcadText
On Error Resume Next
filterType(0) = 0: filterData(0) = "text"
If Not IsNull(ThisDrawing.SelectionSets.Item("TextSelect")) Then
Set TextSelect = ThisDrawing.SelectionSets.Item("TextSelect")
TextSelect.Delete
End If
Set TextSelect = ThisDrawing.SelectionSets.Add("TextSelect")
TextSelect.Select acSelectionSetAll, , , filterType, filterData
For Each adText In TextSelect
If InStr(adText.textString, "1.0") Then adText.textString = "1.6"
If adText.textString = "350" Then adText.textString = "300"
Next
End Sub
你想问什么问题,程序你可以设断点调试,也可以通过加入debug.print语句来调试。 惭愧,问题没有说完整。我的问题是:就是运行上面的程序后,1.0 没有 改成1.6, 350也没有改成300。“开发精彩实例教程”中的源程序我运行后是可以的,很困惑。 If InStr(adText.textString, "1.0") Then adText.textString = "1.6"语句的问题弄清楚了,原来我要改的文字是Mtext,不是text。。不好意思。不过If adText.textString = "350" Then adText.textString = "300"怎么还是没作用呢,各位高手帮看一下呀~
Public Sub Text2()
Dim TextSelect As AcadSelectionSet
Dim filterType(0) As Integer
Dim filterData(0)
Dim adText As AcadMText
On Error Resume Next
filterType(0) = 0: filterData(0) = "Mtext"
If Not IsNull(ThisDrawing.SelectionSets.Item("TextSelect")) Then
Set TextSelect = ThisDrawing.SelectionSets.Item("TextSelect")
TextSelect.Delete
End If
Set TextSelect = ThisDrawing.SelectionSets.Add("TextSelect")
TextSelect.Select acSelectionSetAll, , , filterType, filterData
For Each adText In TextSelect
If InStr(adText.textString, "1.0") Then adText.textString = "1.6"
If adText.textString = "350" Then adText.textString = "300"
Next
End Sub
回复 mccad 的帖子
多谢关注~调来调去,If adText.textString = "350" Then adText.textString = "300"确实还没有作用,为什么If InStr(adText.textString, "1.0") Then adText.textString = "1.6"这句就可以呢? 象这种情形下,你需要先用debug.print adText.textString 来查看字符串的内容,看是不是你所要的内容 回复 mccad 的帖子
多谢指点~刚才Degug了一下,发现确实如您所说,图上显示是 350 的多行文字,debug显示的是\fFangSong_GB2312|b0|i0|p34;350 ,怪不得呢。 少用Mtext。Mtext里面带格式代码的。 回复 mikewolf2k 的帖子
多谢指点~你说的格式指的是“\fFangSong_GB2312|b0|i0|p34;350 ”中的红色部分是吧,虽然用InStr()可以获得这个标注文字,但这个确实比较讨厌。有没有更好的方法啊? 把这个mtext拷出来炸掉变成单行文字,然后获得纯粹的文本,如何?
页:
[1]
2