|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
1 | | #1 |
Как принято, как лучше описывать Xdata у элементов?
топограф, технолог
Москва
Регистрация: 24.05.2009
Сообщений: 3,072
|
||
Просмотров: 16228
|
|
||||
Я с удовольствием и даже не мазохистским собираю допданные в dwg в виде Object Data и Xrecord.
Но постоянно встречаю упоминания, что используют Xdata. Хотел бы узнать, как люди их практикуют.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Встретился Вариант 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К...
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Ибо, зачем из базы тащить кучу значений в объект, если эти значения уже есть в базе? А если в базе была ошибка в значении параметров - нужно во всех файлах переприкрепить данные. Это не кипитсимплступид совсем. Последний раз редактировалось nickname2019, 24.12.2019 в 11:14. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
А хранить так надо только то, что относится непосредственно к средствам рисования Автокада. Всё остальное - "семантика", а иногда и пространственные данные должно храниться во внешне базе данных. Причем совсем не обязательно в "рекомендуемых лучшими автодесками". Внутри Автокада должны быть только связанные с примитивами указатели на базу данных, таблицу и код записи. Любыми способами, как вариант - XDATA. При этом на одну запись в БД могут ссылаться самые разные примитивы, любых типов, в разных слоях. Вся работа с БД - не средствами Автокада (их полно). БД может вестись совершенно независимо и может использоваться и другими системами. "Иная простота хуже воровства". Сколько таких слоев понадобится? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
а если вдруг (хотя это редкость большая) появиться заказчик со своим стандартом оформления - система автоматизации на слоях накрывается медным тазом)
----- добавлено через ~2 мин. ----- БД ведется общая как бы, иначе какой смысл в ней - если под каждый объект заново ее делать. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
Цитата:
Создал слой "Уголок 125х8 ГОСТ... " - а программно можно связать с общей базой данных по некоторому правилу. ----- добавлено через ~6 мин. ----- Это намек на очередной БИМ? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Цитата:
1. Идентификатор сортамента 2. Номер позиции в сортаменте Длины и геометрия определяются объектами, которые нарисованы в соответствующем слое (для линейных объектов и плоскостных иногда - тоже). Но - для сложных объектов придется использовать блоки с полями. ----- добавлено через ~5 мин. ----- Спасибо. Не знал. Было интересно. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~2 мин. ----- хэндл гарантированно уникален только внутри одного чертежа. |
|||
![]() |
|
||||
Регистрация: 18.11.2019
Сообщений: 1,705
|
Видимо, имелся ввиду хендл, который в ФДО (https://habr.com/ru/post/271109/).
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Судя по разным форумам и личному внефорумному опыту, хранение описательных данных в Xdata достаточно распространено.
Можно относиться к этому, как к порочному - как почти все сейчас высказавшиеся. Но не откликнулся пока никто собственно в тему. Поделитесь подходами к передаче описательных данных в Xdata. Я изложил три возможных варианта. Какими кто пользуется? Или есть свои варианты?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Вар4. В отдельном AppName XData хранится Primary Key БД. Т.е. унифицированный механизм, преобразующий хэндл примитива и имя файла в логический ключ. А дальше делайте что хотите - привязывайте данные, формируйте логические взаимосвязи - главное, что dwg файл (как некий черный ящик) в этом участвует по минимуму)
|
|||
![]() |
|
||||
Цитата:
Здесь вопрос не что, а как.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Вы ожидаете готовое решение или код? |
|||
![]() |
|
||||
Цитата:
Я ожидаю рассказов, примеров, кто как хранит данные в XData. Такая здесь тема.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Цитата:
Вот и хотелось узнать, что, а, главное, как люди в XData записывают.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Цитата:
Но эта тема не о надежности и т.п. Xdata, а о том, как их используют.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Цитата:
Никак. Есть более устойчивые и менее доступные пользователю методы и средства.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регулярно вижу на совсем разных форумах поминание Xdata. Да хоть на ADN.
В Electrical по жизни используются Xdata. Цитата:
Как раз жду ответы от пользующихся. ![]() Или от тех, у кого есть примеры применения.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Offtop:
Цитата:
Цитата:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 24.12.2019
Сообщений: 3
|
Использую Xdata при проектировании линейных объектов (газопроводов), в том числе:
- для хранения в блоках пикетов трассы метки вхождения блока, содержащего информацию о типе тубы; - для хранения в блоке конкретного пикета метки "его" мультивыноски (своего рода параметризация при автоматической аннотации пикетов); - для быстрого доступа к локальным или удаленным ресурсам (к файлам txt/pdf/doc и т.п.) через встроенный в AutoCAD механизм гиперссылок. Подвел курсор мыши к полилинии ветки газопровода, нажал Ctl+ЛКМ и открылась таблица с полным описанием ее пикетов... - для хранения параметров (например длины) продольного профиля при оформлении листов. Низкоуровневые функции для работы с Xdata в свое время вполне прилично были обернуты уважаемыми создателями ruCAD-а. А упомянутый Electrical имеет свой набор команд включая диалоговый (!) редактор Xdata, функций и API для lisp-творчества. По моему, для "кухни" рисунка линейного объекта, которая д.б. скрыта от "теток" - самое место в Xdata. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Примеры? Да пожалуйста:
Код:
Цитата:
Ну и еще несколько подобных библиотечных функций (добавлять, читать). Хоть для слоя, хоть для любого примитива, хоть для каждой вершины полилинии. "Хоть тушкой, хоть чучелом". 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 лижут! Я тоже хочу быть крутым пацаном". |
|||
![]() |
|
||||
Как Вы записываете данные? Вариантом 1, 2, 3 или как-то еще?
Я спрашивал примеры не чем, а как. Например, см. в #4. Варианты 2 и 3 дают информацию, что в каком поле Xdata записано. Я не программист, и по Вашему коду не могу разобраться, какой вариант используете Вы. 1. Я сам вообще никогда, ни разу не использовал Xdata. 2. Не планирую в обозримом будущем использовать Xdata. Т.к. использую Object Data из Map 3D и Xrecord для AutoCAD. 3. Не пропагандирую применять Xdata. Зачем настойчиво отговаривать, если обратное ниоткуда не следует? Перечитайте вопрос. Особенно, если сами вовсю Xdata используете. ![]() Бывает же ознакомительно-исследовательский интерес. В этой теме прошу поделиться сведениями, опытом. В первую очередь как определяют, что в каком поле, фрагменте Xdata записано.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
потому что узнать с помощью "кнопок" нельзя. Это та область, где необходимо действовать именно программно, причем можно использовать любые средства, доступные в AutoCAD. Вот за любые - искренне "спасибо" Autodesk. Хотя и там есть стиль как когда-то у патриарха Форда - "автомобиль может быть любого цвета при условии, что этот цвет черный". Это как, например, в любой программе, работающей с базой данных - обычный пользователь видит названия каких-то граф или строк ввода данных (DisplayLabel), но не видит имена полей и их свойства. С этим можно разобраться только применяя спецсредства или анализируя код программы. Даже в исследовательских целях. Для примера - картинка. На ней показана единица торгового оборудования, примененного в проекте. Оборудование внутри Автокада в виде 3D-моделей. Щелкнув специальную кнопку, пользователь видит все данные именно по этой позиции. Разумеется их нельзя запихнуть внутрь Автокада ни в какие "хрен-данные". А вот ссылку на БД и код записи - можно. Сами данные хранятся во внешней БД, о местонахождении которой пользователь и не знает. Возможно и обратное действие - открыв БД специальной кнопкой в Автокаде выбрать нужное изделие и внутри БД щелкнуть кнопку Выбрать. И именно это изделие будет "нарисовано" в Автокаде уже его средствами, и к его рисунку будет привязана ссылка. Причем БД сама "знает", как именно должна рисоваться эта позиция и "говорит" Автокаду. Причем самым простым образом - хранится метод рисования, а это всего лишь строчка ЛИСП-выражения. Причем метод может быть любым - хоть вставка блока, хоть специальная функция создания объектов. А еще и без Автокада может быть и сформирована СО из примененных изделий, в виде полностью готового Отчета в формате PDF. Разумется подобное можно делать и в ГИС, только привязывать, например к полилиниям, изображающим контур зданий информацию о зданиях. Наподобие того, как в Дубль-ГИС сделано. Ну и попутно о высказывающейся идее "слой на позицию". Вот только в БД торгового оборудования 732 позиции, а еще есть несколько десятков других, в некоторых из них более 5000 позиций. Какие тут могут быть слои? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Это же блог ТС ?
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Нам тоже тогда приходилось делать InCAD - "ГИС на базе Автокад". Там блоками создавались объекты (точечные, линейные, площадные), но в скрытых атрибутах были уже ссылки на БД. Это были времена DOS, БД велись в Clipper. Геометрия объектов хранилась в БД, причем в специальном формате, в котором Clipper читал и записывал массивы чисел, наподобие {{x1,y1}{x2,y2}...{xn,yn}}. В результате, имея БД можно было в пустом чертеже создать все "информационные" объекты. Они накладывались на топографию, сделанную средствами этой же системы, но в виде обычных примитивов. Три города так были оцифрованы. Система несколько лет работала, потом перешли уже под Win95 и AutoCAD R14. Вот там уже были более серьезные возможности. Потом от Автокадов совсем ушли, но все данные, вместе с геометрией, перекочевали в другие ГИС. Но самое большое извращение я видел, когда информацию, требуемую для извлечения в СО хранили в именах блоков. |
|||
![]() |
|
||||
Вопрос в том, что в Xdata поля определяются только типом и позицией относительно других полей. Из-за этого никакими средствами, ни "кнопками", ни программно понять, что в этом поле Int записан "номер", а в этом "количество" невозможно. Эта информация просто отсутствует. Вообще.
В т.ч. и потому, что названия "application" в Xdata не определяют ничего - любые два одноименных Xdata могут иметь совершенно разную структуру полей. Поэтому и интересно, как разные люди решают эту проблему - проблему определения что где в Xdata. Я нашел два варианта решения - 2-й, когда в каждом Xdata только одно поле, а его назначение дается в названии "application", и 3-й, когда поля всегда описываются парами: название, содержание. Оба, конечно, фиговые. ![]() Там в статьях о том, что Xdata и Xrecord лучше, чем атрибуты. В принципе, как подход. И там же про отвратительную реализацию их самих для пользователей.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
а доступа без программирования к XData нет. |
|||
![]() |
|
||||
Цитата:
Во-вторых, дополнительные/расширенные/описательные данные так же нужны пользователям, как и программистам. Пользователям больше. Иначе бы не изобретали, не пользовались издревле и до сих пор костылем в виде атрибутов. Вы, похоже, так и не прочитали исходный вопрос, и его повторы в постах. Как это поможет определить, что вот это строковое поле для названий, а другое для адреса, а третье для ID и т.п.?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
есть штатное средство создания заготовок отчетов в виде извлечения данных. А с вашими даже идентифицированными по типу хранимой информации "полями" в XData что делать дальше? |
|||
![]() |
|
||||
Цитата:
Цитата:
Но, опять-таки, это очередное отклонение от темы - здесь не вопрос об использовании XData, а о том, как обеспечить определенность их содержания.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Это не очередное отклонение от темы - а вы зациклились на своих описательных характеристиках, хотя это лишь верхушка айсберга. Без дальнейшего использования этих характеристик для формирования взаимосвязей, расчетов, создания отчетов и т.п. - это мертвый груз. А дальнейшая обработка с хранением всех данных в контейнере последовательного доступа типа XData - все равно их придется куда-то извлекать для этой обработки с целью убыстрения и упрощения, и тогда и будет их нужная интерпретация...
|
|||
![]() |
|
||||
Цитата:
"...тогда и будет их нужная интерпретация" - возникнет волшебным образом? Сама? Раз Вы знаете секрет, как определить, что в таком-то поле XData описана взаимосвязь, а в таком-то "Primary Key БД", а не наоборот или не что-то еще другое и т.п., то поделитесь же, наконец. Тема именно об этом.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 24.12.2019
Сообщений: 3
|
Цитата:
Те же (проверенные временем) атрибуты - в них любые значения (строки, метки, натуральные и вещественные числа) хранятся в виде строк, которые при извлечении сначала интерпретируются, а затем используются должным образом. В любом случае в документе все храниться в бинарном виде. |
|||
![]() |
|
||||
Цитата:
Цитата:
И, получив от кого-то данные, не имея соответствующих программ, как определить, что где в Xdata записано? Цитата:
Т.е. у атрибутов блоков есть такой защитный механизм, обеспечивающий однозначность определения какой атрибут что содержит. Придумал еще три варианта: Вариант 4. В неубиваемом месте dwg хранить Xdata, описывающих нужную структуру используемых application. Вариант 5. Каждому элементу, к которому присоединяется Xdata с данными, добавлять специальные Xdata с описанием соответствующей структуры. Вариант 6. Отвести первое строчное поле каждого Xdata под хранение его описания. Вроде: "Полей: 5; 1 - Long, ID; 2 - Str, Название; 3 - Real, Диаметр; 4- Str, Материал; 5 - Str, Тип". Или т.п.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Вот именно. Потому что всё это
Цитата:
АлексЮстасу никак не может смириться, что базовый AutoCAD - всего лишь "шасси" для разработки предметных приложений. "Вертикальных", "Горизонтальных", "Наискосячных". И все они создаются в результате программирования. Цитата:
Но программист, использующий координаты точек, знает об этом. Им обновляет БД чертежа, причем тремя способами. Так же, как конечному пользователю СУБД просто вредно знать имена полей, типы данных и прочее. Он видит "русские" заголовки и может ввести только дозволенные данные. Например только числа, да еще в заданном диапазоне, или только строку из доступного списка. Причем он и не знает, что в таблице, которую он видит глазами, на самом деле будет не строка, а число. А сама строка хранится в другой таблице, а иногда и в другой БД. |
|||
![]() |
|
||||
Цитата:
Цитата:
Есть большой класс процессов - обмен данными. В т.ч. нужные данные могут быть в Xdata. (Льзя-нельзя, правильно-неправильно - не в этой теме). (Так же, как во внешних БД, в Xrecord, в Object Data из Map, Property Sets из Civil, Architecture, MEP, в атрибутах...). Здесь вопрос о том, как можно записывать в Xdata данные так, чтобы их могли полно и правильно интерпретировать другие. Не Вы сами, а другие. Без Вашего участия, вашего кода и пр. Как это можно сделать с атрибутами, Property Sets и т.п. У Варианта 4 недостаток, что всегда можно создать Xdata с тем же названием, но другой структуры. Т.е. общее для dwg описание Xdata перестанет быть действительным. У Варианта 6 недостаток, что в строчном поле Xdata можно записать только 255 (или 259?) символов. Точнее, записать можно хоть 8000, но первый же AUDIT их обрежет. 255 явно мало. Варианты 2, 3, 5, вроде, неплохи. Самый надежный, однозначный, похоже, Вариант 2. См. первый пост.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 28.12.2019 в 02:00. |
||||
![]() |
|
||||
"Зачем", "не нужно" и т.п. обсуждать в других темах.
Здесь тема для обсуждения "как". Если нечего об этом сказать, то зачем засорять эфир? Повторю, что есть задача обмена данными. Которые могут быть в Xdata. Еще есть требования заказчиков. Которые могут заказать данные в Xdata. (Или это тоже вариант обмена?). И т.д. Кстати, вычитал, что в мире накоплен миллиард чертежей в dwg и т.п. Вероятно, достаточно актуальных, иначе зачем их считать.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Сергей812, чисто для справки - а разве в Dictionary допускаются повторяющиеся элементы? Я почему-то думал, что он в этом плане не сильно отличается от Collection.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Сергей812, ну так и я про него же. Ок, понял - ключи уникальные, без вариантов.
----- добавлено через 41 сек. ----- Читаю документацию от случая к случаю, так что многое просто не знаю )))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Цитата:
Лучше Варианта 2?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
У меня богатое воображение, но его недостаточно, чтобы представить того заказчика, который закажет данные в Xdata. 99.999% заказчиков вообще понятия не имеют о существовании Xdata.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Нет лучше варианта или хуже. Есть работающие варианты и пустозвонство на уже четвертую страницу...
Новогодний подарок для тех, кто что-то делает - а не только ноет) Код:
Код:
Код:
Код:
Команда: SETXDATA Укажите примитив: Данные занесены в XData Команда: GETXDATA Укажите примитив: Name =[Классификатор] Value = [DF45-GH-JK3] Name =[Ширина] Value = [250] Команда: MODIFYXDATA Укажите примитив: Данные изменены в XData Команда: GETXDATA Укажите примитив: Name =[Длина] Value = [1024] Name =[Классификатор] Value = [DF45-GH-JK3] Name =[Ширина] Value = [512] Тщательно не тестировал, но в целом работает) Может кому то пригодится) |
|||
![]() |
|
||||
Цитата:
![]() Но как это отвечает на вопрос темы?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
На этот вопрос давно дал ответ trir. И я полностью с ним согласен:
Цитата:
Стесняюсь спросить что именно они заказывали?
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||||
Цитата:
Вопросов о том, целесообразно ли хранить описательные данные в Xdata, как еще в программах используют Xdata и т.д., и т.п., не задавалось. Объекты благоустройства с характеристиками. Или системы сигнализации. Или трубопроводы. Какая разница? Цитата:
Сейчас вспомнил, что сам AutoCAD пишет Xdata в штриховки: Цитата:
Можно было записать, допустим, цвета градиентов в одном общем appname. Или сделать одно общее для всех данных штриховок. Во-вторых, в них AutoCAD не использует бинарный код. Т.е. похоже на стремление обеспечить наибольшую прозрачность этих данных. Конечно, в самом AutoCAD есть и противоположные примеры. Посмотрел, как в Electrical: Цитата:
В т.ч. есть, оказывается, специальный "* Code 1005, Database handle". Т.е. у всех объектов Electrical, которые смог просмотреть, используется Вариант 2 - одно appname на одно свойство с одним полем. Прислали еще пример, Вариант 7: Все значения формируются как текстовые из трех частей: <название_поля>|<тип_поля>|<значение> Например: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
см. п.68 - там рабочий код, как перейти в XData к индексированным (по имени) данным вне зависимости от их реального порядка следования в расширенных данных. И при этом контролируется тип расширенных данных при задании значений элементов XData. Но вы же нефига там не поняли в коде же, признайтесь?) И так и будете пытаться еще многие годы носиться со своими абстрактными идеями универсального описания данных в XData, несмотря на то - что ответы от разных людей на подобный бред годами не меняются)
|
|||
![]() |
|
||||
Продолжаете, значит...
Выкладывая код, Вы хорошо знали, что я не смогу его понять и даже запустить. Чтобы подразнить и позлорадствовать. И злорадствуете. Разные люди часто поступают и мыслят, увы, стереотипно. Например, не читают вопросы тем. Заодно, не читают и объяснений. И пребывают в своих шорах. И часто поддаются на участие в троллинге. Вот, и Ривилис поучаствовал.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Уже не знаю сколько раз выкладывал ссылки на .Net - сайт Бушмана Андрея, официальный сайт Аутодеска, поиском можно найти и другие источники (в том числе русскоязычные) - с картинками, подробно разжеванной информацией. Про само программирование на .Net тоже русскоязычной информации достаточно помимо сухой справки от Майкрософта. Ну и мой код снабжен очень подробными комментариями. За те годы, что вы носитесь с этими XData - базовые основы программирования можно было освоить - но это вам не нужно. Вместо этого вы уже очередную статейку накалякали - какие все плохие, один вы несете бескорыстно светлую идею общего формата обмена данными) |
|||
![]() |
|
||||
Цитата:
Если тема возмущает, то достаточно 1-2 постов, выразить свое мнение. Или вообще не писать. Но Вы из 4-х страниц темы написали на две. Лишь полтора сообщения на вопрос темы, а все остальное для увода ее в стороны, стремясь меня задеть, унизить и осмеять. И какие бы Вы "аргументы" ни изобретали, это не оправдывает троллинг.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Я все больше начинаю подозревать, что тему надо переносить в "Программирование"...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
А зачем? ТС не собирается решать задачу практически, насколько понимаю). Да и нет задачи - потому что для тех же разделов проектирования для каждого из них есть какой-то свой набор сведений, необходимый для работы - и перекликаются с другими лишь частично. И начинать надо с этого - да здравствует стандарт проектирования (предприятия) очередной раз)
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Offtop: Брррр, не начинай снова!
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Вопрос темы очень-очень узкий и очень простой, не требующий ничего, кроме здравого смысла. Но Вы так и пишете, и пишете о чем угодно, но не о нем. Цитата:
Когда я ее начинал, то Вариант 2 был умозрительным. В процессе обнаружил, что AutoCAD его использует вовсю. Как и некоторые разработчики. Какие-то варианты возникли у меня по ходу темы. Что-то мне прислали извне. Если будут еще решения и примеры, то могут прислать лично. Кулик Алексей aka kpblc, Троллинг на форуме безнаказан? Здесь образцовый случай.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 29.12.2019 в 21:15. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
АлексЮстасу, с определением троллинга - к Админу. С моей точки зрения на вопрос ответы и варианты решения были даны, и просто постоянно к ним возвращаемся в том или ином варианте. Считаешь, что тут троллинг - вперед, "Обратить внимание модератора". Лично я вряд ли буду реагировать, поскольку не уверен в собственной беспристрастности.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
а почему умозрительный? На каждую характеристику RegNameApp не стоит городить, имхо - но симбиоз, например, с моим кодом: RegNameApp - определенная группа параметров, а внутри этой группы уже индексируемые значения XData. И каждый примитив имеет определенный набор XData со своими RegNameApp - в зависимости от своего функционального назначения. Пример: для токопотребляющего оборудования - номинальное напряжение питания, допустимый диапазон питающего напряжения, ток потребления. А для лотка эти параметры вообще лишены смысла - значит, группы XData с соответствующим RegNameApp не будет в примитиве лотка. Хотя во внешней БД это все проще будет обрабатывать на порядок, чем получать фильтром наборы идентификаторов объектов с соответствующими RegNameApp - и потом обрабатывать ещё все это)
|
|||
![]() |
|
||||
Прямо сейчас попался такой вариант от индийских кабельщиков, оба Xdata у одного кабеля:
Цитата:
А SplitInfo, возможно, для описания состояния кабеля, разрывов в нем. SplitInfo есть только у одного кабеля. Названия полей пишутся до знака "=", значения - после. Первое Xdata - как Вариант 2. Второе - похоже на Вариант 7 из #72. Отличается тем, что тип данных не записан.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Цитата:
Когда-то (лет 25 назад) я хранил данные в виде строки, которая раскрывалась в ассоциативный список. Если длины в 255 символов было недостаточно, то список содержался в нескольких последовательных полях с кодом 1000. С этим списком достаточно удобно было работать из lisp'а и возможно было работать из ObjectARX. Так что это еще один возможный вариант. АлексЮстасу, Я не занимался троллингом, а лишь высказал своё мнение.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
На днях попался забавный вопрос: человек сделал в AutoCAD модель автомобиля из 3D отдельных деталей, и теперь для каждой из них хочет определить характеристики. У двигателя - свои, у рессор другие и т.д.
А вопрос обращен к специалистам Map 3D! Т.е., вероятно, его уже кто-то обломал с возможностями базового AutoCAD (включая, похоже, и с Xdata), но этот кто-то слышал, что задача определения описательных данных давно решена в Map 3D. Понятно, что у Autodesk может быть другое ПО, лучше подходящее для моделирования автомобилей. Но, по-моему, это хороший пример законности, естественности желания пользователей создавать не только графические модели, но и иметь возможность добавлять описательные данные. Создавать модели объектные. И очередная иллюстрация аномальности ситуации в AutoCAD с инструментарием описательных данных. В этой теме возникали некоторые общие вопросы, на которые отвлекаться было не к месту. Я написал свои соображения о них здесь - https://dwg.ru/blog/300. Offtop: Александр Ривилис, я написал не "занимался", а "поучаствовал". Ехидство без оснований посреди троллинга и одобрение троллящего очень похоже на участие.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Offtop: Троллинг - это когда человек носится с одной идей фикс много лет подряд, пишет кучу статей и создает прочую шумиху вместо решения самой проблемы) Я предложил рабочий вариант в посте 68, что вы даже не смогли за неделю найти любую статью для начинающих по NetApi и хотя бы попытаться собрать приведенный готовый код. Прямо так чувствуется практическое желание работать над проблемой описательных данных в акаде)
|
|||
![]() |
|
||||
Цитата:
Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
так любое решение - что в XData, что во внешней БД или иным способом - это всего лишь условно принятый способ хранения нужных характеристик. Например, применительно к тому же оборудованию - ток вместе с напряжением определяет мощность потребления (на постоянном токе). А с параметрами кабеля - погонным сопротивлением и длиной - падение напряжение (будет ли вообще подключенное оборудование работать) и правильно ли выбрано сечение кабеля (не будет ли перегрева). И т.д. Но это уже не проблемы dwg - это программная интерпретация входных данных, полученных с чертежа. Само хранение данных в чертеже или в связанном хранилище - лишь верхушка айсберга.
|
|||
![]() |
|
||||
Цитата:
Код:
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
|||||
Цитата:
Например, для моих Object Data Map 3D такого вопроса вообще нет - в них все понятно и однозначно. Цитата:
Цитата:
Правда там не предлагаются Xdata, т.к. я использую либо Object Data Map 3D, либо Xrecord. Но я о принципе - хранение описательных данных в dwg не добавляет проблем и вполне оправдано для относительно небольших моделей и объемов данных. ----- добавлено через ~9 мин. ----- Цитата:
![]() Так - действительно, это новый вариант. Вариант 8. Он сразу сочетает в себе и черты варианта 2 (единственное поле в appname), и варианта 7 (в поле/-я записано название "таблицы", "поля таблицы" и само значение). Но вся запись одной "таблицы" одной строкой. Ок.
__________________
количество моих сообщений не говорит о знании Автокада |
|||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
да легко. Напишите стандарт, описывающий однозначную интерпретацию всех возможных данных, пролоббируйте - чтобы его приняли в качестве ФЗ - и все, проблема решена. Точнее, это уже станет общей проблемой) А на практике нужно знать - что это число означает, например, ток, а это - погонное сопротивление. И тогда будет понятно, что перемножив эти числа - получишь падение напряжения на кабеле. Естественно, надо учитывать в каких единицах эти значения - чтобы не перемножив мА на Ом, приятно удивиться минусовым значениям напряжения на нагрузке. А вы все абстрактным чем то грезите.
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Увы, но очень похоже на это =(
Цитата:
Offtop: Общение слепых с глухими, всегда интересно. |
|||
![]() |
|
||||
Да, о гиперссылках я все время забываю. Их кто-то практикует?
Чем они лучше тех же Xdata? Записать в Xdata тип, марку, мощность и пр. двигателя, свое про колеса и т.д. Вполне в Xdata все подобное уместится. Будет однозначно связано с графикой. Автоматически передаваться вместе с графикой при передаче dwg. При написании или заимствовании соответствующих несложных программок будет доступно для выбора, изменений и пр. - любых нужных задач.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
представил себе глаза посредников/смежников/заказчиков при словах - остальные данные у нас в XData, напишете там несложную программку, чтобы посмотреть)
|
|||
![]() |
|
||||
Кулик Алексей aka kpblc, с чем сейчас ты согласен, что одобрил?
Сейчас была речь об альтернативе - использовании гиперссылок для описательных данных. Т.е. они лучше Xdata? (В тему: обнаружил, что гиперссылки описываются как раз Xdata ![]() И я ошибался, что для Xdata можно найти больше программных наработок, чем для гиперссылок или пр.? Подскажи тогда, что и где для гиперссылок можно посмотреть, попробовать готового пользовательского для "посредников/смежников/заказчиков"? Добавил в https://dwg.ru/blog/301 пример dwg с Xdata, аналогичный примерам с Xrecord, Object Data. Результат вроде бы такой же - достаточно большой объем описательных данных не так уж и раздувает dwg (добавляет примерно 1/30 от их объема), и не заметно снижения скорости работы в AutoCAD. Возможный вывод: целесообразность хранения описательных данных в dwg ограничена главным образом не свойствами и объемами Xdata, Xrecord или т.п. и пр., а общими возможностями AutoCAD. В первую очередь - объемами графических данных в dwg, с которыми AutoCAD еще может удовлетворительно работать. Но все это нужно еще получше проверить.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
у гиперссылок есть один плюс - автоматически работает появление подсказок при наведении на объект с гиперссылкой) А так и то, и другое - лишь средство связи некой информации с примитивами акада, техническая поддержка (код) для этого пишется за несколько часов - все остальное: это разработка внутреннего регламента по связи внешней информации с чертежом. Сугубо индивидуальное дело разработчиков надстроек, в которое вы пытаетесь влезть - размахивая своими мифическими описательными данными уже который год и мужественно игнорируя все попытки окружающих сказать об бесперспективности этого занятия)
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Посчитать коэффициенты унификации конструктивных элементов, точности обработки, шероховатости поверхностей | 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 |