数组的对象属性列表?
我想要所有属性的列表**** Hidden Message ***** 我认为这是不可能的。我真的很想被证明这是错误的,只是因为看到它会很酷。 在http://msdn . Microsoft . com/msdn mag/issues/1200/TypeLib/default . aspx上,MSDN有一篇文章解释了如何使用tlbinf32.dll来实现这一点,但我希望vba中有一些内置的东西。
迈克 可以使用Lisp完成。看看“原子族”函数。 Tim,
我能看到的可能获得Atoms-Family对象属性列表的唯一方法是对照我的对象检查Atoms-Family的每个成员,以查看它是否是使用vlax-property-available-p的该对象的属性。 这是你的想法,还是我错过了另一种方式?
迈克·韦弗 这就是我的想法,也是我的议员(从这里)看到的。我不知道还有什么别的办法,迈克。 使用一个AxDbDocument ThisDrawing克隆它。警察
使用上述链接中的信息,此代码(尽管可能很难看,也很蹩脚)将返回一个集合,其中填充了所需Autocad实体的属性代码0]
大部分代码来自类型库信息库的帮助文件。
您的VBA项目必须包含对typeline information(tlbinf 32 . dll)的引用
玩得开心
结果在附带的图像中
这就是我的想法,也是我的议员(从这里)看到的。我不知道还有什么别的办法,迈克
将层设置为层对象,我得到以下结果:
(setq temp (vl-remove-if-not (function (lambda(var)
(vlax-property-available-p layer var))) (atoms-family 0)))
(LAYERON)
不完全是我所期望的 好吧,忘掉我上一篇文章中的那些东西
仍然需要引用TypeLineInformation(tlbinf32.dll)。
Public Sub testGetProps()
Dim cData As Collection
Set cData = dkb_GetProperties(ThisDrawing.ModelSpace(0)) 'select your object however suits you best
End Sub
Public Function dkb_GetProperties(pObject As Acad0bject) As Collection
Dim iInterFaceInfo As InterfaceInfo
Dim cClassInfo As TypeInfo
Dim colProperties As Collection
Dim i As Integer
Set colProperties = New Collection
Set iInterFaceInfo = InterfaceInfoFromObject(pObject)
For i = 1 To iInterFaceInfo.Members.Count
If iInterFaceInfo.Members(i).InvokeKind = INVOKE_PROPERTYGET Then
colProperties.Add iInterFaceInfo.Members(i).Name
End If
Next i
Set dkb_GetProperties = colProperties
End Function
页:
[1]
2