#region "System References"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
#endregion
#region "Acad References"
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Colors;
#endregion
//_____________________________//
[CommandMethod("tabc")]
public void testAddtableBC()
{
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
// создаем таблицу
Table tb = new Table();
tb.TableStyle = db.Tablestyle;
tb.SuppressRegenerateTable(true);
// число строк
int RowsNum = 10;// только количество строк для данных
// число столбцов
int ColumnsNum = 5;
// высота строки
double rowheight = 3;
// ширина столбца
double columnwidth = 30;
// вставка строк и столбцов
tb.InsertRows(0, rowheight, RowsNum + 1);// first one is already created
tb.Cells[0, 0].TextString = "Заголовок";
tb.Rows[0].IsMergeAllEnabled = true;
tb.InsertColumns(0, columnwidth, ColumnsNum);
tb.SetRowHeight(rowheight);
tb.SetColumnWidth(columnwidth);
tb.Position = ed.GetPoint("\nТочка вставки таблицы: ").Value;
// заполнение ячеек по-одной
for (int i = 1; i < RowsNum + 2; i++)
{
for (int j = 0; j <= ColumnsNum; j++)
{
tb.Cells[i, j].TextHeight = 1;
if (i == 1)
tb.Cells[i, j].TextString = "Столбец " + (j + 1).ToString();
else
tb.Cells[i, j].TextString = (i - 1).ToString() + "." + j.ToString();
tb.Cells[i, j].Alignment = CellAlignment.MiddleCenter;
tb.Cells[i, j].DataFormat = "Whole Number";// целочисленный, не знаю русского аналога
}
}
int a = 0;
tb.Rows[a].Style = "Title";
tb.Rows[a + 1].Style = "Header";
for (a = 2; a < RowsNum + 2; a++)
{
tb.Rows[a].Style = "Data";
}
// добавление в отображение таблицы
// различный цвет для строк
for (a = 2; a < RowsNum + 2; a++)
{
tb.Rows[a].ContentColor = Color.FromColorIndex(ColorMethod.ByAci, 16);
if (a % 2 == 0) tb.Rows[a].BackgroundColor = Color.FromRgb(245, 238, 224);
else tb.Rows[a].BackgroundColor = Color.FromRgb(227, 236, 243);
}
// титульная строка
tb.Rows[0].BackgroundColor = Color.FromRgb(150, 121, 126);
tb.Rows[0].ContentColor = Color.FromRgb(235, 176, 0);
// строка заголовков
tb.Rows[1].BackgroundColor = Color.FromRgb(169, 172, 193);
tb.Rows[1].ContentColor = Color.FromRgb(102, 26, 0);
// добавление широкой рамки, значение по усмотрению
tb.Columns[0].Borders.Left.LineWeight = LineWeight.LineWeight050;
tb.Columns[tb.Columns.Count - 1].Borders.Right.LineWeight = LineWeight.LineWeight050;
// получаем титульную строку
Row rw = tb.Rows[0];
rw.Borders.Top.LineWeight = LineWeight.LineWeight050;
// получаем строку заголовков
rw = tb.Rows[1];
rw.Borders.Top.LineWeight = LineWeight.LineWeight050;
rw.Borders.Bottom.LineWeight = LineWeight.LineWeight050;
// делаем широкие линии в вертикалях ячеек заголовочной строки
for (a = 1; a < ColumnsNum; a++)
{
tb.Cells[1, a].Borders.Left.LineWeight = LineWeight.LineWeight050;
tb.Cells[1, a].Borders.Right.LineWeight = LineWeight.LineWeight050;
}
// получаем последнюю строку
rw = tb.Rows[tb.Rows.Count - 1];
rw.Borders.Bottom.LineWeight = LineWeight.LineWeight050;
tb.SuppressRegenerateTable(false);
tb.GenerateLayout();
btr.AppendEntity(tb);
tr.AddNewlyCreatedDBObject(tb, true);
tr.Commit();
Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("lwdisplay", 1);
}
}