yuangw1234 发表于 2006-6-4 21:23:00

不能用getxdata

本人选择一个物体,并对其set xdata,其中data为“螺丝”,现在想用get xdata方法得到
“螺丝”,但msgbox 后是空的 ,请问为什么,程序如下,多谢各位
Public Sub xd()
Dim i As Integer, ssetobj As AcadSelectionSet, selobj As AcadEntity
Dim i1 As Integer, datatype(0) As Integer, data(0) As Variant, getobj As Variant, dattype As Variant, dat As Variant
i = ThisDrawing.SelectionSets.Count
While (i > 0)
If ThisDrawing.SelectionSets.Item(i - 1).Name = "xd" Then
ThisDrawing.SelectionSets.Item(i - 1).Delete
End If
i = i - 1
Wend
Set ssetobj = ThisDrawing.SelectionSets.Add("xd")
datatype(0) = 1001: data(0) = "螺丝"
For i1 = 0 To ssetobj.Count - 1
    Set selobj = ssetobj.Item(i1)
    selobj.SetXData datatype, data
    getobj = selobj.GetXData("", dattype, dat)
Next
    MsgBox getobj
End Sub

雪山飞狐_lzh 发表于 2006-6-5 13:21:00

setXData中datatype, data的元素个数都要大于1,否则将把符合1001码的XData删除
1001码是程序名,不要带参数
后面可以跟一个1000码附上文本信息


yuangw1234 发表于 2006-6-5 13:31:00

斑竹,去改了一下,好象还是不行,斑竹能不能帮我修一下,只在执行时msgbox可以显示"螺丝"这两个字就行,在此先谢谢斑竹!!

雪山飞狐_lzh 发表于 2006-6-5 13:41:00

Public Sub xd()
On Error Resume Next
Dim ssetobj As AcadSelectionSet
Dim selobj As AcadEntity
Dim xt, xd
Dim datatype(1) As Integer, data(1)
ThisDrawing.SelectionSets("xd").Delete
Set ssetobj = ThisDrawing.SelectionSets.Add("xd")
ssetobj.SelectOnScreen
datatype(0) = 1001: data(0) = "myapp"
datatype(1) = 1000: data(1) = "螺丝"
For i = 0 To ssetobj.Count - 1
    Set selobj = ssetobj.Item(i)
    selobj.SetXData datatype, data
    selobj.GetXData "myapp", xt, xd
   MsgBox xd(1)
   
Next
End Sub

xinghesnak 发表于 2006-6-5 14:00:00

顶顶!

yuangw1234 发表于 2006-6-5 16:55:00

多谢版主这样好心的人
页: [1]
查看完整版本: 不能用getxdata