明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2556|回复: 10

求助:修改单行文字的内容

[复制链接]
发表于 2010-12-13 15:52:55 | 显示全部楼层 |阅读模式
看了“开发精彩实例教程”,自己也是试着编了一段程序,不过不知道怎么回事,没有作用啊。问题可能是出在"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
发表于 2010-12-13 19:19:09 | 显示全部楼层
你想问什么问题,程序你可以设断点调试,也可以通过加入debug.print语句来调试。
 楼主| 发表于 2010-12-14 08:08:25 | 显示全部楼层
惭愧,问题没有说完整。我的问题是:就是运行上面的程序后,1.0 没有 改成1.6, 350也没有改成300。“开发精彩实例教程”中的源程序我运行后是可以的,很困惑。
 楼主| 发表于 2010-12-14 11:23:56 | 显示全部楼层
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
 楼主| 发表于 2010-12-15 21:23:25 | 显示全部楼层
回复 mccad 的帖子

多谢关注~调来调去,If adText.textString = "350" Then adText.textString = "300"确实还没有作用,为什么If InStr(adText.textString, "1.0") Then adText.textString = "1.6"这句就可以呢?
发表于 2010-12-15 21:57:52 | 显示全部楼层
象这种情形下,你需要先用debug.print adText.textString 来查看字符串的内容,看是不是你所要的内容
 楼主| 发表于 2010-12-16 08:51:01 | 显示全部楼层
回复 mccad 的帖子

多谢指点~刚才Degug了一下,发现确实如您所说,图上显示是 350 的多行文字,debug显示的是  \fFangSong_GB2312|b0|i0|p34;350 ,怪不得呢。
发表于 2010-12-16 17:44:36 | 显示全部楼层
少用Mtext。Mtext里面带格式代码的。
 楼主| 发表于 2010-12-17 15:46:48 | 显示全部楼层
回复 mikewolf2k 的帖子

多谢指点~你说的格式指的是“\fFangSong_GB2312|b0|i0|p34;350 ”中的红色部分是吧,虽然用InStr()可以获得这个标注文字,但这个确实比较讨厌。有没有更好的方法啊?
发表于 2010-12-20 10:12:34 | 显示全部楼层
把这个mtext拷出来炸掉变成单行文字,然后获得纯粹的文本,如何?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:24 , Processed in 0.192625 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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