DXF中关于扩展词典ExtensionDictionary分析

 

DXF中关于扩展词典

ExtensionDictionary分析

 

一、基本知识

1、关于硬所有、软所有

在基于文本文件的DXF中,相互之间的关系存在所谓的硬所有(组代码360–369)或软所有(组代码350-359)。在AutoCAD开发人员文档中是这样描述的:

硬所有者句柄;指向同一个 DXF 文件或图形中的其他对象的任意硬所有者指针。

软所有者句柄;指向同一个 DXF 文件或图形中的其他对象的任意软所有者指针。

一般来说,硬所有是指除非先删除了引用,否则不能删除被引用对象。硬所有可以保护对象免受清理,而软参照则不能。

例如在词典中,如果词典没有对象的相应引用,词典就没有存在的必要。在这个意义上来说,词典引用通常是硬所有的引用。词典硬所有采用组代码360,软所有采用组代码350

 

 

二、对象与扩展词典

1、对象拥有的扩展词典

一个对象可以没有扩展词典或者只有一个扩展词典,不能有两个扩展词典。在ActiveX Automation中,obj.HasExtensionDictionary判断对象obj是否有扩展词典

obj.GetExtensionDictionary返回对象obj的扩展词典对象,如果没有,则自动创建一个。

如果扩展词典已被附着到对象上,则下表显示的组码将被输出。

ACAD_XDICTIONARY 记录组码说明

102"{ACAD_XDICTIONARY" 表示扩展词典组的开始

360所有着词典的硬键指针标识符/句柄

102组的结束,"}"

例如:

在实体段实体句柄

  0

LWPOLYLINE

  5

50

后出现的:

102

{ACAD_XDICTIONARY

360

B5

102

}表示:此对象(句柄为50)拥有扩展词典(句柄为B5)。

 

 

2、扩展词典

词典是一个AcDbObject对象,类似于其它对象,所以词典具有AcDbObject的属性,例如句柄、所有者和xdata。词典用以存储用户自己定义的各类符号表及其他大量数据。

词典的DXF类名为DICTIONARY,子类名是AcDbDictionaryDXF中组的顺序是280 281 3 350/360(3开始重复)。由于从3开始课伊重复,因此扩展字典可以拥有多个扩展记录。

 

例如:在对象段中:

0

SECTION

  2

OBJECTS

。。。。。。

后:

  0

DICTIONARY

  5

B5

330

50

100

AcDbDictionary

280

     1

281

     1

  3

XRecordAnnotation

360

B6

  3

XRecordAnnotation22

360

CE

表示扩展字典(句柄为B5)拥有两个扩展记录:

名称为XrecordAnnotation,句柄为B6

名称为XrecordAnnotation2,句柄为CE

 

3、扩展记录

扩展记录的DXF类名为XRECORD ,子类名是AcDbXrecord

1)实体的扩展词典能引用多个AcDbXrecord对象,AcDbXrecords能包含2G的任意数据。

2AcDbXrecord是一个任意数据的容器,能包含从1369(除了5105外)之间以任意顺序出现的任意组。其中的数据没有任何限制,可以被任何其它对象所拥有。

 

扩展记录通常与数据库的特殊实体相关联。在ActiveX Automation中,使用GetXRecordDataSetXRecordData方法。它们将两组组代码和值作为参数,这些组将作为变量传递。

XRECORD下列组码是所有外部记录公用的组码。

组码说明  100子类标记 (AcDbXrecord)

 

例如在

  0

DICTIONARY

。。。。。

后:

  0

XRECORD

  5

B6

102

{ACAD_REACTORS

330

B5

102

}

330

B5

100

AcDbXrecord

280

     1

  1

存储扩展记录431-2

  6

批文号码431-2

  0

XRECORD

  5

CE

102

{ACAD_REACTORS

330

B5

102

}

330

B5

100

AcDbXrecord

280

     1

  1

存储扩展记录431-22

  6

批文号码431-22

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值