乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 312|回复: 13

数组的对象属性列表?

[复制链接]

15

主题

56

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2007-11-8 14:33:06 | 显示全部楼层 |阅读模式
我想要所有属性的列表

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

56

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2007-11-8 14:43:47 | 显示全部楼层
我认为这是不可能的。我真的很想被证明这是错误的,只是因为看到它会很酷。
回复

使用道具 举报

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2007-11-8 14:57:16 | 显示全部楼层
在http://msdn . Microsoft . com/msdn mag/issues/1200/TypeLib/default . aspx上,MSDN有一篇文章解释了如何使用tlbinf32.dll来实现这一点,但我希望vba中有一些内置的东西。
迈克
回复

使用道具 举报

15

主题

56

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2007-11-8 17:11:11 | 显示全部楼层
可以使用Lisp完成。看看“原子族”函数。
回复

使用道具 举报

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2007-11-8 19:03:03 | 显示全部楼层
Tim,
我能看到的可能获得Atoms-Family对象属性列表的唯一方法是对照我的对象检查Atoms-Family的每个成员,以查看它是否是使用vlax-property-available-p的该对象的属性。 这是你的想法,还是我错过了另一种方式?
迈克·韦弗
回复

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2007-11-8 19:31:26 | 显示全部楼层
这就是我的想法,也是我的议员(从这里)看到的。我不知道还有什么别的办法,迈克。
回复

使用道具 举报

15

主题

56

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2007-11-8 20:51:52 | 显示全部楼层
使用一个AxDbDocument ThisDrawing克隆它。警察
回复

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2007-11-8 21:40:09 | 显示全部楼层

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

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2007-11-8 22:01:40 | 显示全部楼层

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

将层设置为层对象,我得到以下结果:
  1. (setq temp (vl-remove-if-not (function (lambda(var)
  2. (vlax-property-available-p layer var))) (atoms-family 0)))
  3. (LAYERON)

不完全是我所期望的
回复

使用道具 举报

15

主题

56

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
113
发表于 2007-11-8 22:14:59 | 显示全部楼层
好吧,忘掉我上一篇文章中的那些东西
仍然需要引用TypeLineInformation(tlbinf32.dll)。
  1. Public Sub testGetProps()
  2.     Dim cData As Collection
  3.     Set cData = dkb_GetProperties(ThisDrawing.ModelSpace(0)) 'select your object however suits you best
  4. End Sub
  5. Public Function dkb_GetProperties(pObject As Acad0bject) As Collection
  6.     Dim iInterFaceInfo As InterfaceInfo
  7.     Dim cClassInfo As TypeInfo
  8.    
  9.     Dim colProperties As Collection
  10.     Dim i As Integer
  11.    
  12.     Set colProperties = New Collection
  13.    
  14.     Set iInterFaceInfo = InterfaceInfoFromObject(pObject)
  15.     For i = 1 To iInterFaceInfo.Members.Count
  16.         If iInterFaceInfo.Members(i).InvokeKind = INVOKE_PROPERTYGET Then
  17.             colProperties.Add iInterFaceInfo.Members(i).Name
  18.         End If
  19.     Next i
  20.     Set dkb_GetProperties = colProperties
  21. End Function

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 16:54 , Processed in 0.436418 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表