|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
10.07.2021, 22:20 | #1 | |
Выгрузить XData в csv (txt)
топограф, технолог
Москва
Регистрация: 24.05.2009
Сообщений: 3,030
|
||
Просмотров: 21529
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Цитата:
Offtop: Код (по первому просмотру) не то чтобы очень сложный (и не сильно дураказащищенный), так что меняй. P.S. Я у себя на сайтике делал альтернативный варинат attin / attout, можешь забирать.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 11.07.2021 в 00:30. |
||||
|
||||
Регистрация: 06.04.2015
Сообщений: 2,673
|
|
|||
|
||||
К лисп я сейчас склоняюсь, т.к. это и по его возможностям, и чтобы не зависеть от версий AutoCAD.
Но почему нет...
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
XData - это просто потоковый контейнер значений, единственным отличительным идентификатором которых является имя приложения. А массовый обмен информации подразумевает гибкую структуру данных, которая подстраивается под возникающие в процессе работы новые потребности.
Вот лежит БД на диске - она может быть размерами в гигабайты и даже терабайты, но путем запроса из нее получаешь лишь небольшой объем конкретно необходимых в данный момент данных. A XData: чтобы получить хоть одно значение - надо загрузить полностью файл *.dwg в память, найти по определенным критериям примитив(ы) с необходимыми присоединенными данными и при этом еще правильно интерпретировать последовательность данных в контейнере XData. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
можно все - но для большинства пользователей формата *.dwg (как самого акада, что его альтернатив) XData - абсолютно бесполезный ввиду недоступности в явном виде) Если, конечно, сделать нормальный ГУИ с набором функций обработки данных - то и такой костыль найдут куда приспособить. Только делать костыль ради костыля
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
|
|||
|
||||
Обычная просьба к программистам помочь с конкретной задачей. Примерно такой же, как выгрузка содержания атрибутов в csv, как ATTOUT.
Прошу помочь с программой экспорта содержания XData в csv.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,492
|
Цитата:
Вы собираетесь сделать в экселе спецификации по модели в DWG? Вы собираетесь связать эксель с моделью dwg, чтобы при изменении екселя менялась автоматически модель dwg? Сам факт вывода XData в csv не имеет практического смысла, так как эти данные с успехом можно обрабатывать внутри базы данных dwg, не подключая промежуточный файл csv. |
|||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,492
|
Offtop: Напомнило .Приходит мужик в овощной магазин:
- У вас морква есть? Продавщица: - Есть. - Тогда 2 штуки, пожалуйста. Она продает ему две морковки он вставляет их в уши и убегает. На следующий день: - У вас морква есть? Продавщица: - Есть. - Тогда 2 штуки, пожалуйста. Она продает ему две морковки он вставляет их в уши и убегает. Так продолжается и на следующий день. Продавщица офигивает и в очередной раз на вопрос есть ли морква, отвечает нет. Мужик: - А свекла есть? Она: - Есть. - Тогда 2 штуки, пожалуйста. Продавщица дает ему 2 свеклы, мужик ее тоже в уши вставляет. Продавщица не выдерживает: - А можно поинтересоваться, чтой то вы всякую х.. ню в уши вставляете? На что мужик: - А что, морква есть? Ответа на вопрос "зачем" я пока так и не понял. Подозреваю, что есть пути решения без XData. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
Ну была бы написана уже такая программа, если реально нужда была) Встроенные attin / attout и аналог от Алексея, работа со свойствами динблоков от Boxa, работа с пользовательскими свойства документов от azetown и т.д. - есть конкретная задача и есть какой то вариант ее решения.
----- добавлено через ~14 мин. ----- да сам ТС не знает - зачем, похоже. Он зациклился на одной промежуточной чисто технической задаче по хранению данных в XData и выпал из реальности) |
|||
|
||||
Цитата:
2. Для отчетов, экспликаций и т.п. 3. Заполнить-заменить значения другими средствами - в Excel или т.п. (Для обратной загрузки). 4. Для загрузки в атрибуты блоков ATTIN. 5. Для передачи данных в другие средства их хранения. В вертикальных приложениях, в словарях или т.п. 6. Для сохранения данных. Есть лисп-программы экспорта/импорта (приложил) сразу всех указанных дополнительных данных Object Data (лучший аналог XData) для Map/Civil 3D. Они еще хороши тем, что после изменения последовательности и числа полей данных в csv при импорте соответственно изменяются и описания таких данных в dwg. Если не сложно в этих лиспах заменить относящееся к Object Data на соответствующее для XData, то было бы то, что нужно. Цитата:
Опыт работы с аналогом XData в Map/Civil 3D показывает, что постоянно возникают вопросы как бы что-то сделать с дополнительными данными, что не сложно сделать средствами того же Excel. Создать, изменить идентификаторы, подсчитать, взять данные из других полей и пр. И рекомендации выгрузить в csv, изменить в нем, загрузить, на практике даются постоянно.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
но тот же XML был бы лучше, имхо. Это печально - если в XData примитивов напиханы табличные данные: когда csv явно имеет преимущество. Но пустой разговор - все в конечном итоге свелось к выклянчиванию готового кода ради счастья мифического большинства...
|
|||
|
||||
Сергей812, покиньте, пожалуйста, эту тему.
Ваши негативные мысли об идее этой программы, об XData и обо мне понятны были сразу. Все остальные Ваши многочисленные сообщения уже на половину темы не о создании такой программы - это флуд. И троллинг, поскольку Вы еще и переходите к уничижительным характеристикам. Высказывать свое мнение и отношение - нормально. Ненормально флудить и троллить. Ненормально мешать.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,492
|
Проблема решается если XData не использовать. Если нет XData - смотреть их не нужно.
Эта проблема решается гуглем: как автоматически получить спецификацию в Autocad... Решений будет несколько десятков. Если ничего не устраивает - я думаю, что услуги программиста встанут не более 15 тыс. руб для настройки чего-то массового на индивидуальные потребности (спецификация с "бантиком") - но это без использования XDATA. На XDATA время тратить никто не будет, так как будет нужно "с нуля" поднимать функционал, который уже разработан без использования XDATA. Цитата:
Проблема решается если XData не использовать. Если нет XData - смотреть их не нужно. Цитата:
Каких конкретно данных? Проблема хранения данных в Autocad по оборудованию легко решается блоками с атрибутами (в т.ч. динамическими блоками). Проблема хранения данных по кабельной трассе и инженерным сетям на генплане - тоже решаема более-менее стандартными и не сильно дорогими существующими способами. Если нужно модифицировать "под себя" - нетрудно найти программиста, чтобы допилил существующий функционал. Я понимаю желание иметь возможность задавать доп. параметры любому объекту, чтобы потом с ними оперировать, но это утопия, так как порождает логистический кошмар. Если каждый будет задавать свой список и имена параметров - разобраться будет невозможно (у одного высота колонны будет "H", у другого "L" и т.д., совместимость проектов будет невозможна). Параметрическое проектирование сейчас решается через создание кастомных объектов (стена, колонна и т.д.) с ЧЕТКИМ НАБОРОМ ПАРАМЕТРОВ, что обеспечивает ясность работы с объектом. Т.е. сейчас используется объектно-ориентированный подход, когда создается стандартное описание объекта (с набором параметров), который затем используется везде. Вы предлагаете информацию хранить распределенно, что затрудняет анализ. Последний раз редактировалось nickname2019, 14.07.2021 в 07:51. |
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,047
|
Цитата:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Fatal вряд ли, скорее - обрезка не влезающих данных. Offtop: С nickname2019 и trir согласен абсолютно и полностью.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588
|
Может я чего то не понимаю, но прочитать/записать XData не сложно, вывести все это в csv или любой другой формат так же не сложно и по прочтению этой темы я так и не понял в чем проблема то, если нужен такой инструмент, бери да пиши.
АлексЮстасу, если Вы готовы профинансировать создание этого инструмента для сообщества, т.е. с открытым кодом, то я мог бы написать подобное, обращайтесь. =о) ЗЫ. Некоторое время назад, ТС опубликовал статью, по поводу тегов в КАД Бентли, если я правильно помню, мне тогда понравилась эта идея и я реализовал подобное для автокада (даже окошки и менюшки постарался сделать похожими), прежде чем отдать сотрудникам я попытался по пользоваться сам... не зашло, хотя часть тех наработок использую до сих пор. |
|||
|
||||
Boxa, тс предпочитает код на лиспе.
|
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
чем вы успешно занимаетесь уже который год со своими присоединенными данными)
Цитата:
И ему прямо так нужно получить программу - что даже не удосужился выложить полный тестовый набор данных для тестирования. Это тоже показывает - насколько он заинтересован в конечном результате и насколько ценит время других) |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588
|
koMon, т.к. ТС не владеет ни одним языком, ИМХО ему должно быть совершенно параллельно на каком языке все это реализуется. Однако, если лисп принципиален, то бог в помощь, программистов много. =0)
Сергей812, я все понимаю, но реально задолбало читать про волшебные XData и как они всех спасут. Я в свое время попробовал, не пошло, может новый виток приведет к чему то хорошему... хотя у меня сомнения в этой затее, но если ТС все это профинансирует, то почему нет. Про раздел исполнителей ТС писали много раз, но он намеков не понимает видимо, потому пишу прямо. Причем мне в этой теме не сколько интересно писать программу, сколько интересно понаблюдать взлетит ли у автора эта гравицапа, после стольких лет =0) |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
не давайте ТС ложных надежд))
Понимаю, если разговор шел бы о вспомогательной библиотеке работы с XData - например, как с индексированными свойствами. Т.е. данная библиотека как основа для разработки других надстроек. А пропихивать с маниакальным упорством XData как самодостаточное изделие... |
|||
|
||||
АлексЮстасу,
это не коррекция, это другой новый лисп, который выгружает все расширенные данные для всех приложений по умолчанию в файл/ы csv/txt в папку с рабочим чертежом, с именем рабочего чертежа и суффиксом "_xdatum" и если выбрана множественная запись файлов, то ещё и с суффиксом "_Название_Приложения". проверок на работу с файлом нет. для каждого приложения своя строка в выводимом файле, первая строка также включает название примитива и его handle. значения полей расширенных данных следуют за их dxf кодом. множественные значения выводятся скобочным списком. легенда по dxf кодам в конце файла csv. Код:
Последний раз редактировалось koMon, 08.02.2022 в 11:43. |
||||
|
||||
Спасибо!
В целом, кажется, разобрался. Оч. удобно, что действует и для заранее выбранных объектов, и можно выбрать после. Цитата:
В т.ч., что лучше выгружать каждый Appname в свой файл. Тогда проще сформировать строку заголовка, и пользователям легче просматривать-анализировать данные. Да, ATTOUT выгружает все выбранные блоки в один файл, но и работать с ним пользователям сложнее. В заголовке я бы выводил не коды, а человекопонятные обозначения типов данных. И, наверное, давал их порядковый номер (1_INTEGER, 5_STRING) - чтобы легче было ориентироваться в случае многих однотипных полей, видеть, что поля (колонки) были переставлены. Вроде: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Offtop: Аппетит приходит во время еды. АлексЮстасу, изучай программирование и пиши сам чего хочешь - только в таком случае ты получишь именно то, что тебе нужно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Все приведенные мной сейчас соображения повторяют описанное мной в вопросе.
Придавать порядковые номера к названиям полей-колонок я придумал, да, позже. С ними для XData было бы удобнее, но и не настаиваю.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
В NOD занести список соответствий {Целое число - ключ ID и Строковое название поля}, в XData писать парами -> число ID названия поля и само значение. Тогда был бы осознанный вывод информации, а не шифровки Юстас-центру) С тем же извлечением данных из атрибутов люди до сих пор работают - но там же однозначная привязка данных к имени атрибута.
|
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588
|
koMon, на полном серьезе, спасибо за помощь ТС.
Теперь самое интересное, наблюдать взлетит или нет и если взлетит, то в каком направлении =) ЗЫ. Накину, одна из причин, почему XData не зашли у конечного пользователя - эти данные не видно, не видно есть они или нет, не видно что там хранится, в отличи от атрибутов блока. Но очень любопытно.... |
|||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,492
|
Цитата:
1. Делаем динамический блок, который имеет параметр растяжения и выглядит как условное обозначение забора в плане. 2. В блок добавляем атрибуты, которые нужны для составления спецификации (производитель, марка, высота и т.д.) 3. На генплане "разбрасываем" динамические блоки в соотвествующем слое и изменяем их длины в соответствии с требуемым планом забора 4. Изолируем слои с забором и делаем что-то типа attout для изолированных объектов 5. Обрабатываем результаты в экселе и создаем спецификацию Атрибуты для указанных динамических блоков очень удобно задаются в свойствах выделенного объекта (хоть для всех сразу, хоть для некоторых, хоть для одного). Зачем XDATA? Для XDATA нет удобного инструмента вроде палитры свойств объекта. Для XDATA будем писать аналогичный менеджер свойств? P.S. Любой объект (трубу, кабель и т.д.) можно сделать динамическим блоком, навешать на него нужные атрибуты и относительно быстро заспецифицировать. Последний раз редактировалось nickname2019, 17.07.2021 в 10:30. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
Цитата:
так охота "плодить" бесконечные анонимные промежуточные определения блоков? |
|||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,492
|
Цитата:
Проблемы могут быть если объектов много, например, при армировании ж.б.к. Там хомутов могут быть тысячи в одном файле. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588
|
Цитата:
Но вот зачем, мне пока не понятно. Достаточно других инструментов, не понятна финансовая выгода с всего этого. Используя другие инструменты я выполню ту же работу с той же скоростью и зачем при этом тратить время/деньги на разработку этого ПО не вполне понятно. Поэтому с интересом наблюдаю за движухой... АлексЮстасу, Вы проверяли, не теряются ли / портятся ли XData при вылете автокада с фатальной ошибкой и при последующем восстановлении файла? |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,008
|
Цитата:
какая может быть финансовая выгода - когда по истечении стольких лет процесс у ТС дошел лишь до собирания винегрета из чужих программ для работы с XData? |
|||
|
||||
Насколько могу понять (могу ошибаться!), этот фрагмент кода отвечает за выведение списка Apps XData в свое окно и выбор пользователем нужных Apps в этом окне. В т.ч. с помощью Ctrl и Shift.
Код:
Код:
Если есть выбранные объекты, то в окно Apps можно вывести только те, которые есть у выбранного. Хорошо бы в eXDatum.lsp добавить таким образом выбор экспортируемых Apps. Тогда, совмещенное с выбором объектов, управление экспортом было бы для пользователей и точнее, и эффективнее.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 17.07.2021 в 16:02. Причина: Замена картинки; добавил пример лиспа |
||||
|
||||
|
||||
|
||||
Спасибо!
Управление выгрузкой так и проще, и точнее! Сейчас при Esc все равно создается файл - с "послесловием" о кодах. Т.е. так можно случайно затереть содержательные данные. Хорошо бы дать пользователю возможность выбирать место для сохранения, да и изменять "префикс" заодно. Вроде бы в лиспе есть стандартная возможность - как окно из картинки? Тогда и полученные данные можно сравнивать при разных выгрузках, и не утратить незаметно предыдущие. Если нет предупреждений, что файлы уже существуют, то, может, выдавать общее предупреждение, что Существующие файлы будут заменены? Добавлено: для тестирования XData можно использовать файлы Electrical.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Повторюсь:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Соображений, выходящих за пределы стандартных самых общих принципов работы с файлами, я не высказываю.
Offtop: А если б ты в теме "Сделать при выборе объектов Enter соответствующим <Все>" подсказал решение, то это помогло бы моему пониманию лиспа.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
обновил #30. при нажатии Esc или не выбранных App команда завершается без записи пустого файла. файл запрашивается в лисп диалоге или et диалоге.
|
||||
|
||||
Здорово, что теперь можно не только менять место выгрузки, но и управлять префиксом! Легче сравнивать результаты разных выгрузок.
И с предупреждениями точно безопаснее. А за "Select objects <All>:" отдельное особое спасибо! Можно для профанов? Что есть "et диалог"?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
диалог функции по работе с именем файла из Express Tools (ET).
|
||||
|
||||
У меня был открыт в блокноте соответствующий csv, и после предупреждения, что файл существует, появилось окно
Цитата:
Кстати, названия файла csv в окне нет - "".
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
дескриптор файла не закрылся. точно блокнот втроенный. ятд, что встроенный не оставляет открытыми дескрипторы и читает всё в память, если только их не открыто немерянно. надо переписать на этот случай фрагмент с открытием файла.
|
||||
|
||||
Я проверяю в разных вариантах, и пока с Вашей программой это единственная проблемка.
----- добавлено через ~4 ч. ----- Цитата:
Я попробовал в другом AutoCAD, и запроса "Файл "" используется. Закройте его для продолжения" не было. В нем MTEXTED "Встроенный".
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
я имел в виду notepad встроенный в винду. а так-то с дескрипторами нужно аккуратнее.
|
||||
|
||||
Пока предположительно.
Наверное, пользователям выгружать XData, создаваемые самим AutoCAD, ни к чему? Может быть их лучше исключить из показываемых пользователю Apps, из выгружаемых Apps? Перечень таких пока оч. скуден, собран методом тыка, официального нет: ACAD - у видовых экранов, у размеров, у штриховок, GradientColor1ACI - у штриховок, GradientColor2ACI - у штриховок, PE_URL - для гиперлинков, IRD - для топологических данных в Map 3D. XData в Electrical используются вовсю, помногу, списка их тоже нет. Сотни. У большинства из них особенность - есть общие начала названий: VIA_WD_... ACE_TABLE_... CIM_WD_... AVE_... KABLING. Может быть для этих и подобных предусмотреть маски звездочками? Вроде: VIA_WD_*, ACE_TABLE_*. В целом похоже на список неудаляемых словарей, который здесь на форуме тоже собирали всем миром - https://forum.dwg.ru/showpost.php?p=...4&postcount=94. Здесь же список для не показываемых пользователю, не выгружаемых XData.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 26.07.2021 в 00:24. |
||||
|
||||
Вот и импорт (загрузка) - XDTOOLS_CSV2.
Загружаются данные в XData из csv, txt с одинаковым количеством данных через разделители табуляцией, точкой с запятой, запятой. После выбора файла загружаются данные из всех файлов с одинаковым префиксом, если в названии есть символ "&". Часть названия файла после "&" принимается как название XData. Или все название, если нет "&". В т.ч. можно загружать данные txt из ATTOUT. Написано слабо, переделано из программы француза для аналогичных данных, но задачу выполняет. Требует тестирования.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
На основе опубликованной здесь eXDatum.lsp от komon сделана команда выгрузки данных из XData в csv, txt в двух вариантах: в общий файл, в раздельные файлы для каждого XData.
Выгружаются указанные XData для выбранных объектов. Изменения-дополнения сделаны для удобства пользователей. Одновременно француз CADaSchtroumpf создал свои такие же программы выгрузки-загрузки XData: All_XD2CSV.lsp и CSV2XD.lsp. Выгружаются сразу все указанные XData и загружаются все csv, txt с указанным префиксом названий файлов.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автокад 2010 виснит намертво при сохранении файла | LenaE | AutoCAD | 18 | 04.05.2020 12:59 |
Как принято, как лучше описывать Xdata у элементов? | АлексЮстасу | AutoCAD | 96 | 08.01.2020 09:25 |
Описание xdata | АлексЮстасу | Программирование | 68 | 09.10.2014 11:46 |
Ищу способы упрощения работы с XData (расширенными данными) в VBA, Lisp | RasRuf | LISP | 1 | 29.01.2009 10:55 |