mkweaver 发表于 2007-11-8 14:33:06

数组的对象属性列表?

我想要所有属性的列表
**** Hidden Message *****

mkweaver 发表于 2007-11-8 14:43:47

我认为这是不可能的。我真的很想被证明这是错误的,只是因为看到它会很酷。

T.Willey 发表于 2007-11-8 14:57:16

在http://msdn . Microsoft . com/msdn mag/issues/1200/TypeLib/default . aspx上,MSDN有一篇文章解释了如何使用tlbinf32.dll来实现这一点,但我希望vba中有一些内置的东西。
迈克

mkweaver 发表于 2007-11-8 17:11:11

可以使用Lisp完成。看看“原子族”函数。

T.Willey 发表于 2007-11-8 19:03:03

Tim,
我能看到的可能获得Atoms-Family对象属性列表的唯一方法是对照我的对象检查Atoms-Family的每个成员,以查看它是否是使用vlax-property-available-p的该对象的属性。 这是你的想法,还是我错过了另一种方式?
迈克·韦弗

SomeCallMeDave 发表于 2007-11-8 19:31:26

这就是我的想法,也是我的议员(从这里)看到的。我不知道还有什么别的办法,迈克。

mkweaver 发表于 2007-11-8 20:51:52

使用一个AxDbDocument ThisDrawing克隆它。警察

SomeCallMeDave 发表于 2007-11-8 21:40:09


使用上述链接中的信息,此代码(尽管可能很难看,也很蹩脚)将返回一个集合,其中填充了所需Autocad实体的属性代码0]
大部分代码来自类型库信息库的帮助文件。
您的VBA项目必须包含对typeline information(tlbinf 32 . dll)的引用
玩得开心
结果在附带的图像中

SomeCallMeDave 发表于 2007-11-8 22:01:40


这就是我的想法,也是我的议员(从这里)看到的。我不知道还有什么别的办法,迈克

将层设置为层对象,我得到以下结果:
(setq temp (vl-remove-if-not (function (lambda(var)
(vlax-property-available-p layer var))) (atoms-family 0)))
(LAYERON)
不完全是我所期望的

mkweaver 发表于 2007-11-8 22:14:59

好吧,忘掉我上一篇文章中的那些东西
仍然需要引用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
查看完整版本: 数组的对象属性列表?