小狼 发表于 2009-9-28 10:23:00

设置图层对象顺序

//按图层列表顺序排序
//列表第一个为显示最顶层      public void SortDrawOrder(string[] layers)
      {
            SelectionObject selObj = new SelectionObject();
            Database db = AcadPropers.Database;
            DocumentLock docLock = AcadPropers.DocumentManager.MdiActiveDocument.LockDocument();
            using (Transaction tr = AcadPropers.Tm.StartTransaction())
            {
                BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite, false);
                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt, OpenMode.ForWrite, false);
                //Get the DrawOrderTable
                DrawOrderTable orderTable = tr.GetObject(btr.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
                for (int i = layers.Length-1; i >=0; i--)
                {
                  string lay = layers;
                  TypedValue[] typedValue = new TypedValue[] { new TypedValue(8, lay) };
                  SelectionFilter filter = new SelectionFilter(typedValue);
                  ObjectId[] ids = selObj.ssGet(filter);//选择图层对象
                  if(ids!=null)
                  {
                        ObjectIdCollection objectIdColl = new ObjectIdCollection(ids);
                        orderTable.MoveToTop(objectIdColl);//设置选定对象置顶
                  }
                }
                //刷新显示
                AcadPropers.Editor.Regen();
                tr.Commit();
            }
            docLock.Dispose();
      }

lzx838 发表于 2009-9-28 10:30:00

<p>此方法是用于:</p><p>按照给定的图层名列表,对图层的实体的绘图顺序进行调整,以达到按图层顺序排序的目的.</p>

小狼 发表于 2009-9-28 16:01:00

谢谢老大帮我解释

lichunyu 发表于 2011-4-26 15:39:54

不是很理解 啊

yxr_MJTD 发表于 2011-4-27 08:01:15

呵呵,顶一下。我也经常用MoveToTop方法。感觉很好。有时写检查程序,可以用这个方法把错误对象置于其他对象之上,修改起来就方便很多了。

yanglin112 发表于 2011-10-17 16:38:17

Mark,新手学习

游天居士 发表于 2012-12-14 15:44:20

收下了,游天居士到此一游

mkhsj928 发表于 2012-12-26 13:41:46

本帖最后由 mkhsj928 于 2012-12-26 13:49 编辑

好贴!赞!CAD有调整对象显示顺序的相关命令,但大多数时候不起作用,或则存盘后重新打开又乱套了,汗死!

aming001 发表于 2013-1-3 16:33:09

cad中有这样的命令啊

潘阳科 发表于 2013-1-4 16:53:20

小弟不懂,要怎么做成可以加载的程序呢?
页: [1] 2
查看完整版本: 设置图层对象顺序