Не заполняется таблицы

Автор Тема: Не заполняется таблицы  (Прочитано 7078 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн valtur1983Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Не заполняется таблицы
« : 26-12-2021, 12:29:00 »
Здравствуйте!

Подскажите в чем может быть проблема

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

Код - C# [Выбрать]
  1. Database db = adoc.Database;
  2.  
  3.             int intTableHeight = 173;
  4.             int intPosColumnInModel = 1;
  5.             int intPosRowInModel = 8;
  6.             int intCurRowSpecaSheet = 0;
  7.  
  8.             bool bNewSheetSpeca = true;
  9.  
  10.             Table tbl = new Table();
  11.             tbl.TableStyle = db.Tablestyle;
  12.  
  13.             double RowHeight = 7.0;
  14.  
  15.             using (Transaction tr = db.TransactionManager.StartTransaction())
  16.             {
  17.                 for (int n = 0; n < Speca.Count; n++)
  18.                 {
  19.                     if (bNewSheetSpeca)
  20.                     {
  21.                         tbl = new Table();
  22.                         tbl.TableStyle = db.Tablestyle;
  23.  
  24.                         tbl.SetColumnWidth(40.0);
  25.                         tbl.SetRowHeight(RowHeight);
  26.  
  27.                         tbl.InsertColumns(0, 20.0, 1);
  28.                         tbl.InsertColumns(1, 130.0, 1);
  29.                         tbl.InsertColumns(2, 60.0, 1);
  30.                         tbl.InsertColumns(3, 35.0, 1);
  31.                         tbl.InsertColumns(4, 45.0, 1);
  32.                         tbl.InsertColumns(5, 20.0, 2);
  33.                         tbl.InsertColumns(7, 25.0, 1);
  34.  
  35.                         BlockReference blRef = DrawBlock(intShagSetkiX * (intPosColumnInModel - 1), -intShagSetkiY * (intPosRowInModel - 1), ".Рамка А3 спека");
  36.                         DrawAttribute(blRef, false, 387.5, 25.0, "NUM_SHEET", "1", AttachmentPoint.MiddleCenter);
  37.                         DrawAttribute(blRef, false, 387.5, 25.0, "NUM_SHEET1", "2", AttachmentPoint.MiddleCenter);
  38.                         DrawAttribute(blRef, false, 330.0, 12.5, "NAME_SHEET", "Спецификация оборудования, изделий и материалов", AttachmentPoint.MiddleCenter);
  39.                         DrawBlock(intShagSetkiX * (intPosColumnInModel - 1) + 20.0, -intShagSetkiY * (intPosRowInModel - 1) + 292.0, ".шапка спека");
  40.  
  41.                         tbl.Position = new Point3d(intShagSetkiX * (intPosColumnInModel - 1) + 20, -intShagSetkiY * (intPosRowInModel - 1) + 249.0, 0.0);
  42.  
  43.                         tbl.GenerateLayout();
  44.                         BlockTableRecord sp = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
  45.                         sp.AppendEntity(tbl);
  46.                         tr.AddNewlyCreatedDBObject(tbl, true);
  47.  
  48.                         bNewSheetSpeca = false;
  49.                         intCurRowSpecaSheet = 0;
  50.                     }
  51.  
  52.                     for (int m = 0; m < tbl.Columns.Count; m++)
  53.                     {
  54.                         tbl.Cells[intCurRowSpecaSheet, 1].TextString = "\\W0.75;" + Speca[n]?.strName ?? "";
  55.                         tbl.Cells[intCurRowSpecaSheet, 2].TextString = "\\W0.75;" + Speca[n]?.strMarka ?? "";
  56.                         tbl.Cells[intCurRowSpecaSheet, 4].TextString = "\\W0.75;" + Speca[n]?.strIzgotovitel ?? "";
  57.                         tbl.Cells[intCurRowSpecaSheet, 5].TextString = "\\W0.75;" + Speca[n]?.strEdIzm ?? "";
  58.                         tbl.Cells[intCurRowSpecaSheet, 6].TextString = "\\W0.75;" + Speca[n]?.strKolvo ?? "";
  59.                         tbl.Cells[intCurRowSpecaSheet, m].Borders.Right.LineWeight = LineWeight.LineWeight060;
  60.                         tbl.Cells[intCurRowSpecaSheet, m].Borders.Left.LineWeight = LineWeight.LineWeight060;
  61.                         if (m == 1)
  62.                         {
  63.                             tbl.Cells[intCurRowSpecaSheet, m].Alignment = CellAlignment.MiddleLeft;
  64.                             tbl.SetMargin(intCurRowSpecaSheet, m, CellMargins.Left, 3);
  65.                         }
  66.                     }
  67.  
  68.                     tbl.GenerateLayout();
  69.                     if (tbl.Height > intTableHeight)
  70.                     {
  71.                         tbl.DeleteRows(intCurRowSpecaSheet, 1);
  72.                         n--;
  73.                         bNewSheetSpeca = true;
  74.                         intPosColumnInModel++;
  75.                         tbl.RecomputeTableBlock(true);
  76.                     }
  77.                     else
  78.                         tbl.InsertRows(intCurRowSpecaSheet++, RowHeight, 1);
  79.                 }
  80.                 tr.Commit();
  81.             }
  82.  
  83.  

Оффлайн valtur1983Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Re: Не заполняется таблицы
« Ответ #1 : 26-12-2021, 14:31:00 »
Разобрался с проблемой

Все дело было с методом InserRows, затирались предыдущие записи;

Подскажите есть ли метод добавления строчки в таблицу а не вставки?


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не заполняется таблицы
« Ответ #2 : 26-12-2021, 15:25:59 »
Подскажите есть ли метод добавления строчки в таблицу а не вставки?
А в чем разница? Вставка после конца таблицы и есть добавление строки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Не заполняется таблицы
« Ответ #3 : 26-12-2021, 15:28:38 »
И еще. Очень рекомендую сразу после создания таблицы добавлять её в базу данных. В противном случае могут возникать проблемы, которые неоднократно упоминались на нашем форуме.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение