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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Корректировка атрибутов блоков в нескольких чертежах AutoCAD из Excel

Корректировка атрибутов блоков в нескольких чертежах AutoCAD из Excel

Ответ
Поиск в этой теме
Непрочитано 14.04.2011, 20:25 #1
Корректировка атрибутов блоков в нескольких чертежах AutoCAD из Excel
superkot007
 
Регистрация: 15.01.2010
Сообщений: 254

На создание темы натолкнула мысль о командах экспорта/импорта атрибутов блока - attin и attout (Express Tools). Фишка извлечения атрибутов из файла в текстовой файл с возможностью редактирования параметров извлеченных атрибутов и применение к чертежу уже измененного файла крайне полезная для меня вещь

Вот бы тоже самое, но для НЕСКОЛЬКИХ файлов...

Алгоритмы набросал (может, что уже есть готовое)
Экспорт
1. Выполнить команду экспорта данных - указание каталога с файлами, из которых требуется извлекать данные
2. Выбор блока в первом файле (или блок будет "жестко" указан до начала выполнения)
2а. Открытие первого файла
3. Экспорт атрибутов нужного блока в файл
4. Открытие след. файла
5. "Дозапись" в конец новых данных по атрибутам
6. Повторение п.4-5 до полного "прочесывания" выбранного каталога - получение файла с атрибутами блока ВСЕХ чертежей (условно - А-файл)
7. Форматирование А-файла в Excel-таблицу (удобно редактировать и просматривать данные)

Импорт
1. Выполнить команду импорта данных - указание каталога с файлами, в котором требуется корректировать данные
2. Выбор блока в первом файле (или блок будет "жестко" указан до начала выполнения)
2а. Открытие первого файла
3. Импорт атрибутов блока в файл
4. Открытие след. файла
5. Импорт атрибутов блока в файл
6. Повторение п.4-5 до полного "прочесывания" выбранного каталога.

P.S.: Попробовал "вручную", для 2-х файлов: из каждого чертежа извлек атрибуты, скопировал все полученные TXT-файлы в один, открыл его в Excel ( ), отредактировал как нужно, в каждом чертеже запускал импорт атрибутов - все нормально, только неудобно это:
- крайне долго, если чертежей не 2-3, а "немножко" больше - 10-20-50;
- Excel "не понимает" формат 0001 (может я туплю, конечно, но не нашел, как заставить его выводить 0001, 0002), в txt-файл идут числа без нулей
- в TXT-файл записаны атрибуты нескольких чертежей, поэтому при импорте в каждый чертеж появляется предупреждение (это совсем мелочь)

P.S.S.: Был бы нужен один экспорт, пользовался бы "Извлечением атрибутов"
Просмотров: 11808
 
Непрочитано 14.04.2011, 20:48
#2
Кулик Алексей aka kpblc
Moderator

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


Полностью подобный алгоритм вряд ли удастся реализовать. Во-первых, потому, что привязка осуществляется через Handle объекта. Handle, конечно, уникален, но только в пределах одного чертежа.
Во-вторых, судя по
Цитата:
Сообщение от superkot007 Посмотреть сообщение
указание каталога с файлами, в котором требуется корректировать данные
придется обрабатывать другой каталог, где и хендлы другие, и блоки могут быть иными...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.04.2011, 21:36
#3
superkot007


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Полностью подобный алгоритм вряд ли удастся реализовать. Во-первых, потому, что привязка осуществляется через Handle объекта. Handle, конечно, уникален, но только в пределах одного чертежа.
Во-вторых, судя по
придется обрабатывать другой каталог, где и хендлы другие, и блоки могут быть иными...
1. Хендлы постоянны в чертеже? Вроде бы вероятность его совпадения в двух файлах (пусть даже если файлов сотня) мизерная... Замены хендла в чертеже, если такое все-таки случится, возможна?

2. Не, каталог как раз ДОЛЖЕН быть постоянным.
Обычные ситуации:
  • каталог с чертежами, нужно в сжатые (у инженеров по-другому не бывает ) сроки внести корректировки; перед корректировкой проводится экспорт атрибутов корректируемого блока, полученный файл "прилизывается", после чего в тот же каталог проводится импорт - атрибуты в куче чертежей изменены, масса времени сэкономлена
  • несколькими людьми делается один проект, после завершения основных работ требуется провести "проверку" (обычно это - сквозная нумерация элемента чертежа), опять же - экспорт-редактирование-импорт
  • некоторые блоки имеют одинаковые атрибуты (например, ГОСТ, материал, изготовитель и проч.), при непосредственном создании чертежей эти данные не вносятся (атрибуты "пустые"), а в Excel-е эти данные распределяются гораздо быстрее простым копи-пастом

Последний раз редактировалось superkot007, 14.04.2011 в 21:42.
superkot007 вне форума  
 
Непрочитано 28.04.2011, 09:31
#4
skaj

инженер-проектировщик, железные дороги
 
Регистрация: 06.12.2010
Вильнюс
Сообщений: 5


мне тоже актаульно. только в моём случае нужно открыть по очереди все чертежи из папки и в блоке А сменить значение аттрибута Б на значение В. Блок А и его аттрибут Б во всех файлах одинаковы. как это сделать?
skaj вне форума  
 
Непрочитано 28.04.2011, 15:54
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Batch Find & Replace Text
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.04.2011, 18:13
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
...привязка осуществляется через Handle объекта. Handle, конечно, уникален, но только в пределах одного чертежа.
Откуда ты все время это берешь?
Я читал другое:
Цитата:
From docs

Work with ObjectIds



Each object contained with in the Database object is assigned several unique ids. The unique ways you can access objects are:

Entity handle
ObjectId
Instance pointer
The most common method is to access an object by its Object Id. Object Ids work well if your projects utilize both COM interop and the managed .NET API. If you create custom AutoLISP functions, you may need to work with entity handles.

Handles are persistent between AutoCAD sessions, so they are the best way of accessing objects if you need to export drawing information to an external file which might later need to be used to update the drawing. The ObjectId of an object in a database exists only while the database is loaded into memory. Once the database is closed, the Object Ids assigned to an object no longer exist and maybe different the next time the database is opened.
Олег (jr.) вне форума  
 
Непрочитано 28.04.2011, 21:49
#7
skaj

инженер-проектировщик, железные дороги
 
Регистрация: 06.12.2010
Вильнюс
Сообщений: 5


Цитата:
Сообщение от VVA Посмотреть сообщение
Batch Find & Replace Text
Спасибо, VVA. Это похоже на то, что нужно.
skaj вне форума  
 
Непрочитано 28.04.2011, 22:28
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


когда-то показывал это, а ещё ранее - пакетную обработку чертежей как по каталогам (рекурсивно, если нужно), так и по всем файлам в составе подшивки. То, что показано в видео, можно выполнять так же пакетно.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 28.04.2011, 23:03
#9
skaj

инженер-проектировщик, железные дороги
 
Регистрация: 06.12.2010
Вильнюс
Сообщений: 5


Цитата:
Сообщение от hwd Посмотреть сообщение
когда-то показывал это
спасибо, полезное видео.
skaj вне форума  
 
Непрочитано 28.04.2011, 23:50
#10
Кулик Алексей aka kpblc
Moderator

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


Олег (jr.), я говорил, что хендлы уникальны в пределах одного чертежа. В другом чертеже (то есть файле) они могут дублироваться.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.04.2011, 23:59
#11
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Олег (jr.), я говорил, что хендлы уникальны в пределах одного чертежа. В другом чертеже (то есть файле) они могут дублироваться.
Приношу извинения, невнимательно прочитал
Cheers
Олег (jr.) вне форума  
 
Непрочитано 20.10.2011, 11:53
#12
KoRORland


 
Регистрация: 20.10.2011
Москва
Сообщений: 2


Добрый день!

У меня возникла подобная проблема - есть набор чертежей со стандартными блоками. Аттрибуты в них имеют кириллические имена, а значения аттрибутов - все разные. Задача - поменять значения нужных атрибутов в определённых блоках на одинаковые с помощью VBA, для чего хочется написать простенький макрос..

Вообще, глобально, данные для замены берутся из Excel'я, и конечно хотелось бы запускать макрос из него.

С VBA довольно поверхностно знаком, а потому буксую =( Заранее спасибо!
KoRORland вне форума  
 
Непрочитано 20.10.2011, 12:17
#13
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Так в чем вопрос-то?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.10.2011, 12:33
#14
KoRORland


 
Регистрация: 20.10.2011
Москва
Сообщений: 2


Собственно, как обратиться с помощью VBA к этому "Import Attributes", указать ему определённый блок и выдать имя текстовика, откуда брать данные..
KoRORland вне форума  
 
Непрочитано 20.10.2011, 12:53
#15
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


в упрощенном виде
acad=..."autocad.application"
doc=acad.ActiveDocuments.Open("filename.dwg")
doc.ModelSpace.(items...) - фильруем все items типа BlockReference
каждой BlockReference.GetAttributes()->массив AcadAttributeReference (аттрибутов) со свойствами TagString и TextString (имя, значение)
ну и встроенная справка в помошь...
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Корректировка атрибутов блоков в нескольких чертежах AutoCAD из Excel

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление атрибутов всех блоков (Attsync для всех блоков) Vildar AutoCAD 3 18.05.2022 14:28
Таблицы из Excel в AutoCAD вставляются неполностью Nikolay_N AutoCAD 23 07.09.2019 21:12
связь текстовых полей AutoCad с ячейками в Excel April AutoCAD 9 29.06.2014 12:35
Извлечение атрибутов в файл Excel Kotsar AutoCAD 5 20.03.2014 14:44
Экспортировать в excel координаты блоков Влад AutoCAD 6 23.12.2008 17:45