乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 144|回复: 9

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

[复制链接]

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-13 15:52:00 | 显示全部楼层 |阅读模式
看了“开发精彩实例”,自己也是试着编了一段程序,不过不知道怎么回事,没有作用啊。问题可能是出在"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
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2010-12-13 19:19:00 | 显示全部楼层
你想问什么问题,程序你可以设断点调试,也可以通过加入debug.print语句来调试。
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-14 08:08:00 | 显示全部楼层
惭愧,问题没有说完整。我的问题是:就是运行上面的程序后,1.0 没有 改成1.6, 350也没有改成300。“开发精彩实例教程”中的源程序我运行后是可以的,很困惑。
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-14 11:23:00 | 显示全部楼层
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
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-15 21:23:00 | 显示全部楼层
回复
多谢关注~调来调去,If adText.textString = "350" Then adText.textString = "300"确实还没有作用,为什么If InStr(adText.textString, "1.0") Then adText.textString = "1.6"这句就可以呢?
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2010-12-15 21:57:00 | 显示全部楼层
象这种情形下,你需要先用debug.print adText.textString 来查看字符串的内容,看是不是你所要的内容
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-16 08:51:00 | 显示全部楼层
回复
多谢指点~刚才Degug了一下,发现确实如您所说,图上显示是 350 的多行文字,debug显示的是  \fFangSong_GB2312|b0|i0|p34;350 ,怪不得呢。
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2010-12-16 17:44:00 | 显示全部楼层
少用Mtext。Mtext里面带格式代码的。
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2010-12-17 15:46:00 | 显示全部楼层
回复
多谢指点~你说的格式指的是“\fFangSong_GB2312|b0|i0|p34;350 ”中的红色部分是吧,虽然用InStr()可以获得这个标注文字,但这个确实比较讨厌。有没有更好的方法啊?
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2010-12-20 10:12:00 | 显示全部楼层
把这个mtext拷出来炸掉变成单行文字,然后获得纯粹的文本,如何?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 03:22 , Processed in 2.394411 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表