乐筑天下

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

绘图顺序编程的讨论

[复制链接]

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-12-27 21:53:00 | 显示全部楼层 |阅读模式
绘图顺序,在2005版本中可以通过程序对其进行操作。
因为2005版本增加了一个SortentsTable对象,这个对象就是绘图顺序对象。
(发展到目前有点古怪,绘图顺序也是图元对象、而表格样式也是图元对象)
虽然它显示在图元对象处,其实它却是从词典中的一个对象而已,为了编程的方便而提出来。
(同样道理,表格样式也是词典中的一个对象,而图形属性是扩展记录中的一个对象)我们可以通过以下程序下得到SortentsTable对象:
  1.        '获取扩展词典,并且在需要时,添加 SortentsTable 对象
  2.        Dim eDictionary As Object
  3.        Set eDictionary = ThisDrawing.ModelSpace.GetExtensionDictionary
  4.        ' 防止在调用 GetObject 时出现异常
  5.        On Error Resume Next
  6.        Dim sentityObj As Object
  7.        Set sentityObj = eDictionary.GetObject("ACAD_SORTENTS")
  8.        On Error GoTo 0
  9.        If sentityObj Is Nothing Then
  10.                  ' 没有 SortentsTable 对象,则添加
  11.                  Set sentityObj = eDictionary.AddObject("ACAD_SORTENTS", "AcDbSortentsTable")
  12.        End If
得到的SortentsTable对象默认为模型空间中绘图顺序。
在SortentsTable对象的方法属性中可以看出,绘图顺序可以通过SetRelativeDrawOrder 方法来指定部分对象来成为SortentsTable对象的排序对象,也就是可以在操作指定在所提供的对象间排序,而不是对所有图形中的对象排序。
在SortentsTable对象中提供了BLOCK方法来获得绘图顺序对象对哪个块有效,默认情况下是模型空间。而在对象模型中却没有提供能指定其它块做为绘图顺序的对象,这样的话,用户就无法指定某个布局给SortentsTable对象以便排序。
所以在编程中,如果对模型空间的图元进行排序是很轻易的事情。而需要在布局空间中排序则不是一件容易的事。SortentsTable对象提供了几种排序的方法,置最前、置最后、置某对象前、置某对象后,(MoveAbove、 MoveBelow 、MoveToBottom 、MoveToTop) 另外还提供了交换两个对象的顺序SwapObjects    。再结合了它提供了只对部分图元排序这样的功能,倒是可以编制也比系统提供的命令更强大的功能。可惜就是在布局上出了点问题。
详细的对象模型可参见已经升级到2005版本的对象模型。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-16 16:11 , Processed in 5.560116 second(s), 54 queries .

© 2020-2025 乐筑天下

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