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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Excel-blocking - экспорт/импорт содержимого аттрибутов блоков в Excel

LISP. Excel-blocking - экспорт/импорт содержимого аттрибутов блоков в Excel

Ответ
Поиск в этой теме
Непрочитано 22.04.2015, 13:19 #1
LISP. Excel-blocking - экспорт/импорт содержимого аттрибутов блоков в Excel
kakt00z
 
инженер-проектировщик КИПиА
 
Минск
Регистрация: 30.08.2008
Сообщений: 159

Решил поделиться двумя своими, на мой взгляд полезными, командами

Программа позволяет экспортировать в excel и импортировать назад содержимое аттрибутов блоков

ЗАПУСК программы производится из командной строки автокада путем ввода букв:
blks>excel[enter]
или
excel>blks[enter]

Пояснения:
blks>excel - экспортирует данные из атрибутов выделенных блоков автокада во вновь создаваемое окно excel
выделить блоки можно как до запуска команды так и после
(подсказка: выделяя блоки до запуска команды можно использовать фильтры выбора (команда _filter) или команду "Select Similar" из
всплывающего меню (правый щелчек мыши) на выделенном блоке
таким образом заранее сформировав нужный набор блоков)
В итоге, создается файл excel в котором каждому блоку будет соответствовать строка данных с заполненными значениями из аттрибутов
в шапке таблицы - имена атрибутов
и еще будет 1 столбец (или несколько - если в наборе были разные блоки) с "ручками" представляющими собой уникальный адрес блока в файле чертежа
по этому адресу можно будет импортировать данные из файла ексель назад в автокад

обратный импорт данных:
предварительно, в окне excel выделяется нужный диапазон данных - все данные или их часть (главное чтобы в набор попадала шапка таблицы и столбец(ы) с ручками)
далее идем в автокад и запускаем команду excel>blks

можно сохранять файл ексель и производить импорт данных позже, но тут важно понимать - если вы после экспорта скопировали
целевые блоки и вставили вновь (например для альтернативного решения) а старые удалили, то - хоть внешне этот набор не будет отличаться от
исходного, но ручки (handles) будут другие, и данные из файла excel не импортируются

v1.1 - исправлена сортировка

Вложения
Тип файла: lsp excel-blocking-ex_1.1.LSP (11.8 Кб, 1339 просмотров)


Последний раз редактировалось kakt00z, 06.05.2015 в 11:32.
Просмотров: 25994
 
Непрочитано 22.04.2015, 14:26
#2
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Обратно в автокад не получается. Пишет" inspect #excel>blks:reprt to see report"
dip вне форума  
 
Непрочитано 22.04.2015, 14:43
#3
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893


а в чём отличие от ATTIN и ATTOUT?
kacugu вне форума  
 
Непрочитано 22.04.2015, 15:05
#4
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Цитата:
Сообщение от dip Посмотреть сообщение
Обратно в автокад не получается. Пишет" inspect #excel>blks:reprt to see report"
С этим вроде разобрался. Программа вроде работает. Но в итоге не меняет значение атрибутов а автокаде. Может ваша программа не работает с динамическими блоками?
dip вне форума  
 
Автор темы   Непрочитано 22.04.2015, 19:59
#5
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


Цитата:
Сообщение от kacugu Посмотреть сообщение
а в чём отличие от ATTIN и ATTOUT?
хм.. да вроде как только отсутствием итерации сохранения текстового файл и последующем открытии его в екселе
а давно эти команды в ET ?
kakt00z вне форума  
 
Непрочитано 22.04.2015, 20:13
#6
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893


Цитата:
Сообщение от kakt00z Посмотреть сообщение
а давно эти команды в ET ?
Точно не знаю, но команды далеко не новые
kacugu вне форума  
 
Автор темы   Непрочитано 23.04.2015, 13:48
#7
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


Цитата:
Сообщение от dip Посмотреть сообщение
С этим вроде разобрался. Программа вроде работает. Но в итоге не меняет значение атрибутов а автокаде. Может ваша программа не работает с динамическими блоками?
поправил. что говорит теперь?
kakt00z вне форума  
 
Непрочитано 23.04.2015, 14:34
#8
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Цитата:
Сообщение от kakt00z Посмотреть сообщение
поправил. что говорит теперь?
не обновляет он атрибуты в чертеже после команды excel>blks
Может я не правильно в эксель выделяю. Скрин прилагаю
Миниатюры
Нажмите на изображение для увеличения
Название: Скриншот 2015-04-23 14.31.56.jpg
Просмотров: 747
Размер:	181.9 Кб
ID:	148292  
dip вне форума  
 
Непрочитано 23.04.2015, 15:05
#9
frostmourn


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


Аж зарегистрировался.
Всё гораздо проще. kakt00z, у вас там #actdoc не инициализирован.
dip, добавьте строчку
Код:
[Выделить все]
(setq #actdoc (vla-get-activedocument (vlax-get-acad-object)))
И, кстати, традиционный (vl-load-com) не помешает.
frostmourn вне форума  
 
Непрочитано 23.04.2015, 16:39
#10
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Цитата:
Сообщение от frostmourn Посмотреть сообщение
Аж зарегистрировался.
Всё гораздо проще. kakt00z, у вас там #actdoc не инициализирован.
dip, добавьте строчку
Код:
[Выделить все]
(setq #actdoc (vla-get-activedocument (vlax-get-acad-object)))
И, кстати, традиционный (vl-load-com) не помешает.
Спасибо, конечно. Только куда именно в лиспе добавить эту строчку (за какой строчкой)? Я не силен в лисп программировании
dip вне форума  
 
Автор темы   Непрочитано 23.04.2015, 17:23
#11
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


как обычно )) на старые грабли завтра исправлю
а выделять нужно рамкой... это тоже забыл написать... перемещая ненужные столбцы в сторону ... пока что так...

----- добавлено через ~22 ч. -----
замечания исправил, + можно как на скриншоте в #8

Последний раз редактировалось kakt00z, 25.04.2015 в 18:46.
kakt00z вне форума  
 
Непрочитано 26.04.2015, 15:06
#12
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Спасибо тебе большое, Уважаемый kakt00z. Дай бог, всех благ тебе. Все работает. Давно ждал такую программу. Преимущества между этой программой и ATTIN и ATTOUT очевидны.
dip вне форума  
 
Непрочитано 10.11.2015, 10:59
#13
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 183


Большое спасибо за программу! Однажды мне жутко надоело используя ATTIN и ATTOUT прыгать через текстовый файл в эксель и обратно. Да и динамических блоков (точнее их имен) Express не понимает. Нашел подобный инструмент в ToolPac. Весьма хорош. Но там те же проблемы с определением имен динамических блоков, да и обмен информации идет через csv, а это неудобно (для нормальной работы нужно изменять системные настройки разделителя элементов списка с ";" на ",")
Немного потестил. Проблемы:
1. Атрибутика в экселе вся представлена в текстовом формате. Причем попытки просто изменить формат ячеек на числовой с заданной точностью никчему не привели! Эксель не воспринимает эти данные как числа! Первый раз с таким сталкиваюсь. Изменить формат ячеек удалось только через ярлычок ошибки представления данных (преобразовать в число). Такая манипуляция отнимает кучу времени.
Нельзя ли данные атрибутов представить в экселе в общем формате, а имена HANDLE в первом столбце представлять с апострофом ' . В этом случае HANDLE будут правильно читаться, а все остальные данные, можно будет складывать делить итд, что согласитесь, логично для экселя.
2. Разделители десятичных разрядов импортируются в чертеж как запятые, хотя у меня вся система настроена на точки. Точка как дробный разделитель поставлена в системе как раз для того, чтобы ексель понимал данные из чертежа как числа и мог работать с ними.
В полученных из экселя атрибутах не отображаются нули после запятой, хотя формат ячеек был настроен.
Ну и еще один маааленький вопрос. Можно ли с помощью лиспа реализовать синхронизацию данных атрибутов открытого чертежа и книги экселя. Есть одна программка которая это делает, но уж больно много авторами наложено ограничений.
Krovlaf вне форума  
 
Непрочитано 10.11.2015, 13:43
#14
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


kakt00z, в виду отсутствия производственной необходимости программу использовать не имею нужды, но бегло потестировав, имею замечание. Думаю, не лишним будет очищать форматирование атрибутов перед вставкой их в Excel, иначе получается то, что на картинке. Можно воспользоваться програмой от LeeMac : http://www.lee-mac.com/unformatstring.html
Миниатюры
Нажмите на изображение для увеличения
Название: BLKSEXCEL.PNG
Просмотров: 377
Размер:	2.5 Кб
ID:	160203  
skkkk вне форума  
 
Автор темы   Непрочитано 26.08.2016, 10:14
#15
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


Цитата:
Сообщение от skkkk Посмотреть сообщение
kakt00z, в виду отсутствия производственной необходимости программу использовать не имею нужды, но бегло потестировав, имею замечание. Думаю, не лишним будет очищать форматирование атрибутов перед вставкой их в Excel, иначе получается то, что на картинке. Можно воспользоваться програмой от LeeMac : http://www.lee-mac.com/unformatstring.html
На первый взгляд, неплохое замечание, но
Возникает вопрос - а как тогда вставлять назад?
Форматирование уберется, и атрибут (конкретный), который раньше был "подогнан" [например по степени сжатия чтобы "влазило" в ячейку], станет налетать на линии таблицы*.
И, даже подумав еще чуть-чуть, возникнет мысль, что не плохо было бы считывать форматирование каждого атрибута перед вставкой данных, и применять его, но
всё было бы неплохо, если бы это самое форматирование было применено на весь текст целиком, а если нет? мысли уходят в применение "масок" и т.п. в пределе - искусственный интеллект
и тут уже встает мысль о целесообразности такого занятия, времени и мотивации
так что выбор оставлен в сторону того, что "не документ а для себя" (acad vs excel)
kakt00z вне форума  
 
Непрочитано 15.08.2019, 18:57
#16
acidleha


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



При вставке из Excell добавляет ко всем цифрам ?!точность?! ,0000 (те в excell было 1, в Autocad стало 1,0000; в Excell было 5,25 в Autocad стало 5,2500).
Как побороть?
acidleha вне форума  
 
Непрочитано 15.08.2019, 23:28
1 | #17
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Думаю, в автокаде надо выставить переменную DIMZIN в ноль. А LUPREC - в такую цифру, какое количество знаков после запятой нужно.
Но это не точно. Код не анализировал.
skkkk вне форума  
 
Непрочитано 16.08.2019, 14:50
#18
acidleha


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Думаю, в автокаде надо выставить переменную DIMZIN в ноль. А LUPREC - в такую цифру, какое количество знаков после запятой нужно.
Но это не точно. Код не анализировал.
Вроде работает... Спасибо!
acidleha вне форума  
 
Непрочитано 07.11.2021, 19:22
#19
gezer


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


Огромное спасибо автору и всем кто дополнял. Отличный инструмент.
gezer вне форума  
 
Непрочитано 19.11.2021, 17:22 Не получается экспорт из excel
#20
Xamer78

Проектировщик
 
Регистрация: 28.11.2011
Пятигорск
Сообщений: 4


Здравствуйте!

При попытке экспорта из excel:

Команда: EXCEL>BLKS
Настройка переменной AutoCAD отвергнута: "CMDECHO" nil


Можете подсказать причину?
Xamer78 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Excel-blocking - экспорт/импорт содержимого аттрибутов блоков в Excel

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Очистка рисунка от "пустых" блоков Makswell Готовые программы 15 26.10.2022 15:24
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
LISP. Сумма значений аттрибутов блоков. dirge LISP 8 16.07.2012 19:05