设置图层对象顺序
//按图层列表顺序排序//列表第一个为显示最顶层 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();
}
<p>此方法是用于:</p><p>按照给定的图层名列表,对图层的实体的绘图顺序进行调整,以达到按图层顺序排序的目的.</p> 谢谢老大帮我解释 不是很理解 啊 呵呵,顶一下。我也经常用MoveToTop方法。感觉很好。有时写检查程序,可以用这个方法把错误对象置于其他对象之上,修改起来就方便很多了。 Mark,新手学习 收下了,游天居士到此一游 本帖最后由 mkhsj928 于 2012-12-26 13:49 编辑
好贴!赞!CAD有调整对象显示顺序的相关命令,但大多数时候不起作用,或则存盘后重新打开又乱套了,汗死!
cad中有这样的命令啊 小弟不懂,要怎么做成可以加载的程序呢?
页:
[1]
2