AutoCAD .NET API: Исследование возможностей расширенных данных (XData)

Автор Тема: AutoCAD .NET API: Исследование возможностей расширенных данных (XData)  (Прочитано 1153 раз)

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

Оффлайн Алексей Терно

  • ADN Club
  • ***
  • Сообщений: 208
  • Карма: 22
    • C3D Extensions
  • Skype: alexeyterno
Столкнулся я c исключением eXdataSizeExceeded - нехватка места в хранилище XData. Потом выяснил, что славные парни из Автодеска для таких вот случаев придумали XRecord:
Цитировать
The Xrecord class is a data storage class that was implemented primarily to allow ADSRX and AutoLISP programs a means to store data in pieces larger than the xdata's 16KB-per-object limit. Each Xrecord object is capable of storing up to 2GB. By establishing an object's extension dictionary as the xrecord's owner, it's possible to associate large amounts of data with that object.

Решил проверить...

Вот пример кода для записи и чтения данных:
Извините, вам запрещён просмотр содержимого спойлеров.

Если кратко, то я создал отрезок и записал в него 10 000 строк по 10 000 символов (я немного ошибся и по факту оказалось на одну итерацию меньше в каждом цикле).
Вот результаты:
  • время записи данных - 592 секунды
  • размер чертежа - 1,5 Мб (без данных файл весит 31,5 Кб)
  • кол-во записей: 9999
  • кол-во символов: 99980001

UPD: после команды AUDIT длина строк не обрезается.
« Последнее редактирование: 23-05-2018, 01:54:02 от Алексей Терно »

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 753
  • Карма: 112
Расширенные данные имеют ограничение в 16 кб, если не ошибаюсь. И РД не на каждый примитив можно добавлять / удалять / изменять )
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!