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

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

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

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

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

Допустим, решили для х-к использовать 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. Например: "Трубы_индекс", "Трубы_диаметр_мм", "Трубы_длина_м", "Трубы_материал", "Трубы_производитель".

Кто как чаще делает? Как-то принято? Есть какие-то конвенции? И подводные камни у этих вариантов?
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 15395
 
Непрочитано 24.12.2019, 13:11
#21
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от trir Посмотреть сообщение
И радостно порушить все после выполнения, например, _.-wblock. Или внедрения ссылки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.12.2019, 14:49
#22
АлексЮстасу

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


Судя по разным форумам и личному внефорумному опыту, хранение описательных данных в Xdata достаточно распространено.
Можно относиться к этому, как к порочному - как почти все сейчас высказавшиеся.
Но не откликнулся пока никто собственно в тему.
Поделитесь подходами к передаче описательных данных в Xdata.
Я изложил три возможных варианта. Какими кто пользуется? Или есть свои варианты?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 15:16
#23
Сергей812


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


Вар4. В отдельном AppName XData хранится Primary Key БД. Т.е. унифицированный механизм, преобразующий хэндл примитива и имя файла в логический ключ. А дальше делайте что хотите - привязывайте данные, формируйте логические взаимосвязи - главное, что dwg файл (как некий черный ящик) в этом участвует по минимуму)
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.12.2019, 17:43
#24
АлексЮстасу

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Вар4. В отдельном AppName XData хранится Primary Key БД. Т.е. унифицированный механизм, преобразующий хэндл примитива и имя файла в логический ключ. А дальше делайте что хотите - привязывайте данные, формируйте логические взаимосвязи - главное, что dwg файл (как некий черный ящик) в этом участвует по минимуму)
Это не отдельный вариант. Это можно сделать любым из трех найденных сейчас вариантов. (Для Вашего случая первые два не отличаются).
Здесь вопрос не что, а как.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 18:20
#25
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это не отдельный вариант. Это можно сделать любым из трех найденных сейчас вариантов. (Для Вашего случая первые два не отличаются).
ну если для вас это одно и тоже - пихать все в XData, или только ссылку в виде числа/строки...)

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Здесь вопрос не что, а как.
Вы ожидаете готовое решение или код?
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.12.2019, 18:39
#26
АлексЮстасу

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну если для вас это одно и тоже - пихать все в XData, или только ссылку в виде числа/строки...)
Это для кого угодно одно и то же - "пихать в Xdata" Primary Key БД первым или вторым вариантом.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Вы ожидаете готовое решение или код?
Я ожидаю рассказов, примеров, кто как хранит данные в XData.
Такая здесь тема.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 18:50
#27
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это для кого угодно одно и то же - "пихать в Xdata" Primary Key БД первым или вторым вариантом.
Ну тогда смысл вам что-то рассказывать?) Ваши три варианта: все данные хранятся последовательно в одной "записи" (любая модификация состава данных превращается в увлекательнейший "геморрой"), опять же все данные классифицируются по имени приложения (первый пост в шапке), и все данные пишутся в формате пар {Имя параметра - Значение} (все та же ссылка - про строковые значения). Ну если ставите перед собой задачу максимально забить XData своими значениями, ну и заодно размер файл подраздуть - чтобы больше было соблазна воспользоваться советами по уменьшению размера файла и снести всю автоматизацию нафиг..).
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.12.2019, 20:34
#28
АлексЮстасу

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ваши три варианта: все данные хранятся последовательно в одной "записи" (любая модификация состава данных превращается в увлекательнейший "геморрой")
Это и есть вопрос данной темы. Как разные люди решают задачу такой неудобной и уязвимой формы хранения данных, как Xdata?
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну если ставите перед собой задачу максимально забить XData своими значениями..).
Вот и хотелось узнать, что, а, главное, как люди в XData записывают.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 21:31
#29
trir


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


SPDS Extension записывает xml в dwg, а мы потом ловим fatal error через раз...
trir вне форума  
 
Автор темы   Непрочитано 24.12.2019, 21:53
#30
АлексЮстасу

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


Цитата:
Сообщение от trir Посмотреть сообщение
SPDS Extension записывает xml в dwg, а мы потом ловим fatal error через раз...
Ээээ... Ни разу еще не встречал суждений или свидетельств, что Xdata создают какие-либо проблемы для dwg, AutoCAD.
Но эта тема не о надежности и т.п. Xdata, а о том, как их используют.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 21:59
#31
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Но эта тема не о надежности и т.п. Xdata, а о том, как их используют.
Ну поскольку вы мужественно бегаете от любого упоминания внешней нормальной БД - то для вас любой из трех вариантов, все равно
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
XData - всего лишь бинарный поток значений, все остальное - это уже внешняя интерпретация.
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 22:01
#32
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от trir Посмотреть сообщение
SPDS Extension записывает xml в dwg, а мы потом ловим fatal error через раз...
xml?? в dwg?!?! Да лааааадно!
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
а о том, как их используют.
Никак. Есть более устойчивые и менее доступные пользователю методы и средства.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.12.2019, 22:23
#33
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Никак.
Регулярно вижу на совсем разных форумах поминание Xdata. Да хоть на ADN.
В Electrical по жизни используются Xdata.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Есть более устойчивые и менее доступные пользователю методы и средства.
В этой теме не об этом.
Как раз жду ответы от пользующихся.
Или от тех, у кого есть примеры применения.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 24.12.2019, 22:32
#34
Кулик Алексей aka kpblc
Moderator

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


Offtop:
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Регулярно вижу на совсем разных форумах поминание Xdata. Да хоть на ADN.
В Electrical по жизни используются Xdata.
В этой теме не об этом.
Частота упоминания не гарантирует, что это единственный вариант.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как раз жду ответы от пользующихся.
Или от тех, у кого есть примеры применения.
Тогда больше не мешаюсь
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.12.2019, 22:45
#35
Сергей812


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


Offtop:
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как раз жду ответы от пользующихся.
и уточните, в каком виде ждете ответов)
Сергей812 вне форума  
 
Непрочитано 24.12.2019, 23:50
1 | #36
__Valdemar


 
Регистрация: 24.12.2019
Сообщений: 3


Использую Xdata при проектировании линейных объектов (газопроводов), в том числе:
- для хранения в блоках пикетов трассы метки вхождения блока, содержащего информацию о типе тубы;
- для хранения в блоке конкретного пикета метки "его" мультивыноски (своего рода параметризация при автоматической аннотации пикетов);
- для быстрого доступа к локальным или удаленным ресурсам (к файлам txt/pdf/doc и т.п.) через встроенный в AutoCAD механизм гиперссылок. Подвел курсор мыши к полилинии ветки газопровода, нажал Ctl+ЛКМ и открылась таблица с полным описанием ее пикетов...
- для хранения параметров (например длины) продольного профиля при оформлении листов.
Низкоуровневые функции для работы с Xdata в свое время вполне прилично были обернуты уважаемыми создателями ruCAD-а. А упомянутый Electrical имеет свой набор команд включая диалоговый (!) редактор Xdata, функций и API для lisp-творчества.
По моему, для "кухни" рисунка линейного объекта, которая д.б. скрыта от "теток" - самое место в Xdata.
__Valdemar вне форума  
 
Непрочитано 25.12.2019, 06:46
1 | 2 #37
ShaggyDoc

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


Примеры? Да пожалуйста:

Код:
[Выделить все]
 (defun ru-xdata-add-for-ent (ename xd)
  (entmod (append (entget ename) (list xd)))
)

(defun ru-xdata-write-for-ent (ename xdata_list app_name / ent_list xdata)
			      ;|
Добавляет расширенные данные к примитиву
 ename - имя примитива
 xdata_list - список расширенных данных
 app_name - имя зарегистрированного приложения
Возвращает список данных примитива или NIL при ошибке


Допустимые типы данных  (STR, REAL,INT, LIST).
Метки примитивов должны быть с префиксом #
Точки  записываются в группу 1010 как список из трех REAL
Вложенный список помечается {} в первом элементе списка
с помощью ru-xdata-add-list-bracket
|;
  (setq
    xdata    (reverse (_xdata-write xdata_list))
    xdata    (list -3 (cons app_name xdata))
    ent_list (append (entget ename) (list xdata))
  ) 
  (entmod ent_list)
  ent_list
)

(defun _xdata-write (xdata_list / xdata xdata_tmp item)
  (setq xdata '())
  (foreach item	xdata_list
    (cond
      ((and (= (type item) 'list) (= (car item) "{}"))
       (setq
	 xdata_tmp (cons (cons 1002 "}") (_xdata-write (cdr item)))
	 xdata_tmp (append xdata_tmp (list (cons 1002 "{")))
	 xdata	   (append xdata_tmp xdata)
       ) 
      )
      ((and (= (type item) 'list) (= (length item) 3))
       (setq xdata (cons (cons 1010 item) xdata))
      )
      ((and (= (type item) 'STR) (= (substr item 1 1) "#"))
       (setq xdata (cons (cons 1005 (substr item 2)) xdata))
      )
      ((= (type item) 'STR)
       (setq xdata (cons (cons 1000 item) xdata))
      )
      ((= (type item) 'INT)
       (setq xdata (cons (cons 1070 item) xdata))
      )
      ((= (type item) 'REAL)
       (setq xdata (cons (cons 1040 item) xdata))
      )
    ) 
  ) 
  xdata
)
Это ответ на
Цитата:
Вот и хотелось узнать, что, а, главное, как люди в XData записывают
Правда я это не "люди", а так, прохожий мимо людей...

Ну и еще несколько подобных библиотечных функций (добавлять, читать). Хоть для слоя, хоть для любого примитива, хоть для каждой вершины полилинии. "Хоть тушкой, хоть чучелом".

ru-xdata-add-for-ent.LSP
ru-xdata-add-list-bracket.LSP
ru-xdata-write-for-ent.LSP
ru-xdata-get-for-pline-vertex.LSP
ru-xdata-get-reg-apps.LSP
ru-xdata-get-ruclass-by-layer-name.LSP
ru-xdata-get-ruclass-for-active-layer.LSP
ru-xdata-get-ruclass-for-all-layers.LSP
ru-xdata-get-ruclass-for-layer-obj.LSP
ru-xdata-read-for-ent.LSP
ru-xdata-rem-for-selection.LSP
ru-3d-xdata-rucad-regapp.LSP
ru-xdata-rucad-regapp.LSP


Для каких целей применять - другое дело. Я, например, применяю для проверки соответствия имен слоев топографии специальному классификатору. Или для привязки "ёжика" временных осей координат при создании 3D-объектов. Но это всё внутри Автокада. И "упоминание XDATA" у меня также имеется.

Да, это программным путем (в данном случае - Лисп), а не щелканьем по кнопкам.

А в целом тема напоминает приставание ребенка - "Дяденьки, расскажите как лижут железные ручки на морозе". Дяденьки говорят - "Не надо вообще лизать железо на морозе", а оно опять - "А вот пацаны в Electrical лижут! Я тоже хочу быть крутым пацаном".
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 26.12.2019, 04:20
#38
АлексЮстасу

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


Цитата:
Сообщение от __Valdemar Посмотреть сообщение
Использую Xdata
Как Вы записываете данные? Вариантом 1, 2, 3 или как-то еще?
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Примеры? Да пожалуйста:
Я спрашивал примеры не чем, а как. Например, см. в #4.
Варианты 2 и 3 дают информацию, что в каком поле Xdata записано. Я не программист, и по Вашему коду не могу разобраться, какой вариант используете Вы.

1. Я сам вообще никогда, ни разу не использовал Xdata.
2. Не планирую в обозримом будущем использовать Xdata. Т.к. использую Object Data из Map 3D и Xrecord для AutoCAD.
3. Не пропагандирую применять Xdata.

Зачем настойчиво отговаривать, если обратное ниоткуда не следует? Перечитайте вопрос.
Особенно, если сами вовсю Xdata используете.
Бывает же ознакомительно-исследовательский интерес.

В этой теме прошу поделиться сведениями, опытом. В первую очередь как определяют, что в каком поле, фрагменте Xdata записано.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 26.12.2019, 07:25
#39
ShaggyDoc

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Я не программист, и по Вашему коду не могу разобраться, какой вариант используете Вы
а без этого бессмысленен
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
ознакомительно-исследовательский интерес
потому что узнать
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
как определяют, что в каком поле, фрагменте Xdata записано
с помощью "кнопок" нельзя. Это та область, где необходимо действовать именно программно, причем можно использовать любые средства, доступные в AutoCAD.

Вот за любые - искренне "спасибо" Autodesk. Хотя и там есть стиль как когда-то у патриарха Форда - "автомобиль может быть любого цвета при условии, что этот цвет черный".

Это как, например, в любой программе, работающей с базой данных - обычный пользователь видит названия каких-то граф или строк ввода данных (DisplayLabel), но не видит имена полей и их свойства. С этим можно разобраться только применяя спецсредства или анализируя код программы. Даже в исследовательских целях.

Для примера - картинка. На ней показана единица торгового оборудования, примененного в проекте. Оборудование внутри Автокада в виде 3D-моделей. Щелкнув специальную кнопку, пользователь видит все данные именно по этой позиции.

Разумеется их нельзя запихнуть внутрь Автокада ни в какие "хрен-данные". А вот ссылку на БД и код записи - можно. Сами данные хранятся во внешней БД, о местонахождении которой пользователь и не знает.

Возможно и обратное действие - открыв БД специальной кнопкой в Автокаде выбрать нужное изделие и внутри БД щелкнуть кнопку Выбрать. И именно это изделие будет "нарисовано" в Автокаде уже его средствами, и к его рисунку будет привязана ссылка. Причем БД сама "знает", как именно должна рисоваться эта позиция и "говорит" Автокаду. Причем самым простым образом - хранится метод рисования, а это всего лишь строчка ЛИСП-выражения. Причем метод может быть любым - хоть вставка блока, хоть специальная функция создания объектов.

А еще и без Автокада может быть и сформирована СО из примененных изделий, в виде полностью готового Отчета в формате PDF.

Разумется подобное можно делать и в ГИС, только привязывать, например к полилиниям, изображающим контур зданий информацию о зданиях. Наподобие того, как в Дубль-ГИС сделано.

Ну и попутно о высказывающейся идее "слой на позицию". Вот только в БД торгового оборудования 732 позиции, а еще есть несколько десятков других, в некоторых из них более 5000 позиций. Какие тут могут быть слои?
Миниатюры
Нажмите на изображение для увеличения
Название: db_rec_so.png
Просмотров: 40
Размер:	43.2 Кб
ID:	221587  
ShaggyDoc вне форума  
 
Непрочитано 26.12.2019, 14:33
#40
Сергей812


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


Это же блог ТС ?
Сергей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