Как сделать связь с данными в автокаде

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

~ This blog was initially created for people, who love autolisp routines, as I love it.

14 Sunday Dec 2014

Обновление данных атрибутов из CSV-файлов

Описание подпрограммы для импорта и экспорта данных между чертежом AutoCAD и электронной таблицей Excel.

Используя команду экспорта данных AutoCAD, которая находится в меню Tools можно извлечь данные атрибутов в файл электронной таблицы Excel или в таблицу, размещенную в самом чертеже. Используя эту возможность, многие найдут хорошей идею редактировать атрибут непосредственно в электронной таблице, но чтобы измененные атрибуты отображались в чертеже необходимо производить обратный экспорт.

В данной статье описан пример подобной подпрограммы. Она состоит из двух файлов (ATTRIBUTE-TABLE-UPDATE.LSP и ATTRIBUTE-TABLE-UPDATE.DCL), и позволяет экспортировать определенные блоки (в нашем случае – датчики пожарной сигнализации) вмести с их атрибутами и x-y координатами в файл в формате CSV (текстовый файл с данными разделенными запятыми), который удобен для открытия в Excel. Программа так же позволяет делать изменения в атрибутах и удалять вставленные в чертеже объекты, если они отсутствуют в CSV-файле.



Рис. 1. Предложение выбора
опции Export/Import.

Загрузите подпрограмму отсюда . Распакуйте и сохраните файл в папку Support которая находится в каталоге, куда установлен AutoCAD. Используя команду Load Application из меню Tools выберем файл ATTRIBUTE-TABLE-UPDATE.LSP и загрузи его.

Чтобы запустить подпрограмму, введите ATU в командной строке, после чего вы увидите контекстное меню с предположением выбрать опцию. Предлагается два варианта – Export (по умолчанию) и Import (рис. 1).

Если вы выберите Export, отобразиться диалоговое окно Results File у вас будет запрошен номер комнаты, в которой находятся интересующие нас датчики сигнализации (рис. 2). Укажем имя файла.



Рис. 2. Диалоговое окно Results File

Файл с результатами экспорта будет иметь расширение CSV, и его можно будет открыть в Notepad или Excel. На рисунке 3. показан файл, открытый в электронной таблицей Excel. Вы можете сделать изменения в столбце ADDRESS1, и удалить при необходимости одну или несколько строк, если соответствующие изменения должны быть сделаны и в чертеже.



Рис. 3. электронная таблица EXCEL.

После того как вы сделаете все изменения и сохраните файл опят в CSV-формате, вы можете опять запустить нашу подпрограмму в AutoCAD, набрав в командной строке ATU, только теперь выберите опцию Import в начальном запросе программы. Отобразиться диалоговое окно Import file, в котором вы должны будите выбрать CSV-файл, содержащий изменения которые вы хотите сделать в чертеже.



Рис. 4. Диалоговое окно Import File.

После того, как файл для импорта будет выбран, изменения в чертеже будут сделаны и отобразиться диалоговое окно Address Changes (Рис. 5). Нажмите на OK чтобы удалить диалоговое окно и проверьте чертеж, все ли изменения сделаны правильно. Обратите внимание на то, что вы можете отобразить диалоговое окно Address Changes в любое время в текущей сессии работы над чертежом набрав в командной строке (Show Changes).



Рис. 5. Диалоговое окно Address Changes.

Описание кода подпрограммы

После запуска моих стандартных функций для обработки ошибок и управления системными переменными, программа активизирует функцию ATT-DATA-OUT, которая определяет опции Export и Import, и вызывает функции GETBLKS, PRINT-OUT, и DO-IMPORT, в зависимости от того, что вы выбрали – экспорт или импорт CSV-файла.

GETBLKS создает список всех вставленных командой INSERT объектов, которые необходимо обработать. В нашем примере мы жестко указали имя блока “FA_DEVICE_INIT” (датчик пожарной сигнализации). Вы можете изменить его на имя блока, с которым вы собираетесь работать в двух операторах IF в коде, который показан ниже:

В нашем примере во второй и третьей строке установлены параметры для включения вставленных блоков. По логике программы это происходит, если имя блока больше чем 13 символов и первые 14 символов – FA_DEVICE_INIT. Вы можете изменить это для чтобы программа обрабатывала ваши блоки. В предпоследней строке показанного кода указывается, что необходимо рассматривать только те вставки блока, где точка вставки меньше чем 3,000″ в направлении оси X. Вы так же можете изменить это в соответствии с вашими критериями.

Следующая функция, PRINT-OUT, ссылается на несколько специфических атрибутов – ADDRESS1 и DEVICE_LOCATION – вы можете изменить их на ваши атрибуты блока в сегменте кода функции PRINT-OUT, который показан ниже:

Функция DO-IMPORT открывает предназначенный для импорта CSV-файл и вызывает функцию DO-ADDRESS для построчного чтения этого файла, возвращает она список точек вставки блоков и список изменений для отображения в диалоговом окне Address Changes. Если вы хотите настроить эту часть кода для своих нужд, вы должны придерживаться структуры CSV-файла как показано на рис. 3, с учетом следующих критериев:

  • Первое поле – это значение атрибута, которое можно изменять (ADDRESS1 в этой программе).
  • Второе поле – это имя вставляемого блока.
  • Третье поле – значение второго атрибута, эквивалентное DEVICE_LOCATION.
  • Четвертое поле – номер комнаты.
  • Последние два поля – координаты X и Y точки вставки блока.

Имена атрибутов, упомянутые выше, также присутствуют в последних двух описанных функциях и должны быть изменены соответственно при необходимости.

сферический инженер-кун в вакууме

Вообще моя "мечта идиота", чтобы вся инфа хранилась в чертеже. ЧТО. ГДЕ. КОГДА. А то через пол года открываешь проект. ЧТО? ГДЕ? КОГДА?

Если ты через полгода не можешь вспомнить хода выполнения и логики своего проекта, то приложение в котором ты его будешь делать вообще никакой роли играть не будет. Логика твоих действий должна зависеть не от приложений, а от тебя самого. У меня, как и у многих других коллег, которым свойственно стремление к порядку, для всех проектов сложилась определенная структура папок, она почти не модифицицировалась со временем. Всегда в моей корневой папке для каждого проекта есть поддиректория Расчеты и поддиректория Оборудование, есть и другие, но знакомыми являются именно эти две. В расчетах хранится всегда только актуальная версия последнего состояния объекта, т.е. именно то что пошло в работу, а не какие-то промежуточные этапы. Промежуточные этапы, как показывает практика, никакого смысла хранить нет, ровно как и промежуточные этапы графической части. Проект всегда развивается только в 1 направлении и ни разу не было чтобы изменения откатывались обратно. Если я сохранял промежуточные результаты, то они всегда шли в своеобразный архив и им присваивались номера ревизий. Но, как я уже сказал, никогда не возникало надобности возвращаться к этим архивным данным, так что в последнее время я не храню подобные предыдущие версии расчетов или графики, если только они не носят резервный характер из соображений безопасности.
Кстати, на моей текущей работе логика хранения проектов организована очень похожим образом с поправкой на то что у каждого проекта гораздо больше директорий, но при этом директории всех смежных разделов имеют строго одинаковую иерархию, поэтому даже если кому-то из не гипов понадобится залезть в папку к электрикам или вкшникам, то мы всегда найдем их расчеты, подбор оборудования, графическую часть и т.п.


shprot


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


v-david


. а в AutoCAD только блоки с итогами вычислений . а между ними просто инструмент позволяющий делать синхронизацию. После того как все расчеты сделаны в Excel, пользователь открывает чертеж AutoCAD, в программе Excel нажимает кнопку "Обновить данные".

.
Это уже интереснее. Можно мне, как неспецу в Автокаде , скинуть работающий простенький примерчик? Интересует передача из excel в autocad макросом, в части автокада - как чайнику. Если нет готового или это долго, то не надо. Ну или если я попросил что-то не то. Спасибо.


Roma



Расчеты все производятся в VBA, как и в экселе - тоже VBA. В твоих программах, Шпрот, ты почти не испльзуешь стандарные функции экселя, все через макросы. Так что разницы не вижу, Эксель это или Автокад, а экспорт в Эксель сделать не сложно, лишь чтобы распечатать, да раз в 10 лет а экспертизу занести.
Папочки с расчетами, оборудование, заданиями у меня тоже есть, но приятней было бы работать в оболочке, которая этим все управляет, создает копии проета, отправлет на облако и т.д.
Не будет засорять тему ибо пишем оффтопом.


Roma


Все это реализовано в моем макросе "Расстановка воздухообменов". В первой версии была попытка все сделать на табличке, сделаной ув. glam, ценителем гламо-тонкостей в экселе, да и во всем остальном


shprot


Это уже интереснее. Можно мне, как неспецу в Автокаде , скинуть работающий простенький примерчик? Интересует передача из excel в autocad макросом, в части автокада - как чайнику. Если нет готового или это долго, то не надо. Ну или если я попросил что-то не то. Спасибо.


Простого примера нет, и быть не может так как это VBA. Но это реализуемо, так в мой HeatBalance Pro, данные из программы Excel импортируются в блоки наружных ограждений (цвет, описание).

Расчеты все производятся в VBA, как и в экселе - тоже VBA. В твоих программах, Шпрот, ты почти не испльзуешь стандарные функции экселя, все через макросы. Так что разницы не вижу

Да функции я пишу свои, но не соглашусь. Если говорить конечно о простых программах, то да можно и без Excel. Но если речь о хороших программах, то есть ряд причин по которым без Excel не обойтись:
1. VBA AutoCAD x64 грешит "кривостью" что в принципе исключает работу этих программ на платформе x64 (при условии что в программе использованы именно те функции которые криво работают), я даже себе систему переустановливал х32 в место х64 только по этому.
2. В VBA AutoCAD нет диаграмм.
3. В VBA AutoCAD нет места где можно удобно и структурированно в файле dwg сохранить данные, а без этого не как, где то же должны хранится базы данных программы, настройки установок, и т.п.
4. И много чего еще. Связаного прежде всего с тем что Autodesk не является разработчиком VBA, а Microsoft является.


v-david


я работаю с VBA, но не применительно к автокаду, поэтому и попросил "в части автокада - как чайнику". Да ладно, сам справлюсь


Roma


1. VBA AutoCAD x64 грешит "кривостью" что в принципе исключает работу этих программ на платформе x64 (при условии что в программе использованы именно те функции которые криво работают), я даже себе систему переустановливал х32 в место х64 только по этому.

3. В VBA AutoCAD нет места где можно удобно и структурированно в файле dwg сохранить данные, а без этого не как, где то же должны хранится базы данных программы, настройки установок, и т.п.

А как же словари (Dictionary и xRecord), как же xData, где по твоему хранит данные MagiCAD?


shprot



Ну и слава Богу что не сталкивались. например совершенно не работают не модальные формы, что исключат работу по переходу от формы к моделе AutoCAD.


Да же не знаю стоит ли тогда разъяснять. любой монументальный нормальный расчет инженера проектировщика может потребовать диаграмм, график температур в наружных ограждениях, температурный график теплоносителей, временной график теплопоступлений, i-d диаграммы, расходно-напорные характеристики оборудования (насосы, вентиляторы, арматура и т.п.), перечислять и перечислять.

О этом можно говорить долго пока не будет сделана нормальная программа, в Excel все это гораздо более гибко и проще, те же фильтрации данных, сортировка данных, применение стандартных функций Excel к данным.


u77



Jon


revit -mep, кому нужен Бим-ОВ под ключ

вопрос конечно старый, но вдруг кому поможет.

для связи воздухообменов на планах с экселем надо
1. создать блок с набором атрибутов, например
номер помещения
приток
вытяжка
2. расставить блоки на плане. Заполнить номера помещений.
3. экспортировать значения блоков в текстовый файл командой attout из экспрес тулс
4. открыть этот файл в экселе. каждой строке присвоится номер блока. если при редактировании не потерять строку (её можно перемещать по файлу вверх вниз), то соответствие не потеряется
5. сохранить из экселя файл опять в ТХТ.
6. в автокаде запустить команду attin.

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

ВОт я как раз до этого дожил. проблема в том как из номеров экспликаций сделать блоки с атрибутами оптом? тогда их эти номера экспликаций можно оптом заменить на знач воздухообменов соответственно из таблицы воздухообменов..


ssn


проектировщик ТМ (фриланс)

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

База данных AutoCAD Electrical содержит в себе описания компонентов, необходимых для работы программы. Поскольку база данных всегда имеет определенную структуру, любое ее изменение требует от пользователя достаточных знаний и навыков.

В этой статье мы рассмотрим несколько типовых сценариев работы с базами данных AutoCAD Electrical, а также рассмотрим основную информацию об их структуре и назначении.

Как осуществляется работа с базами данных в AutoCAD Electrical

Что такое база данных AutoCAD Electrical

База данных AutoCAD Electrical – это не просто один файл с описанием компонентов, а связанная структура данных разных типов. Она состоит из непосредственно баз данных в формате MDB, в которых описаны все параметры компонентов, и определенного набора файлов, таких как каталог с графическими образами компонентов, каталог с файлами значков компонентов, каталог с 3D-моделями компонентов и пр.

Вставка компонента в AutoCAD Electrical подразумевает не только вставку блока, содержащего требуемый графический образ. При вставке система сначала обращается к базе данных, находит в ней все параметры компонента, а лишь затем вставляет его в чертеж.

Что такое база данных AutoCAD Electrical

Вместе с AutoCAD Electrical устанавливается стандартная база default_cat.mdb и несколько вспомогательных баз, таких как БД компоновочных образов footprint_lookup.mdb, БД УГО schematic_lookup.mdb и другие.

Каждая база данных имеет четкую структуру таблиц с определенных набором полей, которые подробно описаны в официальной справочной системе AutoCAD Electrical.

Работа с базами данных в AutoCAD Electrical

Рассмотрим три типовых сценария работы с базами данных в AutoCAD Electrical:

  • Корректировка и наполнение существующей базы.
  • Поиск и установка баз данных сторонних разработчиков.
  • Перенос баз данных из прежних версий.

Корректировка и наполнение существующей базы

Рано или поздно каждый пользователь сталкивается с необходимостью изменить или дополнить существующую базу AutoCAD Electrical.

Файл базы данных может быть общим или предназначаться для конкретного проекта. В первом случае файл базы данных имеет имя default_cat.mdb, во втором – _cat.mdb.

Структура таблиц баз данных четко определена разработчиками. Каждая база содержит обязательный набор таблиц, среди которых:

  • Таблицы каталогов (AM – амперметры и пр.).
  • Таблицы списка выводов (_PINLIST).
  • Таблицы свойств клеммы (_TERMPROPS).
  • Таблица базы данных проводников кабелей (_W0_CBLWIRES) и многие другие.

Корректировка и наполнение существующей базы

Корректировка и наполнение существующей базы

Корректировка и наполнение существующей базы

В этом же режиме можно:

  • добавить таблицу свойств клемм _TERMPROPS;
  • добавить новую запись в каталог;
  • добавить свойства выводов компонента.

Для удаления, переименования таблиц и редактирования имен столбцов необходимо использовать СУБД MS Access или ее аналог, поскольку у AutoCAD Electrical нет таких функций.

Поиск и установка баз данных сторонних разработчиков

Для AutoCAD Electrical существуют и базы данных от сторонних разработчиков. Такие базы создаются либо производителями электротехнической продукции, что позволяет им продвигать свою продукцию на рынок, либо компаниями-интеграторами, либо делаются под заказ. Базы могут быть платными и бесплатными.

В этой базесодержатся данные о всей продукции завода, включая технические характеристики, условные графические обозначения для схем, компоновочные образы и 3D-модели аппаратов.

Преимущество базы данных от КЭАЗ в том, что она скачивается единым архивом и устанавливается специальной программой. Пользователю не нужно настраивать базу, необходимо просто выбрать желаемые компоненты базы и указать путь для установки, после чего требуемые данные появятся в AutoCAD Electrical автоматически.

Поиск и установка баз данных сторонних разработчиков

Перенос базы данных из прежних версий

Перенос базы данных из прежних версий

Заключение

В этой статье мы рассмотрели структуру базы данных AutoCADElectrical и основные сценарии работы с ней. За подробным описанием таблиц и полей баз данных рекомендуем обратиться к официальной справочной системе программы.

Установка связи dxf файла с таблицей dbf в AuotCAD осуществляется с помощью Диспетчера подключения к БД (вызывается с помощью команды _dbConnect).

_bm4277

В диспетчере по правому клику мышки на Источник данных необходимо выбрать Настройка источника данных…

_bm4278

В появившимся окне необходимо указать имя источника данных (алиас).

_bm4279

_bm4280

В случае отсутствия данного драйвера необходимо его установить.

Далее выполнить действия на рисунках ниже.

_bm4281

_bm4282

_bm4283

_bm4284

В данном примере dsn файл сохранен в папке с dxf. Для того чтобы указать директорию, необходимо нажать кнопку Обзор .

Если все выполнено правильно, появится окно:

_bm4285

После нажатия на кнопку Готово , в следующем окне необходимо указать версию файла и директорию, в которой храниться dbf.

_bm4286

В этом окне просто нажимаем ОК , если dsn был сохранен в той же директории, где хранится созданный ранее dbf файл. Если нет, то необходимо снять галочку Использовать текущий каталог , нажать кнопку Выбор каталога и указать соответствующий каталог.

_bm4287

Таким образом, будет сформирован источник данных для примера - test1.

_bm4288

Необходимо выбрать созданный источник данных и нажать кнопку ОК.

_bm4289

_bm4290

Вернувшись в среду AutoCad, необходимо по правому клику мышки на созданном источнике данных выбрать пункт всплывающего меню Подключить.

_bm4291

Далее выбирать имя таблицы и нажать кнопку Редактировать таблицу

_bm4292

Перед редактированием необходимо убедиться, что таблица dbf не используется другим ПО.

Изображение

Всем доброго времени суток !
У меня возникла следующая проблема. Имеется чертёж с подложкой полученный с формата MID/MIF вместе с специальной нагрузкой. Информация об элементах специальной нагрузки хранится в базе данных с типом InterBase. Каким образом связать запись элемента этой базы данных с объектами в различных чертежах?

Подскажите пожалуйста.

1. autoCAD Map 3D
2. ODBC

Используя Map/Civil 3D загружаешь подложки с полями (хотябы key), подложку сохраняешь в sdf/shp, подключаешь. Потом устанавливаешь соединение через FDO=>ODBC, подключаешь таблицу. Потом объединяешь таблицы через key.

trir, благодарю за обширный ответ, но проблема в том, что сохранение подложки в формате sdf/shp возможно, но не допустимо. Мы не используем официальную ArcView или ArcMap для обработки данных подобного типа, и не имеем право выполнять обработку, анализ и поставку оконечным потребителям информации из-за отсутствия лицензии. Вариант с форматом ESRI отпадает.
База данных ODBC на мой взгляд это специальный тип баз данных который не требует установки дополнительных компонент и программ на компьютер. Такой вариант приемлем но тут возникает следующая проблема. Ввод информации производится централизовано в базу данных типа InterBase. Создания отдельных таблиц ODBC предусматривает дубляж информации с общей базы данных, которые заполняют операторы ежедневно и что в свою очередь, сулит неприятностями, связанными с тем, что в общую базу данных могут изменить, а в моей таблице копии ODBC останутся старые данные. У нас в подразделении имеется три рабочих места AutoDesk Map 2007 и каждый оператор работает с определённым сектором, например, я работаю с аэродромами гражданской авиации, мой коллега с аэродромами государственной авиации, а второй коллега с вертодромами и посадочными площадками. Вся информация об аэродромах и вертодромах, согласно спецификации ИКАО хранится в одной таблице, которую ведёт один оператор - девушка. По Вашему методу, кроме ведения общей базы данных наша оператор, должна ещё обновлять все три таблички на наших рабочих местах, при чём знать кому из нас, какие данные нужны. Такой путь влечёт за собой дополнительные трудозатраты и путаницу.
trir, можно ли организовать связь напрямую с общей базой данных разных рабочих мест минуя создания промежуточных данных ? Как связываться с централизованной базой данных через сеть я знаю. Не могу понять, как связать запись конкретной таблицы с объектом чертежа. Поле “Key” имеется во всех табличках базы и оно ключевое.

Читайте также: