ADN Open CIS
Сообщество программистов Autodesk в СНГ

16/05/2013

Как создать Таблицу и заполнить её ячейки средствами .NET

Следующий код показывает как создать таблицу и заполнить её ячейки. Некоторые устаревшие методы таблицы еще используются в коде. Вы получите предупреждение при компиляции при использовании устаревших методов. Пожалуйста, используйте новые методы.

Код - C#: [Выделить]
  1. [CommandMethod("testaddtable")]
  2. public void testaddtable()
  3. {
  4.     Database  db =
  5.         HostApplicationServices.WorkingDatabase;
  6.  
  7.  
  8.     using (Transaction tr =
  9.         db.TransactionManager.StartTransaction())
  10.     {
  11.         BlockTable bt =
  12.             (BlockTable)tr.GetObject(db.BlockTableId,
  13.                                     OpenMode.ForRead);
  14.         ObjectId msId =
  15.             bt[BlockTableRecord.ModelSpace];
  16.  
  17.         BlockTableRecord btr =
  18.             (BlockTableRecord)tr.GetObject(msId,
  19.                                 OpenMode.ForWrite);
  20.  
  21.         // create a table
  22.         Table tb = new Table();
  23.         tb.TableStyle = db.Tablestyle;
  24.  
  25.         // Число строк
  26.         Int32 RowsNum = 5;
  27.         // Число столбцов
  28.         Int32 ColumnsNum = 5;
  29.  
  30.         // Высота строки
  31.         double rowheight = 3;
  32.         // Ширина столбца
  33.         double columnwidth = 20;
  34.  
  35.         // Добавляем строки и колонки
  36.         tb.InsertRows(0,
  37.                     rowheight,
  38.                     RowsNum);
  39.         tb.InsertColumns(0,
  40.                     columnwidth,
  41.                     ColumnsNum);
  42.  
  43.         tb.SetRowHeight(rowheight);
  44.         tb.SetColumnWidth(columnwidth);
  45.  
  46.         Point3d eMax = db.Extmax;
  47.         Point3d eMin = db.Extmin;
  48.         double CenterY =
  49.             (eMax.Y + eMin.Y) * 0.5;
  50.         tb.Position =
  51.             new Point3d(10, 10, 0);
  52.  
  53.         // заполняем по одной все ячейки
  54.         for (int i = 0;
  55.             i < RowsNum;
  56.             i++)
  57.         {
  58.             for (int j = 0;
  59.                 j < ColumnsNum;
  60.                 j++)
  61.             {
  62.                 tb.Cells[i, j].TextHeight =  1;
  63.                 if (i == 0 && j == 0)
  64.                     tb.Cells[i, j].TextString =
  65.                         "Заголовок";
  66.                 else
  67.                     tb.Cells[i, j].TextString =
  68.                         i.ToString() + "," + j.ToString();
  69.  
  70.                 tb.Cells[i,j].Alignment =
  71.                     CellAlignment.MiddleCenter;
  72.             }
  73.         }
  74.  
  75.         tb.GenerateLayout();
  76.         btr.AppendEntity(tb);
  77.         tr.AddNewlyCreatedDBObject(tb, true);
  78.         tr.Commit();
  79.     }
  80.  
  81. }
  82.  

Источник: http://adndevblog.typepad.com/autocad/2012/05/how-to-create-a-table-and-fill-in-its-cells-with-net.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=32

Автор перевода: Александр Ривилис
Опубликовано 16.05.2013
Отредактировано 14.04.2015 в 00:36:52