明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5088|回复: 11

[图元] 设置图层对象顺序

  [复制链接]
发表于 2009-9-28 10:23 | 显示全部楼层 |阅读模式
//按图层列表顺序排序
//列表第一个为显示最顶层
  1.         public void SortDrawOrder(string[] layers)
  2.         {
  3.             SelectionObject selObj = new SelectionObject();
  4.             Database db = AcadPropers.Database;
  5.             DocumentLock docLock = AcadPropers.DocumentManager.MdiActiveDocument.LockDocument();
  6.             using (Transaction tr = AcadPropers.Tm.StartTransaction())
  7.             {
  8.                 BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite, false);
  9.                 BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false);
  10.                 //Get the DrawOrderTable
  11.                 DrawOrderTable orderTable = tr.GetObject(btr.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
  12.                 for (int i = layers.Length-1; i >=0; i--)
  13.                 {
  14.                     string lay = layers[i];
  15.                     TypedValue[] typedValue = new TypedValue[] { new TypedValue(8, lay) };
  16.                     SelectionFilter filter = new SelectionFilter(typedValue);
  17.                     ObjectId[] ids = selObj.ssGet(filter);//选择图层对象
  18.                     if(ids!=null)
  19.                     {
  20.                         ObjectIdCollection objectIdColl = new ObjectIdCollection(ids);
  21.                         orderTable.MoveToTop(objectIdColl);//设置选定对象置顶
  22.                     }
  23.                 }
  24.                 //刷新显示
  25.                 AcadPropers.Editor.Regen();
  26.                 tr.Commit();
  27.             }
  28.             docLock.Dispose();
  29.         }

评分

参与人数 3明经币 +3 金钱 +66 贡献 +10 激情 +10 收起 理由
游天居士 + 1 + 50 很给力!
lichunyu + 6
雪山飞狐_lzh + 2 + 10 + 10 + 10 【好评】好程序

查看全部评分

发表于 2009-9-28 10:30 | 显示全部楼层

此方法是用于:

按照给定的图层名列表,对图层的实体的绘图顺序进行调整,以达到按图层顺序排序的目的.

 楼主| 发表于 2009-9-28 16:01 | 显示全部楼层
谢谢老大帮我解释
发表于 2011-4-26 15:39 | 显示全部楼层
不是很理解 啊
发表于 2011-4-27 08:01 | 显示全部楼层
呵呵,顶一下。我也经常用MoveToTop方法。感觉很好。有时写检查程序,可以用这个方法把错误对象置于其他对象之上,修改起来就方便很多了。
发表于 2011-10-17 16:38 | 显示全部楼层
Mark,新手学习
发表于 2012-12-14 15:44 | 显示全部楼层
收下了,游天居士到此一游
发表于 2012-12-26 13:41 | 显示全部楼层
本帖最后由 mkhsj928 于 2012-12-26 13:49 编辑

好贴!赞!CAD有调整对象显示顺序的相关命令,但大多数时候不起作用,或则存盘后重新打开又乱套了,汗死!
发表于 2013-1-3 16:33 | 显示全部楼层
cad中有这样的命令啊
发表于 2013-1-4 16:53 | 显示全部楼层
小弟不懂,要怎么做成可以加载的程序呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 21:05 , Processed in 1.254995 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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