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

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 29-10-2019, 21:53:39

Название: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Atomohod от 29-10-2019, 21:53:39
Здравствуйте!

Попробовал создать таблицу с применением 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 она не добавляется. Можно пример какого-нибудь кода.
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Александр Ривилис от 29-10-2019, 21:55:23
Atomohod,
Встречный вопрос - зачем использовать DataTable? Что ты хочешь получить?
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Atomohod от 29-10-2019, 22:11:12
вопрос - зачем использовать DataTable? Что ты хочешь получить?
Просто создать таблицу по данным из файла(Excell/txt/json).
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Александр Ривилис от 29-10-2019, 22:12:50
Дополнительный вопрос. Какое отношение DataTable имеет к таблице AutoCAD (класс Table)?
Намёк понятен?
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Atomohod от 29-10-2019, 22:22:43
Намёк понятен?
Подозреваю, что я использую ее не для того, но примеров использования ее по назначению я в helpe не нашел. По описанию вроде можно в нее писать данные. Или я не прав?
(https://i.postimg.cc/sM9PTkQh/2019-10-29-222131.jpg) (https://postimg.cc/sM9PTkQh)
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: avc от 29-10-2019, 22:24:16
Все, что можно вставить в чертеж, наследуется от Entity. DataTable явно не из этого рода. В отличии от Table, которая по сути блок.
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Александр Ривилис от 29-10-2019, 22:32:07
Подозреваю, что я использую ее не для того
Пока ты её еще не используешь, а экспериментируешь. DataTable можно использовать для хранения данных в чертеже. Но это не будет видимой таблицей.
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: avc от 29-10-2019, 22:34:22
DataTable можно использовать для хранения данных в чертеже.
Заинтриговало. А в каком словаре такие объекты хранятся? Есть примеры использования?
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Atomohod от 29-10-2019, 22:37:26
Заинтриговало. А в каком словаре такие объекты хранятся? Есть примеры использования?
Поддерживаю, можно подробнее и с примерами если возможно. Выходит, что это своеобразные xData в табличной форме без dxf кодов и прочих заморочек?
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Александр Ривилис от 29-10-2019, 22:47:48
DataTable можно использовать для хранения данных в чертеже.
Заинтриговало. А в каком словаре такие объекты хранятся? Есть примеры использования?
В принципе в любом. Например, в NamedObjectsDictionary.  Из готовых примеров нагуглил это: https://forums.augi.com/showthread.php?135930-DataTable-AppendRow-Fail
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Александр Ривилис от 29-10-2019, 22:49:20
Выходит, что это своеобразные xData в табличной форме без dxf кодов и прочих заморочек?
Это отдельный объект и соответственно потребуется поддерживать его копирование/удаление. С xData намного проще.
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Atomohod от 29-10-2019, 22:54:41
потребуется поддерживать его копирование/удаление
Пока не понял - зачем это? Если я внутри чертежа создал dataTable и использую ее как хранилище своих данных, пользователю она не видна, а данные специфичны только для данного чертежа и не имеют смысла в другом то для чего поддерживать ее копирование? Или это как в интерфейсе - нужно обязательно реализовать такие методы?
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: avc от 29-10-2019, 22:56:03
Из готовых примеров нагуглил это
Ваш гугл намного круче моего ;) Это скорее альтернатива xRecord, чем xData. На первый взгляд не проще, но интересно попробовать...
Название: Re: Как использовать Autodesk.AutoCAD.DatabaseServices.DataTable
Отправлено: Александр Ривилис от 29-10-2019, 23:00:39
Это скорее альтернатива xRecord, чем xData
Именно.
Если я внутри чертежа создал dataTable и использую ее как хранилище своих данных, пользователю она не видна, а данные специфичны только для данного чертежа и не имеют смысла в другом то для чего поддерживать ее копирование?
Если эта таблица общая для всего чертежа, то всё в порядке. Но такую таблицу можно привязать и к объекту (например BlockTableRecord или LayerTableRecord или ...) или к примитиву (через ExtensionDictionary) и тогда понадобится разбираться с логикой, что будет при копировании объекта/примитива...