Создание таблицы

Автор Тема: Создание таблицы  (Прочитано 5247 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
Создание таблицы
« : 28-08-2017, 11:29:57 »
Здравствуйте.
Подскажите пожалуйста такую тему. Есть настроенный стиль таблицы. В этом стиле уже настроены количество столбцов, шапка таблицы подписана, где надо ячейки объедены и т.п. Если вставлять таблицу через меню Вставка-Таблица... то все нормально, таблица вставляется остается только количество строк добавить. А вот как это через NET сделать. Я вставляю таблицу, применяю к ней нужный стиль, но шапки таблицы нет, просто пустые ячейки даже не отформатированные.
Спасибо

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Re: Создание таблицы
« Ответ #1 : 28-08-2017, 11:43:01 »
Вы код покажите которым вставляете таблицу... и там будет понятно , что Вам посоветовать.

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
Re: Создание таблицы
« Ответ #2 : 28-08-2017, 11:52:48 »
Да код самый простой, все что нашел в сети
 
Код - vb.net [Выбрать]
  1. Using tr
  2.             Dim TableStyleId As ObjectId = acCurDb.Tablestyle
  3.             Dim acTableStyleTbl As DBDictionary = tr.GetObject(acCurDb.TableStyleDictionaryId, OpenMode.ForRead)
  4.             For Each id As DBDictionaryEntry In acTableStyleTbl
  5.                 If id.Key Like "Ведомость углов поворота прямых и кривых" Then
  6.                     acCurDb.Tablestyle = id.Value
  7.                     GoTo linetable
  8.                 End If
  9.             Next
  10.             Dim db1 As Database = New Database(False, False)
  11.             db1.ReadDwgFile(PutchStyle & "НСТПР_Шаблон Civil_1.dwt", System.IO.FileShare.Read, True, "")
  12.             acTableStyleTbl = tr.GetObject(db1.TableStyleDictionaryId, OpenMode.ForRead)
  13.             Dim TableStyleD As ObjectIdCollection = New ObjectIdCollection
  14.             For Each id As DBDictionaryEntry In acTableStyleTbl
  15.                 If id.Key Like "Ведомость углов поворота прямых и кривых" Then
  16.                     TableStyleD.Add(id.Value)
  17.                     Exit For
  18.                 End If
  19.             Next
  20.             If TableStyleD.Count > 0 Then
  21.                 Dim destDb1 As Database = acDoc.Database
  22.                 Dim destDictId1 As ObjectId = destDb1.TableStyleDictionaryId
  23.                 Dim iMap1 As IdMapping = New IdMapping()
  24.                 destDb1.WblockCloneObjects(TableStyleD, destDictId1, iMap1, DuplicateRecordCloning.Replace, False)
  25.                 'проверяем
  26.                 acTableStyleTbl = tr.GetObject(acCurDb.TableStyleDictionaryId, OpenMode.ForRead)
  27.                 For Each id As DBDictionaryEntry In acTableStyleTbl
  28.                     If id.Key Like "Ведомость углов поворота прямых и кривых" Then
  29.                         TableStyleId = id.Value
  30.                         acCurDb.Tablestyle = id.Value
  31.                         Exit For
  32.                     End If
  33.                 Next
  34.             End If
  35. linetable:
  36.             '===============================================================================================
  37.             Dim bt As BlockTable = tr.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite)
  38.             Dim ms As BlockTableRecord = tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
  39.             Dim pPtRes As PromptPointResult
  40.             Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")
  41.             pPtOpts.Message = vbLf & "Укажите точку вставки таблицы: "
  42.             pPtRes = acDoc.Editor.GetPoint(pPtOpts)
  43.             Dim ptStart As Point3d = pPtRes.Value
  44.             Dim tb As Autodesk.AutoCAD.DatabaseServices.Table = New Autodesk.AutoCAD.DatabaseServices.Table()
  45.             tb.TableStyle = acCurDb.Tablestyle
  46.             tb.SetDatabaseDefaults()
  47.             ms.UpgradeOpen()
  48.             ms.AppendEntity(tb)
  49.             tb.Position = ptStart
  50.             tb.SetSize(3, 24)
  51.             tb.SetRowHeight(5)
  52.             tr.AddNewlyCreatedDBObject(tb, True)
  53.             tr.Commit()
  54.         End Using

Отмечено как Решение Захаров Максим 28-08-2017, 13:18:10

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Создание таблицы
« Ответ #3 : 28-08-2017, 12:41:49 »
Если в двух словах - надо программно прочитать шаблон из стиля и создать на его основе таблицу.
Как это сделать, можно посмотреть в примере у Андрея Бушмана: http://bushman-andrey.blogspot.ru/2014/06/autocad_5.html. Смотрите метод CreateTable2 (строка 597).

Оффлайн Захаров МаксимАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 141
  • Карма: 3
Re: Создание таблицы
« Ответ #4 : 28-08-2017, 13:17:57 »
Спасибо Дмитрий. Все получилось.