using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
// This line is not mandatory, but improves loading performances
[assembly: CommandClass(typeof(GetSortOrder.MyCommands))]
namespace GetSortOrder
{
public class MyCommands
{
[CommandMethod("GetSortOrder")]
public void GetSortOrder()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
if (doc == null) return;
Editor ed = doc.Editor;
PromptEntityResult rs1 = ed.GetEntity("\nВыберите первый примитив: ");
if (rs1.Status != PromptStatus.OK) return;
PromptEntityResult rs2 = ed.GetEntity("\nВыберите второй примитив: ");
if (rs2.Status != PromptStatus.OK) return;
if (rs1.ObjectId == rs2.ObjectId)
{
ed.WriteMessage("\nВыбран один и тот же примитив");
return;
}
using (Transaction tr = doc.TransactionManager.StartTransaction())
{
BlockTableRecord curSpace =
tr.GetObject(doc.Database.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
if (curSpace != null)
{
DrawOrderTable sortTab =
tr.GetObject(curSpace.DrawOrderTableId, OpenMode.ForRead) as DrawOrderTable;
//Handle h1 = sortTab.GetSortHandle(rs1.ObjectId);
//Handle h2 = sortTab.GetSortHandle(rs2.ObjectId);
//if (h1.Value > h2.Value)
// ed.WriteMessage("\nПервый примитив рисуется после второго примитива.");
//else
// ed.WriteMessage("\nВторой примитив рисуется после первого примитива.");
if (!sortTab.FirstEntityIsDrawnBeforeSecond(rs1.ObjectId, rs2.ObjectId))
ed.WriteMessage("\nПервый примитив рисуется после второго примитива.");
else
ed.WriteMessage("\nВторой примитив рисуется после первого примитива.");
}
tr.Commit();
}
}
}
}