找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 861|回复: 7

[VBA函数]:关于扩展数据不能读取的问题

[复制链接]
发表于 2004-4-2 22:08:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Dim i As Integer
Dim sset As Object
Dim acadUtil As Object
Dim xdtype As Variant
Dim xdata As Variant
Dim xd As Variant
Dim appname As String
Dim entobj As Object

Call AcadOpen
Set AcadDoc = acadObj.ActiveDocument
Set MSpace = AcadDoc.ModelSpace
Set acadUtil = AcadDoc.Utility     'acadDoc must have been defined earlier
AppActivate "Autocad"
   
Set sset = AcadDoc.SelectionSets.Add("SS1")
sset.SelectOnScreen
i = 0
appname = "Test_Application"
For Each entobj In sset
    '提取数据
    magstr = ""
    i = 0
    entobj.GetXData appname, xdtype, xdata
    If VarType(xdtype) <> vbEmpty Then
        For Each xd In xdata
            msgstr = msgstr & vbCrLf & xdtype(i) & ":" & xd
            i = i + 1
        Next xd
    End If
    MsgBox msgstr
Next entobj


上面是一段vb程序,目的是获取再当前图形中所选择的物体的扩展数据并将显示,这段程序改编自一个别人的程序,可我总是无法获取物体的扩展数据,我知道原因,是appname = "Test_Application"
的原因,记得再一本书上看到的,应用程序再cad内需要注册名称的,我估计是名称的问题,不知道如何获得该名称。
我想获得dicad平面和纵断面文件的扩展数据以便对他进行进一步的改造,可以无法获得他的扩展数据。
不知道高手能不能指导指导
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2004-4-5 19:58:21 | 显示全部楼层
将appname设置为"",就可以返回所有的扩展数据。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-11 11:57:22 | 显示全部楼层
二楼楼主说得不错,可是为什么要这样呢?能否解释得更清楚点,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2004-4-11 17:09:24 | 显示全部楼层
如果appname不为空,则GetXData返回具体的某一应用程序名称的扩展数据,应用程序名称就是使用SetXData时所设置的,因而必须相同才可能读取到数据。如果为空,则返回所有的扩展数据。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-17 17:42:09 | 显示全部楼层
多谢多谢。可以访问到,我发现也可以通过vlisp编译器获得选择物体的扩展属性,不过我发现向一些道路软件的扩展数据也不复杂,只是个 appname,其他的扩展属性都是一些本来就可以访问到的属性。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-26 20:05:10 | 显示全部楼层
ntchjie :
你在研究dicad?
这是我当年研究dicad的成果,用ARX写的一个程序,源代码全部公开,有兴趣的话拿去看看
dicad都是所有实体数据都是存放在xdata中的

http://www.xdcad.net/forum/showthread.php?threadid=172332
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-1 20:54:48 | 显示全部楼层
在命令行里输入:(entget(car(entsel))"("*")) 选择要查看的对象,就可以获取相应的信息。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-1 20:12:46 | 显示全部楼层
最初由 zhqchn 发布
[B]ntchjie :
你在研究dicad?
这是我当年研究dicad的成果,用ARX写的一个程序,源代码全部公开,有兴趣的话拿去看看
dicad都是所有实体数据都是存放在xdata中的

[url]http://www.xdcad.net/forum/showthread.ph... [/B]

多谢老兄,不过我没有学习过c,对arx编程一点都没有概念,只有自学的一点vb,dicad的xdata我基本上已经掌握了如何读取了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 05:20 , Processed in 0.194864 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表