- UID
- 5244
- 积分
- 1648
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-18
- 最后登录
- 1970-1-1
|
发表于 2002-11-14 17:59:10
|
显示全部楼层
但是有时候保存一些信息用这种方法还是最好的,
如:SetXData(EntObj,AppName,Tag,Value)就可以保存了,
GetXData(EntObj,AppName,Tag)就可以读取了。比每次自己去分析强多了。以下是我编程中用到的两个函数。

- [FONT=courier new]
- '获取扩展数据
- Public Function GetXDataText(ByVal EntObj As AcadObject, ByVal Name As String, ByVal Tag As String) As String
- Dim xdType As Variant
- Dim xdData As Variant
- Dim i As Integer
- Dim temp As Variant
-
- On Error GoTo ErrTrap
- If EntObj Is Nothing Then Exit Function
- If Name = "" Or Tag = "" Then Exit Function
- GetXDataText = ""
- EntObj.GetXData Name, xdType, xdData
- If Not IsEmpty(xdType) Then
- For i = LBound(xdType) To UBound(xdType)
- If xdData(i) <> "" Then
- temp = Split(xdData(i), "=", , vbTextCompare)
- If Not IsEmpty(temp) Then
- If StrComp(temp(0), Tag, vbTextCompare) = 0 Then
- If UBound(temp) >= 1 Then GetXDataText = temp(1)
- Exit For
- End If
- End If
- temp = Empty
- End If
- Next
- End If
- xdType = Empty
- xdData = Empty
- Exit Function
-
- ErrTrap:
- Debug.Print "GetXDataText: " & Err.Number & ", " & Err.Description
- On Error GoTo 0
- End Function
- '设置扩展数据
- Public Sub SetXDataText(ByRef EntObj As AcadObject, ByVal Name As String, ByVal Tag As String, ByVal Text As String)
- Dim xdType As Variant
- Dim xdData As Variant
- Dim i As Integer
- Dim temp As Variant
- Dim bExist As Boolean
- On Error GoTo ErrTrap
- If EntObj Is Nothing Then Exit Sub
- If Name = "" Or Tag = "" Then Exit Sub
- EntObj.GetXData Name, xdType, xdData
- If Not IsEmpty(xdType) Then
- For i = LBound(xdType) To UBound(xdType)
- If xdData(i) <> "" Then
- temp = Split(xdData(i), "=", , vbTextCompare)
- If Not IsEmpty(temp) Then
- If StrComp(temp(0), Tag, vbTextCompare) = 0 Then
- bExist = True
- xdData(i) = Tag & "=" & Text
- EntObj.SetXData xdType, xdData
- Exit For
- End If
- End If
- temp = Empty
- End If
- Next
- If bExist = False Then
- temp = UBound(xdType) + 1
- ReDim Preserve xdType(0 To temp)
- ReDim Preserve xdData(0 To temp)
- xdType(temp) = 1000
- xdData(temp) = Tag & "=" & Text
- EntObj.SetXData xdType, xdData
- temp = Empty
- End If
- Else
- ReDim xdType(0 To 1) As Integer
- ReDim xdData(0 To 1) As Variant
- xdType(0) = 1001
- xdData(0) = Name
- xdType(1) = 1000
- xdData(1) = Tag & "=" & Text
- EntObj.SetXData xdType, xdData
- End If
- xdType = Empty
- xdData = Empty
- Exit Sub
-
- ErrTrap:
- Debug.Print "SetXDataText: " & Err.Number & ", " & Err.Description
- On Error GoTo 0
- End Sub
- [/FONT]
|
|