Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable

Автор Тема: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable  (Прочитано 4463 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Здравствуйте!

Попробовал создать таблицу с применением Autodesk.AutoCAD.DatabaseServices.DataTable, фрагмент кода:
Код - C# [Выбрать]
  1. Autodesk.AutoCAD.DatabaseServices.DataTable tbl = new Autodesk.AutoCAD.DatabaseServices.DataTable();
  2.                         DataCellCollection dcc=new DataCellCollection();
  3.                         for(int i = 0; i < data.Count; i++)
  4.                         {
  5.                                 DataCell dc =new DataCell();
  6.                                 dc.SetString(data.ElementAt(i).Key);
  7.                                 DataCell dc2 = new DataCell();
  8.                                 dc2.SetString(data.ElementAt(i).Value);
  9.                                 dcc.Add(dc);
  10.                                 dcc.Add(dc2);
  11.                         }
Вопрос: Как ее сохранить в чертеже? в blockTableRecord она не добавляется. Можно пример какого-нибудь кода.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Atomohod,
Встречный вопрос - зачем использовать DataTable? Что ты хочешь получить?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
вопрос - зачем использовать DataTable? Что ты хочешь получить?
Просто создать таблицу по данным из файла(Excell/txt/json).

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Дополнительный вопрос. Какое отношение DataTable имеет к таблице AutoCAD (класс Table)?
Намёк понятен?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Намёк понятен?
Подозреваю, что я использую ее не для того, но примеров использования ее по назначению я в helpe не нашел. По описанию вроде можно в нее писать данные. Или я не прав?


Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 806
  • Карма: 166
    • Мои плагины к Автокаду
Все, что можно вставить в чертеж, наследуется от Entity. DataTable явно не из этого рода. В отличии от Table, которая по сути блок.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Подозреваю, что я использую ее не для того
Пока ты её еще не используешь, а экспериментируешь. DataTable можно использовать для хранения данных в чертеже. Но это не будет видимой таблицей.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 806
  • Карма: 166
    • Мои плагины к Автокаду
DataTable можно использовать для хранения данных в чертеже.
Заинтриговало. А в каком словаре такие объекты хранятся? Есть примеры использования?

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Заинтриговало. А в каком словаре такие объекты хранятся? Есть примеры использования?
Поддерживаю, можно подробнее и с примерами если возможно. Выходит, что это своеобразные xData в табличной форме без dxf кодов и прочих заморочек?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
DataTable можно использовать для хранения данных в чертеже.
Заинтриговало. А в каком словаре такие объекты хранятся? Есть примеры использования?
В принципе в любом. Например, в NamedObjectsDictionary.  Из готовых примеров нагуглил это: https://forums.augi.com/showthread.php?135930-DataTable-AppendRow-Fail
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Выходит, что это своеобразные xData в табличной форме без dxf кодов и прочих заморочек?
Это отдельный объект и соответственно потребуется поддерживать его копирование/удаление. С xData намного проще.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
потребуется поддерживать его копирование/удаление
Пока не понял - зачем это? Если я внутри чертежа создал dataTable и использую ее как хранилище своих данных, пользователю она не видна, а данные специфичны только для данного чертежа и не имеют смысла в другом то для чего поддерживать ее копирование? Или это как в интерфейсе - нужно обязательно реализовать такие методы?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 806
  • Карма: 166
    • Мои плагины к Автокаду
Из готовых примеров нагуглил это
Ваш гугл намного круче моего ;) Это скорее альтернатива xRecord, чем xData. На первый взгляд не проще, но интересно попробовать...

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Это скорее альтернатива xRecord, чем xData
Именно.
Если я внутри чертежа создал dataTable и использую ее как хранилище своих данных, пользователю она не видна, а данные специфичны только для данного чертежа и не имеют смысла в другом то для чего поддерживать ее копирование?
Если эта таблица общая для всего чертежа, то всё в порядке. Но такую таблицу можно привязать и к объекту (например BlockTableRecord или LayerTableRecord или ...) или к примитиву (через ExtensionDictionary) и тогда понадобится разбираться с логикой, что будет при копировании объекта/примитива...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение