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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выгрузить XData в csv (txt)

Выгрузить XData в csv (txt)

Ответ
Поиск в этой теме
Непрочитано 10.07.2021, 22:20
Выгрузить XData в csv (txt)
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,031

Пытался найти экспорт содержания XData в csv, txt.
Нашел лисп Renseignements-XDATA.lsp с командой XdataXL, выгружающей XData в csv для указанных объектов.
И нашел лисп WXD_XData-Excel.lsp, команда WXD, выгружающий указанный Application в открывающийся Excel для указанных объектов.
Но оба выгружают не все из XData. Пропускают какие-то данные, выгружают, допустим, из "Code 1010, 3 real numbers" в нечитаемом виде.

Можно ли какой-то из этих лиспов модифицировать, чтобы выгружал в csv все данные из Application?
Лучше всего для выделенных до/после объектов в духе ATTOUT из Express: с HANDLE объектов, с названиями колонок из типов данных ("ASCII_string", "3_real_numbers", "Real_number", "16-bit_integer" и т.п.).
Можно, допустим, без выбора Application - выгружать все XData у выбранных объектов, каждый в свой csv с названием из названия dwg&appname.

Вложения
Тип файла: lsp Renseignements-XDATA.lsp (4.9 Кб, 63 просмотров)
Тип файла: lsp WXD_XData-Excel.lsp (2.7 Кб, 57 просмотров)

__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 21560
 
Непрочитано 17.07.2021, 14:40
#41
zamtmn

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


Чтоб взлетело - нужно отображение в окне свойств и какоето отдельное отображение данных в какойто древовидной структуре, чтоб быстро находить нужные примитивы
zamtmn вне форума  
 
Автор темы   Непрочитано 17.07.2021, 15:31
#42
АлексЮстасу

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


Насколько могу понять (могу ошибаться!), этот фрагмент кода отвечает за выведение списка Apps XData в свое окно и выбор пользователем нужных Apps в этом окне. В т.ч. с помощью Ctrl и Shift.
Код:
[Выделить все]
 ;; ListBox (gile)
;; Boite de dialogue permettant un ou plusieurs choix dans une liste
;;
;; Arguments
;; title : le titre de la boite de dialogue (chaîne)
;; msg ; message (chaîne), "" ou nil pour aucun
;; keylab : une liste d'association du type ((key1 . label1) (key2 . label2) ...)
;; flag : 0 = liste déroulante
;; 1 = liste choix unique
;; 2 = liste choix multipes
;;
;; Retour : la clé de l'option (flag = 0 ou 1) ou la liste des clés des options (flag = 2)
;;
;; Exemple d'utilisation
;; (listbox "Présentation" "Choisir une présentation" (mapcar 'cons (layoutlist) (layoutlist)) 1)
(vl-load-com)
(defun str2lst (str sep / pos)
  (if (setq pos (vl-string-search sep str))
    (cons
      (substr str 1 pos)
      (str2lst (substr str (+ (strlen sep) pos 1)) sep)
    )
    (list str)
  )
)
(defun ListBox (title msg keylab flag / tmp file dcl_id choice)
  (setq
    tmp (vl-filename-mktemp "tmp.dcl")
    file (open tmp "w")
  )
  (write-line
    (strcat "ListBox:dialog{label=\"" title "\";")
    file
  )
  (if (and msg (/= msg ""))
    (write-line (strcat ":text{label=\"" msg "\";}") file)
  )
  (write-line
    (cond
      ((= 0 flag) "spacer;:popup_list{key=\"lst\";")
      ((= 1 flag) "spacer;:list_box{key=\"lst\";width=32;")
      (T "spacer;:list_box{key=\"lst\";width=32;multiple_select=true;")
    )
    file
  )
  (write-line "}ok_cancel_err;}" file)
  (close file)
  (setq dcl_id (load_dialog tmp))
  (if (not (new_dialog "ListBox" dcl_id))
    (exit)
  )
  (start_list "lst")
  (mapcar 'add_list (mapcar 'cdr keylab))
  (end_list)
  (action_tile
    "accept"
    "(or (= (get_tile \"lst\") \"\")
      (if (= 2 flag)
        (progn
          (foreach n (str2lst (get_tile \"lst\") \" \")
            (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))
          )
          (setq choice (reverse choice))
        )
        (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab)))
      )
    )
    (done_dialog)"
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (vl-file-delete tmp)
  choice
)
А как-то так он вызывается в программе (это мое предположение профана):
Код:
[Выделить все]
         (setq sel_app (listbox "Applications" "Choisir l'application" (mapcar 'cons lst_apps lst_apps) 2))
Точнее можно посмотреть в sel_by_apps.lsp в моей подборке 30+ программ для XData или в https://forum.dwg.ru/showpost.php?p=...0&postcount=44

Если есть выбранные объекты, то в окно Apps можно вывести только те, которые есть у выбранного.

Хорошо бы в eXDatum.lsp добавить таким образом выбор экспортируемых Apps.
Тогда, совмещенное с выбором объектов, управление экспортом было бы для пользователей и точнее, и эффективнее.
Миниатюры
Нажмите на изображение для увеличения
Название: выбор_Apps_El.png
Просмотров: 48
Размер:	9.4 Кб
ID:	238977  
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 17.07.2021 в 16:02. Причина: Замена картинки; добавил пример лиспа
АлексЮстасу вне форума  
 
Непрочитано 19.07.2021, 11:51
1 | #43
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


да это простейший диалог с одним элементом построения списка и стандартными кнопками.

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Хорошо бы в eXDatum.lsp добавить таким образом выбор экспортируемых Apps.
обновил #30 с диалогом.

Boxa, звучит как-то амбивалентно
koMon вне форума  
 
Автор темы   Непрочитано 19.07.2021, 15:36
#44
АлексЮстасу

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


Спасибо!
Управление выгрузкой так и проще, и точнее!

Сейчас при Esc все равно создается файл - с "послесловием" о кодах. Т.е. так можно случайно затереть содержательные данные.

Хорошо бы дать пользователю возможность выбирать место для сохранения, да и изменять "префикс" заодно. Вроде бы в лиспе есть стандартная возможность - как окно из картинки?
Тогда и полученные данные можно сравнивать при разных выгрузках, и не утратить незаметно предыдущие.

Если нет предупреждений, что файлы уже существуют, то, может, выдавать общее предупреждение, что Существующие файлы будут заменены?

Добавлено: для тестирования XData можно использовать файлы Electrical.
Миниатюры
Нажмите на изображение для увеличения
Название: окно_file.png
Просмотров: 34
Размер:	32.6 Кб
ID:	239034  
Вложения
Тип файла: dwg
DWG 2004
Electrical.dwg (2.48 Мб, 13 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 19.07.2021, 15:47
#45
Кулик Алексей aka kpblc
Moderator

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


Повторюсь:
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Offtop: Аппетит приходит во время еды. АлексЮстасу, изучай программирование и пиши сам чего хочешь - только в таком случае ты получишь именно то, что тебе нужно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.07.2021, 17:13
#46
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
...
Соображений, выходящих за пределы стандартных самых общих принципов работы с файлами, я не высказываю.
Offtop: А если б ты в теме "Сделать при выборе объектов Enter соответствующим <Все>" подсказал решение, то это помогло бы моему пониманию лиспа.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 20.07.2021, 12:24
1 | #47
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Сейчас при Esc все равно создается файл - с "послесловием" о кодах. Т.е. так можно случайно затереть содержательные данные.
обновил #30. при нажатии Esc или не выбранных App команда завершается без записи пустого файла. файл запрашивается в лисп диалоге или et диалоге.
koMon вне форума  
 
Автор темы   Непрочитано 20.07.2021, 16:02
#48
АлексЮстасу

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


Здорово, что теперь можно не только менять место выгрузки, но и управлять префиксом! Легче сравнивать результаты разных выгрузок.
И с предупреждениями точно безопаснее.

А за "Select objects <All>:" отдельное особое спасибо!

Можно для профанов? Что есть "et диалог"?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 20.07.2021, 16:21
1 | #49
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


диалог функции по работе с именем файла из Express Tools (ET).
koMon вне форума  
 
Автор темы   Непрочитано 21.07.2021, 15:33
#50
АлексЮстасу

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


Цитата:
Сообщение от koMon Посмотреть сообщение
koMon
У меня был открыт в блокноте соответствующий csv, и после предупреждения, что файл существует, появилось окно
Цитата:
Файл "" используется.
Закройте его для продолжения
Я все csv закрыл, но это окно не реагирует ни на что, и блокирует весь AutoCAD.
Кстати, названия файла csv в окне нет - "".
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 21.07.2021, 16:05
#51
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


дескриптор файла не закрылся. точно блокнот втроенный. ятд, что встроенный не оставляет открытыми дескрипторы и читает всё в память, если только их не открыто немерянно. надо переписать на этот случай фрагмент с открытием файла.
koMon вне форума  
 
Автор темы   Непрочитано 21.07.2021, 16:20
#52
АлексЮстасу

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


Цитата:
Сообщение от koMon Посмотреть сообщение
koMon
Я проверяю в разных вариантах, и пока с Вашей программой это единственная проблемка.

----- добавлено через ~4 ч. -----
Цитата:
Сообщение от koMon Посмотреть сообщение
дескриптор файла не закрылся. точно блокнот втроенный. ятд, что встроенный не оставляет открытыми дескрипторы и читает всё в память, если только их не открыто немерянно. надо переписать на этот случай фрагмент с открытием файла.
В заглохшем AutoCAD MTEXTED был "Internal".
Я попробовал в другом AutoCAD, и запроса "Файл "" используется. Закройте его для продолжения" не было. В нем MTEXTED "Встроенный".
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 22.07.2021, 14:08
1 | #53
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


я имел в виду notepad встроенный в винду. а так-то с дескрипторами нужно аккуратнее.
koMon вне форума  
 
Автор темы   Непрочитано 25.07.2021, 04:30
#54
АлексЮстасу

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


Пока предположительно.
Наверное, пользователям выгружать 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.
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 09.03.2022, 16:39
#55
АлексЮстасу

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
если в импорт+экспорт = вообще красота
Вот и импорт (загрузка) - XDTOOLS_CSV2.
Загружаются данные в XData из csv, txt с одинаковым количеством данных через разделители табуляцией, точкой с запятой, запятой.
После выбора файла загружаются данные из всех файлов с одинаковым префиксом, если в названии есть символ "&". Часть названия файла после "&" принимается как название XData. Или все название, если нет "&".
В т.ч. можно загружать данные txt из ATTOUT.

Написано слабо, переделано из программы француза для аналогичных данных, но задачу выполняет.
Требует тестирования.
Вложения
Тип файла: lsp XDTOOLS_CSV2-v-0-6.lsp (10.9 Кб, 14 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Автор темы   Непрочитано 14.03.2022, 20:31
#56
АлексЮстасу

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


На основе опубликованной здесь eXDatum.lsp от komon сделана команда выгрузки данных из XData в csv, txt в двух вариантах: в общий файл, в раздельные файлы для каждого XData.

Выгружаются указанные XData для выбранных объектов.
Изменения-дополнения сделаны для удобства пользователей.

Одновременно француз CADaSchtroumpf создал свои такие же программы выгрузки-загрузки XData: All_XD2CSV.lsp и CSV2XD.lsp.

Выгружаются сразу все указанные XData и загружаются все csv, txt с указанным префиксом названий файлов.
Миниатюры
Нажмите на изображение для увеличения
Название: XDTOOLS_2CSV.png
Просмотров: 24
Размер:	33.1 Кб
ID:	246013  
Вложения
Тип файла: lsp XDTOOLS_2CSV-v-0-62.lsp (36.8 Кб, 15 просмотров)
Тип файла: lsp XDTOOLS_CSV2-v-0-62.lsp (11.5 Кб, 15 просмотров)
Тип файла: lsp All_XD2CSV.lsp (5.9 Кб, 18 просмотров)
Тип файла: lsp CSV2XD.lsp (3.7 Кб, 17 просмотров)
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выгрузить 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