怎样用VB实现…………
怎样用VB把一张图中含文字“ABC”的单行文字、多行文字、属性参照的值、属性标签都替换成文字“XYZ”???麻烦各位大虾帮忙解决一下!谢谢!!! 可以实现啊,有些东西应该自己试试,如果没有思路大家可以讨论,这样才能更快地提高 不知道楼主是否感觉到字符串替换不方便。
我写好是程序,但明总指示:不要仅授人以鱼,要授人以渔。我感觉授人以渔不知从何说起,只好在程序中多加了些注释,希望不违明总初衷。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 谢谢leeyeafu!!!
对块中的属性的值,似乎不太好替换,怎样才能得到属性的TextString? Attrib对象由Text派生,可以使用vla-get-TextString
不过你应该先获取这个Insert中所包含的Attrib(s),使用vla-get-GetAttributes 谢谢!
但那是VL中的用法。 若实体对象是AcDbBlockReference块参考且有属性(HasAttribute),可用GetAttribute方法将属性内容放到一个AcadAttributes数组中,然后浏览整个数组,每一个AcadAttribute对象都可能有TagString和TextString属性。 谢谢leeyeafu!!!
我再试一下,我一定要做出来!!! 各位大虾,帮我完成一下下面的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) = "<OR"
FilterType(1) = 0
FilterData(1) = "MTEXT"
FilterType(2) = 0
FilterData(2) = "TEXT"
FilterType(3) = 0
FilterData(3) = "INSERT"
FilterType(4) = 0
FilterData(4) = "ATTDEF"
FilterType(5) = 0
FilterData(5) = "OR>"
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 你的程序把最重要的一段让给别人写了,自己怎么不先写一下呢。