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

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

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

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

  • ADN Club
  • ***
  • Сообщений: 233
  • Карма: 26
    • 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, 00:54:02 от Алексей Терно »

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

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

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

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

Оффлайн АлексЮстасу

  • ADN Club
  • **
  • Сообщений: 80
  • Карма: 0
размер чертежа - 1,5 Мб (без данных файл весит 31,5 Кб)
Интересно бы еще посмотреть на анализ скорости работы с большой загруженностью модели XData или XRecord. Некоторые мнения и тесты вроде бы за то, что на скорость "обычной" работы с моделью (копирование, перенос, выбор и пр.) даже большие объемы XData или XRecord существенно не влияют. Что радует, конечно.

Столкнулся с тем, что не надёжнее :(
Тоже интересно было бы узнать, как влияет на копирование данных из другого чертежа порядок/последовательность описания полей данных в одноименных XData и XRecord?
Например, варианты:
1. не влияет, копируются с той последовательностью полей, что описана в чертеже, в который копируется,
2. влияет - графические элементы копируются, а их XData или XRecord не копируются, если последовательность полей разная,
3. влияет - вообще копирование не выполняется, если последовательность полей XData или XRecord разная,
4. влияет - копируются, но создаются XData или XRecord с новыми названиями (с дописыванием номера или т.п.).
Или еще как-то?

Еще вариант, что не только порядок описания полей в чертежах разный, но и состав полей разный в одноименных XData или XRecord. Еще вариант - одноименные поля имеют разный тип данных.
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 8165
  • Карма: 978
  • Рыцарь ObjectARX
  • Skype: rivilis
Тоже интересно было бы узнать, как влияет на копирование данных из другого чертежа порядок/последовательность описания полей данных в одноименных XData и XRecord?
Ни в XData ни в XRecord нет понятия "описание полей". И то и другое  - неструктурированные данные, которые программист может условно структурировать по своему усмотрению. Так что всё остальное выглядит как бессмысленный набор слов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение