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

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

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

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • 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
  • *****
  • Сообщений: 1115
  • Карма: 173
Расширенные данные имеют ограничение в 16 кб, если не ошибаюсь. И РД не на каждый примитив можно добавлять / удалять / изменять )
Все, что сказано - личное мнение.

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

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

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

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

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

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

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

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

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

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
И РД не на каждый примитив можно добавлять / удалять / изменять )
Что имеется в виду? XData не совместимы с какими-то типами примитивов?
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
С видовыми экранами, насколько я помню - у них уже все забито.
Все, что сказано - личное мнение.

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

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

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

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
С видовыми экранами
Команда XDATA из Express Tools не добавляет Xdata к объектам Civil.
Это из-за ограничений Xdata или ограничение только этой команды?
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Команда XDATA из Express Tools не добавляет Xdata к объектам Civil.
Перепроверь. Без подтверждающего видео не поверю.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
Перепроверь. Без подтверждающего видео не поверю.
Перепроверил на свежесозданных COGO-точках, на TIN Surface из них. В 2014 и 2019.
Покадровое видео:
Цитировать
Command: xdata
Select object:
Enter application name: surf
SURF new application.
Enter an option [3Real/DIR/DISP/DIST/Hand/Int/LAyer/LOng/Pos/Real/SCale/STr/eXit] <eXit>: R
Enter real number: 9999.99
Enter an option [3Real/DIR/DISP/DIST/Hand/Int/LAyer/LOng/Pos/Real/SCale/STr/eXit] <eXit>:
Command:
Command: xdlist
Select object:
Enter application name <*>:
No Xdata associated with Application Name(s).
ArxDbg тоже Xdata у этих объектов не показывает.
Пробовал на чужих трубах, колодцах, коридорах и т.п. - Xdata не добавляются.
После eXit нет "New xdata appended".
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
АлексЮстасу,
В Express Tools добавление Xdata к объектам идёт при помощи функции (entmod). Судя по всему она не работает с объектами Civil 3D. Другие способы прекрасно добавляют Xdata. Пример из ARXDBG: команда ArxDbgTestXdata
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
Другие способы прекрасно добавляют Xdata. Пример из ARXDBG: команда ArxDbgTestXdata
Это хорошо, я на это и надеялся, что дело не в особенностях Xdata, а в команде ET.

Но какие-то ограничения на типы примитивов и объектов у Xdata есть?
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Но какие-то ограничения на типы примитивов и объектов у Xdata есть?
Нет. Для никоторых объектов/примитивов некоторые группы зарезервированы и используются самим AutoCAD. Например, "ACAD". Сразу скажу, что полного списка нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
Спасибо!
В т.ч. за TestXdata.
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
добавление Xdata к объектам идёт при помощи функции (entmod). Судя по всему она не работает с объектами Civil 3D. Другие способы прекрасно добавляют Xdata.
Средствами LISP добавлять Xdata к объектам вертикальных приложений в принципе возможно?
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
АлексЮстасу,
А проверить самостоятельно?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение