乐筑天下

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

怎样用VB实现…………

[复制链接]

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-10-17 17:05:00 | 显示全部楼层 |阅读模式
怎样用VB把一张图中含文字“ABC”的单行文字、多行文字、属性参照的值、属性标签都替换成文字“XYZ”???
麻烦各位大虾帮忙解决一下!谢谢!!!
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-10-17 19:42:00 | 显示全部楼层
可以实现啊,有些东西应该自己试试,如果没有思路大家可以讨论,这样才能更快地提高
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2003-10-17 20:19:00 | 显示全部楼层
不知道楼主是否感觉到字符串替换不方便。
我写好是程序,但明总指示:不要仅授人以鱼,要授人以渔。我感觉授人以渔不知从何说起,只好在程序中多加了些注释,希望不违明总初衷。ACAD实现部分的代码就不帖了。
'字符串替换函数,将源字符串ResStr中与Str1相同的子串替换为Str2后返回
'调用方法:Ent.TextString = ReplaceString(Ent.TextString, "ABC", "XYZ")
'为保证函数的通用性,这个函数不修改源字符串。
'在楼主要求的应用中,也可将替换功能声明为Sub过程。
'在程序中不需要使用临时字符串TempStr,直接使用源字符串ResStr。
'在调用时使用类似这样的语句:  ReplaceString Ent.TextString,Str1,Str2
Function ReplaceString(ResStr As String, Str1 As String, Str2 As String) As String
  Dim TempStr As String
  Dim i As Integer
  i = 1
  TempStr = ResStr   '复制源字符串,运算后返回
  'InStr()函数返回从位置i开始搜索,源字符串中与Str1相同的子串首次出现的位置
  '该函数默认情况进行二进制比较,要在比较时忽略大小写区别,可在参数表中加上数字0
  '也就是这样:InStr(i,TempStr,Str1,0)
  While InStr(i, TempStr, Str1) > 0
    i = InStr(i, TempStr, Str1)
    TempStr = Left(TempStr, i - 1) & Str2 & Mid(TempStr, i + Len(Str2))
  Wend
  ReplaceString = TempStr
End Function
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-10-18 14:51:00 | 显示全部楼层
谢谢leeyeafu!!!
对块中的属性的值,似乎不太好替换,怎样才能得到属性的TextString?
回复

使用道具 举报

20

主题

653

帖子

15

银币

中流砥柱

Rank: 25

铜币
733
发表于 2003-10-18 17:07:00 | 显示全部楼层
Attrib对象由Text派生,可以使用vla-get-TextString
不过你应该先获取这个Insert中所包含的Attrib(s),使用vla-get-GetAttributes
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-10-19 08:45:00 | 显示全部楼层
谢谢!
但那是VL中的用法。
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2003-10-19 09:36:00 | 显示全部楼层
若实体对象是AcDbBlockReference块参考且有属性(HasAttribute),可用GetAttribute方法将属性内容放到一个AcadAttributes数组中,然后浏览整个数组,每一个AcadAttribute对象都可能有TagString和TextString属性。
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-10-19 09:47:00 | 显示全部楼层
谢谢leeyeafu!!!
我再试一下,我一定要做出来!!!
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-10-19 15:42:00 | 显示全部楼层
各位大虾,帮我完成一下下面的SUB,功能是替换一张图中的所有文字。
Sub Swap(curdoc As Object)
    ' Create the selection set
    Dim ssetObj As AcadSelectionSet
    Set ssetObj = curdoc.SelectionSets.Add("SSET")
    Dim mode As Integer
    Dim FilterType(5) As Integer
    Dim FilterData(5) As Variant
   
    FilterType(0) = -4
    FilterData(0) = ""
    mode = acSelectionSetAll
   
    ssetObj.Select mode, FilterType, FilterData
   
     Dim ent As Object
     Dim j As Integer
     
     For Each ent In ssetObj
      If ent.eEntityName = "AcDbMtext" Or ent.eEntityName = "AcDbText" Then
         
     Next
      
End Sub
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-10-19 20:11:00 | 显示全部楼层
你的程序把最重要的一段让给别人写了,自己怎么不先写一下呢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:13 , Processed in 0.589993 second(s), 72 queries .

© 2020-2025 乐筑天下

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