20/06/2014
Установка относительного порядка отрисовки примитивов с помощью .NET
Чтобы установить относительный порядок отрисовки одних примитивов относительно других можно воспользоваться методами DrawOrderTable.MoveAbove или DrawOrderTable.MoveBellow как показано ниже в коде.
Код - C#: [Выделить]
- [CommandMethod("MoveAbove")]
- static public void MoveAbove()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- string message = "\nВыберите примитив для переноса вниз: ";
- PromptEntityOptions optEnt = new PromptEntityOptions(message);
- PromptEntityResult acEnt = ed.GetEntity(optEnt);
- if (acEnt.Status != PromptStatus.OK)
- return;
- message = "\nВыберите целевой примитив: ";
- PromptEntityOptions optTarget = new PromptEntityOptions(message);
- PromptEntityResult acTarget = ed.GetEntity(optTarget);
- if (acTarget.Status != PromptStatus.OK)
- return;
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- Entity ent = tr.GetObject(acEnt.ObjectId,
- OpenMode.ForRead) as Entity;
- // получаем блок
- BlockTableRecord block = tr.GetObject(ent.BlockId,
- OpenMode.ForRead) as BlockTableRecord;
- // получаем таблицу порядка отрисовки блока
- DrawOrderTable drawOrder =
- tr.GetObject(block.DrawOrderTableId,
- OpenMode.ForWrite) as DrawOrderTable;
- ObjectIdCollection ids = new ObjectIdCollection();
- ids.Add(acEnt.ObjectId);
- // Перемещаем выбранный примитив над целевым примитивом.
- drawOrder.MoveAbove(ids, acTarget.ObjectId);
- tr.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/06/setting-relative-draw-order-of-entities-using-net.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=814
Опубликовано 20.06.2014