所属关系在deepclone和wblock的作用.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
所属关系在deepclone和wblock的作用

引用关系的介绍: 引用关系包括两种:所有关系和指针关系,它们分别叙述如下: 1.所有关系(ower refrence):针对所有者与被所有者来叙述,它们具有双向关系 1)硬所有(hard ower): 所有者的存在依赖于被所有者,并且被所有者的存在也依赖于所有者,它们之间相互依赖。一旦一个对象被其他对象硬所有了,它就不能被直接删除,除非这种硬所有关系解除。 比如:实体对其扩展字典是硬所有关系,实体中的数据保存在它的扩展字典中,如果这些数据不存在的话,实体本身就会出错。另外,扩展字典它也不能离开实体而独立存在,所以说它们是相互依赖的。 2)软所有(soft ower): 所有者的存在并不依赖于被所有者,但是被所有的存在依赖于所有者。它与硬所有的区别就是,一个对象被另外一个对象软所有之后,这个对象还可以被直接删除。 比如:扩展字典对其字典里的条目是软所有关系,扩展字典本身的存在不依赖于其条目的存在,但是条目不能离开字典而独立存在。条目不被保护,它们可以被直接删除。 注意: a)一个对象只能有一个所有者; b)被另外一个对象所有的对象只能直接派生于AcDbObject而不能派生于AcDbEntity,因为直接派生于AcDbObject的对象可以直接加入到数据库中,而派生于AcDbEntity的对象需要加入到块表中。 2.指针关系(point refrence):针对指向与被指向来叙述 1)硬指针(hard point): 实体的存在依赖于被指向的实体,它保护被指向的实体不能被直接删除。另外,被指向的实体可以不依赖别的任何实体而独立存在。 比如:文字实体与其字体样式是硬指针关系,文字不能离开字体样式的存在而独立存在,一个字体样式如果被一个文字实体硬指向了的话,就不能被直接删除。而文字样式可以独立于具体的文字对象而存在。 2)软指针(soft point): 实体的存在不依赖于被指向的实体,它们都可以被自由删除。它们的存在彼此间相互独立。 由于这种关系的实质就是在实体中保存一个指向另外一个实体的软所有Id,其它的任何操作都由使用者自己明确制定,在此就不做例子了。 注意:如果两个实体都派生于AcDbEntity,而想实现它们之间具有一定的关系,则必须是指针关系而不能是所有关系,原因在所有关系中已经叙述。 Deepclone操作中需要使用的引用关系: Deepclone操作默认使用所有关系,包括硬所有和软所有。一旦执行了Deepclone后,它自动将其所有关系拷贝一份至目标中。 Deepclone不自动处理任何指针关系,如果需要处理时,我们必须重载此函数,然后明确的写出具体的操作。 Wblock操作中需要使用的引用关系: Wblock操作默认使用硬引用关系,分别是硬所有和硬指针。一旦执行了 Wblock后,它将自动将这两个种关系拷贝一份之目标中。 Wblock不自动处理软引用关系,如果需要处理时,我们必须重载此函数,然后指定具体操作。 注意:软指针关系没有一个操作默认使用,其使用方式需要使用者自己定义。 在Deepclone中,如果想要操作指针关系,该怎么办: 需要重载Deepclone函数,函数体中需要明确知道指针所指向的实体是派生于AcDbObject还是AcDbEntity,这样才能将正确的所有者传入给指针对象。如:指针对象派生于AcDbObject,则只需要将实体本身当作所有者传入即可;而如果指针对象派生于AcDbEntity,则需要将本对象的所有者当作指针对象的所有者传入 在Wblock中,如果想要操作软引用关系,该怎么办: 在Wblock实现函数中,需要区分软所有和软指针所引用的对象派生于哪个实体,分别作出处理。如果派生于AcDbObject,则将实体本身作为参数当作被引用对象的所有者传入; 如果派生于AcDbEntity,则要区分实体本身是派生于AcDbObject还是派生于AcDbEntity;如果自己派生于AcDbObject,则需要得到块表记录,将块表记录作为被引用的所有者传入,而如果自己派生于AcDbEntity,则需要将自己的所有者作为被引用的所有者传入。 Deepclone中,为什么只默认使用所有关系: 这是由所有关系的性质决定的,一般来说所有关系是建立在两个实体之间密切关系,一个实体如果拥有别的对象的话,要么是绝对依赖于它、要么就是它的容器,这样当复制实体本身时,就必须要将于它密切联系的实体拷贝一份。 还要明确一点的就是Deepclone执行的时机,它在以下命令时被执行: 1) Cop

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档