using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Windows;
[assembly: CommandClass(typeof(Rivilis.TableUtils))]
namespace Rivilis
{
public class TableUtils
{
[CommandMethod("TabSubSel",
CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void TabSubSel()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
if (doc == null) return;
Editor ed = doc.Editor;
PromptSelectionResult res = ed.SelectImplied();
if (res.Status != PromptStatus.OK)
{
ed.WriteMessage("\nНичего не выбрано!");
return;
}
if (res.Value.Count == 1 &&
res.Value.GetObjectIds()[0].ObjectClass.IsDerivedFrom(
RXClass.GetClass(typeof(Table))))
{
using (Table tab = res.Value.GetObjectIds()[0].Open(OpenMode.ForRead) as Table)
{
if (tab.HasSubSelection)
{
CellRange cells = tab.SubSelection;
if (cells.IsSingleCell)
{
ed.WriteMessage("\nЯчейка:");
ed.WriteMessage("\n\tСтрока = {0} Колонка = {1}",
cells.TopRow, cells.LeftColumn);
}
else
{
ed.WriteMessage("\nДиапазон ячеек:");
ed.WriteMessage("\n\tВерхняя строка = {0} Нижняя строка = {1}",
cells.TopRow, cells.BottomRow);
ed.WriteMessage("\n\tЛевая колонка = {0} Правая колонка = {1}",
cells.LeftColumn, cells.RightColumn);
}
}
else
{
ed.WriteMessage("\nНи одна ячейка не выбрана!");
}
}
}
else
{
ed.WriteMessage("\nВыбрано больше одного примитива или не выбрана таблица!");
}
}
// Добавление контекстного меню
[CommandMethod("ContextMenuExtTest")]
static public void ContextMenuExtTest()
{
ContextMenuExtension contectMenu = new ContextMenuExtension();
MenuItem item0 = new MenuItem("Что выбрано в таблице?");
item0.Click += new EventHandler(Table_Select);
contectMenu.MenuItems.Add(item0);
Application.AddObjectContextMenuExtension(
RXClass.GetClass(typeof(Table)), contectMenu);
}
// Обработчик пункта меню
static void Table_Select(object sender, EventArgs e)
{
Application.DocumentManager.MdiActiveDocument
.SendStringToExecute("_TabSubSel ", false, false, false);
}
}
}