乐筑天下

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

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

[复制链接]

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2012-12-11 20:51:00 | 显示全部楼层 |阅读模式
dim resBuf as new ResultBuffer
..........
obj.xdata.add(resbuf)   为某个对象添加扩展数据时,怎样判断 resbuf能否作为扩展数据添加到此对象中去??
如果定义resbuf时,没有符合要求,会直接导致CAD崩溃。所以想在添加之前做一个能否添加的检测,此代码怎么写?
回复

使用道具 举报

3

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2012-12-11 21:50:00 | 显示全部楼层
哪些 ResultBuffer 是不符合要求的?
难道不是dxfcode里面定义的数据类型?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2012-12-12 08:59:00 | 显示全部楼层
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 的成员
这个则可以查询对象是否附加了扩展数据
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2012-12-12 09:03:00 | 显示全部楼层

扩展数据的DXFCode 要求是1000之后,好像是1000~1005,具体可以看 Autodesk.AutoCAD.DatabaseServices.DxfCode里面X开头的,扩展数据对DXFCode的使用有严格要求,不同的数值对应不同的数据类型,比如1000对应文本,1005对应句柄,其他整数,实数的等各有对应,具体可看DxfCode enum X开头的项;有个特例注册应用程序名字对应的是DxfCode.ExtendedDataRegAppName
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2012-12-12 09:05:00 | 显示全部楼层
ResultBuffer 可以用于扩展数据XData及数据词典Xrecord,两者的DXFCode是不同的
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2012-12-12 11:37:00 | 显示全部楼层
由于构建 ResultBuffer 的相关数据是来源于一个外部配置文件,通过配置文件,用户可以很方便的写入符合自己要求的扩展数据。此方法虽然灵活,缺点也很明显,就是不能保证数据的合理性。如果在写入扩展数据前不对 ResultBuffer 进行检查,可能会导致CAD崩溃。 程序中又没办法使用 Try
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:18 , Processed in 0.400077 second(s), 64 queries .

© 2020-2025 乐筑天下

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