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

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

Описание xdata

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

Пардон за наивные вопросы - только пытаюсь знакомиться с 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.
Просмотров: 22750
 
Непрочитано 08.10.2014, 08:14
#61
zamtmn

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


>>Сохранил те файлы по совету Кулик Алексей aka kpblc в dxf
на объем dxf можно вообще не обращать внимания, текстовое представление бинарных данных - сплошной "накладной расход"
zamtmn вне форума  
 
Непрочитано 08.10.2014, 08:27
#62
trir


 
Регистрация: 18.12.2010
Сообщений: 5,115


Глянул тут в спецификацию dxf(2008)
Цитата:
1000-1009 String (same limits as indicated with 0-9 code range)
Цитата:
0-9 String (with the introduction of extended symbol names in AutoCAD 2000, the 255-character
limit has been increased to 2049 single-byte characters not including the newline at the end
of the line)
trir вне форума  
 
Непрочитано 08.10.2014, 10:10
#63
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Дальше сугубо ИМХО. Кто в курсе, подправит.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Или еще что-то?
Или! Один символ кушает 1 байт только в кодировке ANSI. Насколько я понимаю, ACAD использует не ANSI, а в любой другой кодировке (что Win1251, что UTF-8) один символ кушает уже не 1, а 2 байта. Плюс символ окончания строки. Плюс место на регистрацию приложения в документе, плюс регистрация Xdata на примитив, плюс ключи точечных пар... Так что я особо не удивляюсь подобным "потерям".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.10.2014, 10:21
#64
trir


 
Регистрация: 18.12.2010
Сообщений: 5,115


2 байта это UTF-16, UTF-8 C = n*5+1 при n>1. Win1251 - 1 байт
dxf
Цитата:
9
$DWGCODEPAGE
3
ANSI_1251
хотя Notepad++ на этот файл говорит "UTF-8 w/o BOM"
trir вне форума  
 
Автор темы   Непрочитано 08.10.2014, 14:10
#65
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
один символ кушает уже не 1, а 2 байта.
Может быть кто-нибудь смог бы это проверить не средствами XDATA.lsp и XDLIST.lsp из Express Tools? Пока вроде бы получается, что применительно к символьным данным предельный размер XData не 16, а 8 килобайт. (В смысле не 16000, а 8000 символов ). Ведь XDATA.lsp уже показывал свою косячность.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 08.10.2014, 14:18
#66
zamtmn

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


>>хотя Notepad++ на этот файл говорит "UTF-8 w/o BOM"
Зависит от версии, в ранних текст лежит в ANSI_1251 в позних (непомню с какой) в utf-8. $DWGCODEPAGE это не про хранение файла на диске
кроме того текстовые символы могут храниться в виде \U+код, т.е. в виде уникод кодов символов
zamtmn вне форума  
 
Непрочитано 09.10.2014, 02:44
#67
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Зависит от версии, в ранних текст лежит в ANSI_1251 в позних (непомню с какой) в utf-8.
До 2006 включительно - ANSI, с 2007 - UTF-8. Хотя ты правильно сказал, что есть еще и \U+XXXX и \M+XXXXX

АлексЮстасу, не занимайся ерундой. Кроме самих данных из Xdata в dwg-файле хранятся еще и коды. В каком именно виде - мне не интересно, но подозреваю что занимают они не меньше 32 байт на одну группу XData, несмотря на то что сам код занимает не более двух байт.

Цитата:
Сообщение от trir Посмотреть сообщение
Глянул тут в спецификацию dxf(2008)
Цитата:
1000-1009 String (same limits as indicated with 0-9 code range)
Цитата:
0-9 String (with the introduction of extended symbol names in AutoCAD 2000, the 255-character
limit has been increased to 2049 single-byte characters not including the newline at the end
of the line)
Упаси тебя бог от таких экспериментов. В любой момент можешь потерять все данные...
Александр Ривилис вне форума  
 
Непрочитано 09.10.2014, 11:11
#68
zamtmn

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


Александр Ривилис
>>и \M+XXXXX
Мне ниразу не попадалось, это тоже что и \U или нет?
zamtmn вне форума  
 
Непрочитано 09.10.2014, 11:46
#69
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Мне ниразу не попадалось, это тоже что и \U или нет?
Принцип тотже. Подробностей сейчас не вспомню, но если в \U+XXXX (четыре шестнадцатиричных цифры), то в \M+YYYYY (пять шестнадцатиричных цифр). Вроде бы используется в Корейском и китайском, где не хватает обычного Unicode.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум 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