[CommandMethod("TestViewPorts", CommandFlags.NoTileMode)]
public void Run()
{
Document adoc = Application.DocumentManager.MdiActiveDocument;
Database db = adoc.Database;
Editor ed = adoc.Editor;
// Проверяем, что мы находимся в пространстве листа
ObjectId
cSpaceId = db.CurrentSpaceId,
mSpaceId = SymbolUtilityServices.GetBlockModelSpaceId(db);
if (cSpaceId == mSpaceId)
{
Application.ShowAlertDialog("Программа работает только в пространстве листа!");
return;
}
// Проверяем наличие видовых экранов на листе
ObjectIdCollection vPortsIds = new ObjectIdCollection();
//LayoutManager layoutMgr = LayoutManager.Current;
//ObjectId curLayoutId = layoutMgr.GetLayoutId(layoutMgr.CurrentLayout);
using (Transaction tr = db.TransactionManager.StartTransaction())
//using (Layout curLay = tr.GetObject(curLayoutId, OpenMode.ForRead) as Layout)
using (BlockTableRecord cSpace = tr.GetObject(cSpaceId, OpenMode.ForRead) as BlockTableRecord)
{
foreach (ObjectId objId in cSpace)
{
using (AcDb.DBObject obj = tr.GetObject(objId, OpenMode.ForRead))
{
if (obj is Viewport)
{
Viewport vPort = obj as Viewport;
vPortsIds.Add(objId);
}
}
}
//vPortsIds = curLay.GetViewports();
}
if (vPortsIds.Count == 0)
{
AcDialogs.ShowAlertDialog("На листе нет видовых экранов!");
return;
}
}