明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1613|回复: 5

关于添加扩展数据的问题?

[复制链接]
发表于 2012-12-11 20:51:05 | 显示全部楼层 |阅读模式
dim resBuf as new ResultBuffer

..........

obj.xdata.add(resbuf)   为某个对象添加扩展数据时,怎样判断 resbuf能否作为扩展数据添加到此对象中去??
如果定义resbuf时,没有符合要求,会直接导致CAD崩溃。所以想在添加之前做一个能否添加的检测,此代码怎么写?

发表于 2012-12-11 21:50:40 | 显示全部楼层
哪些 ResultBuffer 是不符合要求的?

难道不是dxfcode里面定义的数据类型?
发表于 2012-12-12 08:59:11 | 显示全部楼层
1public Autodesk.AutoCAD.DatabaseServices.ResultBuffer GetXDataForApplication(string applicationName)
    Autodesk.AutoCAD.DatabaseServices.DBObject 的成员
这个可以查询对象当前是否附加某个名字的扩展数据
2,public virtual Autodesk.AutoCAD.DatabaseServices.ResultBuffer XData { set; get; }
    Autodesk.AutoCAD.DatabaseServices.DBObject 的成员
这个则可以查询对象是否附加了扩展数据
发表于 2012-12-12 09:03:21 | 显示全部楼层
本帖最后由 sieben 于 2012-12-12 09:23 编辑

扩展数据的DXFCode 要求是1000之后,好像是1000~1005,具体可以看 Autodesk.AutoCAD.DatabaseServices.DxfCode里面X开头的,扩展数据对DXFCode的使用有严格要求,不同的数值对应不同的数据类型,比如1000对应文本,1005对应句柄,其他整数,实数的等各有对应,具体可看DxfCode enum X开头的项;有个特例注册应用程序名字对应的是DxfCode.ExtendedDataRegAppName
发表于 2012-12-12 09:05:39 | 显示全部楼层
ResultBuffer 可以用于扩展数据XData及数据词典Xrecord,两者的DXFCode是不同的
 楼主| 发表于 2012-12-12 11:37:38 | 显示全部楼层
由于构建 ResultBuffer 的相关数据是来源于一个外部配置文件,通过配置文件,用户可以很方便的写入符合自己要求的扩展数据。此方法虽然灵活,缺点也很明显,就是不能保证数据的合理性。如果在写入扩展数据前不对 ResultBuffer 进行检查,可能会导致CAD崩溃。 程序中又没办法使用 Try
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-29 08:47 , Processed in 0.171011 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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