明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1442|回复: 0

绘图顺序编程的讨论

[复制链接]
发表于 2004-12-27 21:53:00 | 显示全部楼层 |阅读模式
绘图顺序,在2005版本中可以通过程序对其进行操作。
因为2005版本增加了一个SortentsTable对象,这个对象就是绘图顺序对象。
(AutoCAD发展到目前有点古怪,绘图顺序也是图元对象、而表格样式也是图元对象)
虽然它显示在图元对象处,其实它却是从词典中的一个对象而已,为了编程的方便而提出来。
(同样道理,表格样式也是词典中的一个对象,而图形属性是扩展记录中的一个对象)我们可以通过以下程序下得到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版本的对象模型。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 22:36 , Processed in 0.146671 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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