| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Описание xdata

Описание xdata

Ответ
Поиск в этой теме
Непрочитано 27.09.2014, 23:09 #1
Описание xdata
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 2,935

Пардон за наивные вопросы - только пытаюсь знакомиться с xdata. Пишу в "Программирование", поскольку ответить смогут только программисты?
Пока имею возможность рассматривать xdata только с помощью команд xdata и xdlist из Express Tools.
1. Единое описание xdata у однотипных объектов не предусмотрено? Т.е. в принципе каждая отдельная xdata потенциально уникальна? Например, одна xdata "Труба", у одного графического элемента, может иметь один набор полей (допустим, для материала труб и диаметра), а другая "Труба" же, но у другого элемента может иметь совсем другой набор полей и числом, и типами полей (допустим, для назначения трубы, толщины стенок, предельного давления, сечения)? Тогда получается, что для анализа и манипулирования данными из xdata необходимо самостоятельно описывать структуры и состав xdata где-то вовне dwg? Но как быть с тем, что это почти бесполезно. Ведь ничто не ограничивает различие числа, типов и порядка следования полей у xdata для данных однотипных объектов?
2. Как описывать в xdata целочисленные поля для чисел больше 32767?
В xdata для целочисленных значений предусмотрены типы int и long.
Если задать для поля типа int или поля типа long число больше 32767, то появляется сообщение, что требуется целое значение до 32767.
Других типов целочисленных полей в xdata не предусмотрено.
3. Как идентифицировать поля данных в xdata - для каких данных какое поле? Ни при описании полей при команде xdata, ни при просмотре их с помощью xdlist не видно никаких идентификаторов полей. Единственное - порядок следования полей?
Допустим, присоединяю xdata к элементу с тремя полями типа str, символьными, описанными в последовательности: поле1, поле2, поле3. Но с помощью xdlist виден порядок полей обратный:
Цитата:
* Registered Application Name: XDATA_1
* Code 1002, Starting or ending brace: {
* Code 1000, ASCII string: содержание_поля_3
* Code 1000, ASCII string: содержание_поля_2
* Code 1000, ASCII string: содержание_поля_1
* Code 1002, Starting or ending brace: }
Как при этом найти нужное поле?

Или эти вопросы от особенности не самих xdata, а особенность работы команд xdata и xdlist из Express Tools?
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 28.09.2014 в 03:34.
Просмотров: 18891
 
Непрочитано 28.09.2014, 06:56
#2
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 12,700


Цитата:
Пардон за наивные вопросы - только пытаюсь знакомиться с xdata
Ну, давай, знакомься. Может быть когда ознакомишься, то все-таки поймешь, насколько наивна твоя идея о хранении внутри DWG "описательных блоков", о которых мечтал в соседней ветке.

По пунктам отвечать специально не буду. Идея (найти "заначку" в DWG) порочна в принципе. А данные надо хранить вне чертежа, в базе данных. Вот там могут быть любые типы, любая структура, и "как найти" решается элементарно.

А в xdata (и других местах, которые есть) надо хранить только ссылки.
ShaggyDoc вне форума  
 
Непрочитано 28.09.2014, 12:41
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,510


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если задать для поля типа int или поля типа long число больше 32767, то появляется сообщение, что требуется целое значение до 32767.
Это косяк Express Tools, похоже - уже сам натыкался. Это ограничения для int (печальное наследие VBA? - для многих других языков Integer является 32-разрядным), для long при установке программно все нормально - сохраняется 32-битное число.

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как при этом найти нужное поле?
Работает как FIFO стек - в каком порядке запихнешь данные, в таком и получишь. Т.е. при малейшем изменений формата представления данных придется переписывать все функции, работающие с xData данных объектов - почему уважаемый ShaggyDoc очень нервничает - когда речь заходит о хранении именно данных в xData
Сергей812 вне форума  
 
Непрочитано 28.09.2014, 13:18
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,890
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Похожая тема с 2005 года. http://forum.dwg.ru/showthread.php?t=3719
Полезные ссылки на Xdata и словари http://forum.dwg.ru/showpost.php?p=787874&postcount=7
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 30.09.2014, 02:59
#5
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,935


Сможет кто-нибудь подправить эти xdata.lsp и xdlist.lsp из Express Tools, чтобы в long-поля можно было вводить целые числа больше 32767, а также видеть созданные поля xdata в их реальном порядке? Иначе тяжело понять действительные возможности xdata и моделировать работу с ними. Если, конечно, это именно подправить, а не переписывать полностью.
Как возможный бонус - эту исправленную версию лиспов предложить самому Autodesk на замену в Express Tools
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 30.09.2014, 08:22
#6
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,501
<phrase 1=


ShaggyDoc
>>А в xdata (и других местах, которые есть) надо хранить только ссылки.
Ненадо всё под одну гребенку стричь. Данные бывают разные как и подходы к их хранению. В случае
>>допустим, для назначения трубы, толщины стенок, предельного давления, сечения
Т.е. "стандартной" информации - да лучше ссылку. Но например если нужно хранить длину куска кабеля или температура теплоносителя в данной трубе (т.е. информацию специфичную только этому объекту) - вполне логично хранить напрямую, а не в виде ссылки
zamtmn на форуме  
 
Непрочитано 30.09.2014, 10:51
#7
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 188
Отправить сообщение для nolte с помощью Skype™


АлексЮстасу, запиши большое число как строку. Предлагаю обратить Ваши взоры (zamtmn, АлексЮстасу, ) в сторону vlax-ldata-.... . попроще как-то.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 30.09.2014, 11:18
#8
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 12,700


Цитата:
Но например если нужно хранить длину куска кабеля или температура теплоносителя в данной трубе (т.е. информацию специфичную только этому объекту) - вполне логично хранить напрямую, а не в виде ссылки
Это только сначала кажется, что здесь "логичнее". А если надо собрать эти "куски кабеля" в один заказ из разных проектов? Лазить по всем чертежам и выбирать? А еще до этого рассуждать, что "специфично", а что нет. Часть положить в одно место, часть в другое и потом потерять всё.

А выборка из БД делается мгновенно с помощью SQL- запроса. Эти запросы могут быть и простые (типа select Sum(L) as SumL from Cables where CableID=24 чтобы получить сумму длин) и очень сложными, со всякими условиями, вычислением и применением функций. Но пользователю их и знать не надо, он их не увидит. Мы же не видим, какой SQL-запрос (вернее несколько десятков) посылается к БД, чтобы мы увидели эту страницу в браузере.

Вот пример, когда только с краешком проблем начинает человек сталкиваться:
Цитата:
Сможет кто-нибудь подправить эти xdata.lsp и xdlist.lsp из Express Tools, чтобы в long-поля можно было вводить целые числа больше 32767, а также видеть созданные поля xdata в их реальном порядке?
Чтобы это сделать, собирается и Express править, да еще "предложить самому Autodesk на замену в Express Tools". Чтоб там посмеялись. А ведь для внешних данных можно установить и любые типы данных (вплоть до картинок) и уж тем более легко управлавлять и порядком вывода полей (просто перечисляя какие поля вывести и в каком порядке), и прорядком вывода самих данных (сортировкой) по любым критериям.
ShaggyDoc вне форума  
 
Непрочитано 30.09.2014, 12:56
#9
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,501
<phrase 1=


>>Это только сначала кажется, что здесь "логичнее". А если надо собрать эти "куски кабеля" в один заказ из разных проектов? Лазить по всем чертежам и выбирать? А еще до этого рассуждать, что "специфично", а что нет. Часть положить в одно место, часть в другое и потом потерять всё.
В теории рассужать одно. 2 подхода: первый - чертеж дополнение к базе данных (в виде просто илюстрации), второй - база данных дополнение к чертежу (в виде отчета получаемого из чертежа). Зарание выбрать единственно верный нельзя, оба имеют право на жизнь, и любые из них комбинации тоже.

>>А выборка из БД делается мгновенно с помощью SQL- запроса.
Я конечно не гоняюсь за временем, но будет далеко не мгновенно. И "простые" задачи гораздо усложнятся, - например примитив просто уже не скопируешь, новое вхождение нужно привязать к созданой записи в БД

----- добавлено через ~4 мин. -----
>>Вот пример, когда только с краешком проблем начинает человек сталкиваться:
Незнаю, невижу никаких проблем)) по мне так в xdata можно что хочешь запихнуть, хорошо подумав естественно перед этим
zamtmn на форуме  
 
Автор темы   Непрочитано 30.09.2014, 16:37
#10
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,935


Цитата:
Сообщение от nolte Посмотреть сообщение
запиши большое число как строку
Да вроде бы Сергей812 писал в #3, что это в Express Tools криво сделано. Вот я и попросил по возможности подправить.
Цитата:
Сообщение от nolte Посмотреть сообщение
Предлагаю обратить Ваши взоры (zamtmn, АлексЮстасу, ) в сторону vlax-ldata-.... . попроще как-то.
Не для программиста - что это "vlax-ldata-...."? Поминание ldata в ссылках, данных выше, я уже видел. Это альтернатива xdata? Или альтернатива xrecord?
Цитата:
Сообщение от VVA Посмотреть сообщение
Полезные ссылки на ... и словари
Еще б узнать, что, применительно к черчению и Автокаду, понимается под "словарь"?!

Просто чтобы хоть что-то понять, хотелось здесь убедиться в возможностях-особенностях xdata для начала...
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 30.09.2014 в 17:40.
АлексЮстасу вне форума  
 
Непрочитано 30.09.2014, 18:03
1 | #11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,890
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
применительно к черчению и Автокаду, понимается под "словарь"?!
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Не для программиста - что это "vlax-ldata-...."?
vlax-ldata-* = словарь

----- добавлено через ~3 мин. -----
Почитай 1-й абзац стр. 145
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.09.2014, 19:59
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,510


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
что это в Express Tools криво сделано. Вот я и попросил по возможности подправить
Кстати, если расширенные данные присоединять к объекту программно, а извлекать командой "List xData" Express Tools - то порядок будет неизменный.

А то, что вы хотите сделать - как раз лежит больше в области внешних БД. Поскольку нет какой либо неизменной и краткой структуры данных.
Сергей812 вне форума  
 
Автор темы   Непрочитано 30.09.2014, 21:17
#13
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,935


Цитата:
Сообщение от VVA Посмотреть сообщение
Почитай 1-й абзац стр. 145
Начал почитывать и про xdata. В 1.14.1 Структура расширенных данных, с. 140 написано, что 1001 - имя приложения не может быть длиннее 31 знака, и может состоять только из цифр, латинских букв и символов $,-,_. Я этого не знал, но уже пытался проверить - и задавал в "Application Name" имена гораздо длиннее, на русском, с точками и пробелами, например: "надп. (набл._геод._пож._прож._спорт.) назначения вышки легкого типа". Правда, в кавычках. Ни xdata, ни xdlist из Express этому не воспротивились.
В чем тут дело? Может быть в том, что книга 2006 года? Или опять Express чудит?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 30.09.2014, 21:38
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,510


Как пишет Kean Walmsley
Цитата:
Because it's efficient for small amounts of data (and annotation scaling doesn't need much additional data - the same as for the Hyperlink feature in AutoCAD). XData is fine if you're storing up to around 1KB - anything more than that and I'd recommend ExtDicts + XRecords.

With hindsight, the word "legacy" has some negative connotations... the point I'm trying to make is that it is very risky to rely on it for substantial amounts of additional data (>1 KB per app).
И начните, наконец, пользоваться справочной документацией. А то еще 2 месяца будете эти xData только рассматривать, а не пробовать использовать)
Цитата:
Application name An ASCII string up to 255 bytes long (group code 1000).

Последний раз редактировалось Сергей812, 30.09.2014 в 21:57.
Сергей812 вне форума  
 
Автор темы   Непрочитано 03.10.2014, 19:46
#15
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,935


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
XData is fine if you're storing up to around 1KB - anything more than that and I'd recommend ExtDicts + XRecords.
Почему только 1 кб?
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Application name An ASCII string up to 255 bytes long (group code 1000).
В книге Полещука для Application name предусмотрен код не 1000, а 1001. Книга старая?
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И начните, наконец, пользоваться справочной документацией.
Просветили бы какой именно лучше пользоваться. Еще лучше - на русском. Совсем хорошо бы, если бы одновременно с внятными разъяснениями.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 03.10.2014, 20:22
#16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,510


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Почему только 1 кб?
Цитата:
The global XData limit is 16 KBytes per object, and this potentially needs to be shared between multiple applications.
Так что можете хоть все 16 занимать - если хотите получать неожиданные ошибки и возможные конфликты с другими надстройками AutoCAD, использующими xData.

В русской и англоязычной части интернета информации по подобным вопросам вполне достаточно для начала работы. Одну ссылку в другой ветке давал уже - как добавлять данные в xData на NetApi. Там же на этом ресурсе можно найти и примеры считывания и удаления xData (для заданного приложения), насколько помню. Разжевывать никто не будет, информацию перерабатывайте сами. И не забывайте заглядывать в ObjectARX SDK (см. сайт АutoDesk). Информация про:

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Application name An ASCII string up to 255 bytes long (group code 1000).
Была взята оттуда. DXF код у имени приложения конечно 1001, а ограничения по длине - как у строки с кодом 1000.
Сергей812 вне форума  
 
Непрочитано 04.10.2014, 00:02
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,890
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
если бы одновременно с внятными разъяснениями
Я в #4 дал ссылку. Советую почитать Там кое-что было в #35 и дальше
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 05.10.2014, 05:54
#18
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,935


Цитата:
Сообщение от VVA Посмотреть сообщение
Я в #4 дал ссылку. Советую почитать Там кое-что было в #35 и дальше
Из #4 уже вовсю цитирую
Запускаю первый лисп из http://www.arcada.com.ua/forum/viewt...418f41ab9e777c, но мне сообщают:
Цитата:
Выберите объект: ; ошибка: no function definition: VLAX-ENAME->VLA-OBJECT
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 05.10.2014, 10:03
#19
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
но мне сообщают:
А ты не забыл провлоадкомиться???
gomer вне форума  
 
Автор темы   Непрочитано 05.10.2014, 14:43
#20
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,935


Цитата:
Сообщение от gomer Посмотреть сообщение
А ты не забыл провлоадкомиться???
Что-то подобное я слышал, хотя реально не в курсе.
Поэтому во первых строках пытался написать: (vl-load-com). Правильно?
На это мне ответили:
Цитата:
Выберите объект: ; ошибка: no function definition: _KPBLC-ENT-TO-VLA
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Описание xdata

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автокад 2010 виснит намертво при сохранении файла LenaE AutoCAD 18 04.05.2020 12:59
Автокад тормозит при копировании Борисыч123 AutoCAD 35 18.11.2019 09:29
При добавлении XData, блок перестает редактироваться командой _REFEDIT oktilon Программирование 1 05.11.2011 09:43
Размещение здания на участке под коммерческое использование, расстояние к границе участка ValenDz Архитектура 13 27.02.2011 13:42
Ищу способы упрощения работы с XData (расширенными данными) в VBA, Lisp RasRuf LISP 1 29.01.2009 10:55