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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как принято, как лучше описывать Xdata у элементов?

Как принято, как лучше описывать Xdata у элементов?

Ответ
Поиск в этой теме
Непрочитано 30.11.2019, 22:19 #1
Как принято, как лучше описывать Xdata у элементов?
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,030

Допустим, чертим трубы. У труб нужно описать некий индекс, диаметр в мм, длину в м, материал и производителя. (Не важно, не трубы, так провода, не провода, так стены. Не эти х-ки, а любые. Не пять, а двадцать четыре х-ки. Все лишь условный пример).

Допустим, решили для х-к использовать Xdata.
Xdata определяются названием (application name) и входящими в них данными с типами Int, Long, Real, Str и пр.

Я вижу два варианта таких описаний:

Вариант 1. Все х-ки в одном Xdata. Допустим, придаем линии (3Dполилинии, телу - не важно) Xdata с названием "Трубы", в котором определяем одно поле Str для индекса, второе Real для диаметра, третье Real для длины, четвертое Str для материала и пятое Str для производителя. Вроде: "1-Т/22-94", "25.4", "72.6", "ППЭ", "Полипласт".

Вариант 2. Каждая х-ка в своем Xdata. Например: "Трубы_индекс", "Трубы_диаметр_мм", "Трубы_длина_м", "Трубы_материал", "Трубы_производитель".

Кто как чаще делает? Как-то принято? Есть какие-то конвенции? И подводные камни у этих вариантов?
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 15340
 
Непрочитано 30.11.2019, 22:33
#2
trir


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


скоро ты познаешь боль во всей её полноте
ибо данные в dwg - это боль
trir вне форума  
 
Автор темы   Непрочитано 30.11.2019, 23:09
#3
АлексЮстасу

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


Я с удовольствием и даже не мазохистским собираю допданные в dwg в виде Object Data и Xrecord.
Но постоянно встречаю упоминания, что используют Xdata.
Хотел бы узнать, как люди их практикуют.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 24.12.2019, 05:21
#4
АлексЮстасу

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


Встретился Вариант 3. Причем, сделанный самим Autodesk в Map 3D.
Команда MAPTOACAD экспортирует данные FDO в dwg, и дает возможность выгружать описательные данные в Xdata.
Например:
* Registered Application Name: SAVE_MAP_TO_AUTOCAD
* Code 1000, ASCII string: _SCHEMA_NAME
* Code 1000, ASCII string: Default
* Code 1000, ASCII string: _TABLE_NAME
* Code 1000, ASCII string: OD_sample_1
* Code 1000, ASCII string: FeatId
* Code 1071, 32-bit signed long integer: 2
* Code 1000, ASCII string: id
* Code 1000, ASCII string: 55
* Code 1000, ASCII string: number
* Code 1071, 32-bit signed long integer: 125
* Code 1000, ASCII string: name
* Code 1000, ASCII string: bank
Название Xdata "SAVE_MAP_TO_AUTOCAD" дается автоматически от сути процесса.
Потом 2 текстовых поля на описание схемы соединения с данными в FDO.
Потом 2 текстовых поля на описание таблицы данных в источнике.
Потом самое интересное - все данные атрибутов выгружаются парами полей Xdata:
- название поля (атрибута) в источнике данных,
- значение поля (атрибута).
Таким образом можно понять, что за данные в каком поле Xdata.
С другой стороны, это может быть слишком затратно т.к. названия полей (атрибутов) могут быть достаточно длинными, и их может быть много.
Но ведь Autodesk на это пошел. Вероятно, предполагая, что вряд ли пользователи запишут при отдельном объекте больше, чем на 16К...
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 07:38
#5
trir


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


вот об этом я и говорил - дофига оверхеда и это ещё нифига не индексируется

Последний раз редактировалось trir, 24.12.2019 в 08:09.
trir вне форума  
 
Непрочитано 24.12.2019, 08:40
#6
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
С другой стороны, это может быть слишком затратно т.к. названия полей (атрибутов) могут быть достаточно длинными, и их может быть много.
Но ведь Autodesk на это пошел. Вероятно, предполагая, что вряд ли пользователи запишут при отдельном объекте больше, чем на 16К...
Если названия полей повторяются, то можно их вынести в отдельный словарь, например - а в XData писать лишь целочисленный ключ. XData - всего лишь бинарный поток значений, все остальное - это уже внешняя интерпретация.
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 11:01
#7
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Если названия полей повторяются, то можно их вынести в отдельный словарь, например - а в XData писать лишь целочисленный ключ. XData - всего лишь бинарный поток значений, все остальное - это уже внешняя интерпретация.
А еще проще - можно в имени слоя дать номер позиции в базе данных, а к базе данных отдельно обращаться.
Ибо, зачем из базы тащить кучу значений в объект, если эти значения уже есть в базе?

А если в базе была ошибка в значении параметров - нужно во всех файлах переприкрепить данные. Это не кипитсимплступид совсем.

Последний раз редактировалось nickname2019, 24.12.2019 в 11:14.
nickname2019 вне форума  
 
Непрочитано 24.12.2019, 11:27
#8
trir


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


а можно просто работать с базой напрямую
trir вне форума  
 
Непрочитано 24.12.2019, 11:51
#9
ShaggyDoc

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


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

А хранить так надо только то, что относится непосредственно к средствам рисования Автокада.
Всё остальное - "семантика", а иногда и пространственные данные должно храниться во внешне базе данных. Причем совсем не обязательно в "рекомендуемых лучшими автодесками".

Внутри Автокада должны быть только связанные с примитивами указатели на базу данных, таблицу и код записи. Любыми способами, как вариант - XDATA. При этом на одну запись в БД могут ссылаться самые разные примитивы, любых типов, в разных слоях.

Вся работа с БД - не средствами Автокада (их полно). БД может вестись совершенно независимо и может использоваться и другими системами.

Цитата:
Сообщение от nickname2019 Посмотреть сообщение
А еще проще - можно в имени слоя дать номер позиции в базе данных
"Иная простота хуже воровства". Сколько таких слоев понадобится?
ShaggyDoc вне форума  
 
Непрочитано 24.12.2019, 11:53
#10
Сергей812


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
А еще проще - можно в имени слоя дать номер позиции в базе данных, а к базе данных отдельно обращаться.
Ибо, зачем из базы тащить кучу значений в объект, если эти значения уже есть в базе?

А если в базе была ошибка в значении параметров - нужно во всех файлах переприкрепить данные. Это не кипитсимплступид совсем.
Ну Аутодеск решил так реализовать) А еще проще - в XData хранить идентификатор на строку БД и не надо страдать фигней с созданием идентификационной системы слоев и т.п.
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 11:57
#11
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"Иная простота хуже воровства". Сколько таких слоев понадобится?
Штук 20-40 на файл как максимум если мы говорим о линейных объектах (трубы, кабели и т.д.). Список используемых сортаментов обычно ограничен. Для сложных объектов - есть блоки.
nickname2019 вне форума  
 
Непрочитано 24.12.2019, 11:58
#12
Сергей812


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"Иная простота хуже воровства". Сколько таких слоев понадобится?
а если вдруг (хотя это редкость большая) появиться заказчик со своим стандартом оформления - система автоматизации на слоях накрывается медным тазом)

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Штук 20-40 на файл как максимум если мы говорим о линейных объектах (трубы, кабели и т.д.). Список используемых сортаментов обычно ограничен. Для сложных объектов - есть блоки.
БД ведется общая как бы, иначе какой смысл в ней - если под каждый объект заново ее делать.
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 12:00
#13
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а если вдруг (хотя это редкость большая) появиться заказчик со своим стандартом оформления - система автоматизации на слоях накрывается медным тазом)
Если настолько крут, что разобрался как закодировать информацию по слоям и связать с базой - переименовать слои перед сдачей (печатью) - раз плюнуть.

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
БД ведется общая как бы, иначе какой смысл в ней - если под каждый объект заново ее делать.
Да не надо ничего.
Создал слой "Уголок 125х8 ГОСТ... " - а программно можно связать с общей базой данных по некоторому правилу.

----- добавлено через ~6 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
а можно просто работать с базой напрямую
Это намек на очередной БИМ?
nickname2019 вне форума  
 
Непрочитано 24.12.2019, 12:12
#14
Сергей812


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Создал слой "Уголок 125х8 ГОСТ... " - а программно можно связать с общей базой данных по некоторому правилу.
По некоторому?) В БД будет "Уголок" (общий тип), "Размер1", "Размер2", "ГОСТ такой то" - захотите то хороший фильтр и поиск иметь же...
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 12:15
1 | #15
trir


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


Цитата:
Это намек на очередной БИМ?
это намёк на FDO

Цитата:
в XData хранить идентификатор на строку БД и не надо страдать фигней с созданием идентификационной системы слоев и т.п.
или просто хранить handle в бд
trir вне форума  
 
Непрочитано 24.12.2019, 12:16
#16
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
По некоторому?) В БД будет "Уголок" (общий тип), "Размер1", "Размер2", "ГОСТ такой то" - захотите то хороший фильтр и поиск иметь же...
В слое достаточно иметь только:
1. Идентификатор сортамента
2. Номер позиции в сортаменте

Длины и геометрия определяются объектами, которые нарисованы в соответствующем слое (для линейных объектов и плоскостных иногда - тоже).

Но - для сложных объектов придется использовать блоки с полями.

----- добавлено через ~5 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
это намёк на FDO[/url]
Спасибо. Не знал. Было интересно.
nickname2019 вне форума  
 
Непрочитано 24.12.2019, 12:23
#17
Сергей812


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
В слое достаточно иметь только:
1. Идентификатор сортамента
2. Номер позиции в сортаменте
Слой является производным - в БД прописано, на каком слое должен размещаться данный элемент. Но не обязательно)

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
или просто хранить handle в бд
хэндл гарантированно уникален только внутри одного чертежа.
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 12:27
#18
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
хэндл гарантированно уникален только внутри одного чертежа.
Видимо, имелся ввиду хендл, который в ФДО (https://habr.com/ru/post/271109/).
nickname2019 вне форума  
 
Непрочитано 24.12.2019, 12:34
#19
trir


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


Цитата:
хэндл гарантированно уникален только внутри одного чертежа.
просто нужно убедится, что ты в нужном чертеже
trir вне форума  
 
Непрочитано 24.12.2019, 12:37
#20
Сергей812


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


Цитата:
Сообщение от trir Посмотреть сообщение
просто нужно убедится, что ты в нужном чертеже
просто нужно записать в расширенные данные примитива Primary Key, предоставленный БД - а не заниматься поиском дополнительных проблем)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как принято, как лучше описывать Xdata у элементов?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать коэффициенты унификации конструктивных элементов, точности обработки, шероховатости поверхностей Igorek21 Машиностроение 2 09.11.2016 12:32
Как найти уточненные значения жесткостей элементов по СП 52-103-2007? Midimi Железобетонные конструкции 9 30.04.2016 13:43
Описание xdata АлексЮстасу Программирование 68 09.10.2014 11:46
описывать свойства элементов по слою (bylayer) или прямо АлексЮстасу AutoCAD 110 13.03.2010 03:51
Lisp: Список элементов в слоях ALFMario LISP 4 29.04.2008 17:26