среда, 1 августа 2012 г.

Связь таблиц AutoCAD и таблиц Excel

Добрый день!

Поговорим сегодня о таблицах в AutoCAD, а точнее о их связи с электронными таблицами Excel.


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

Рассмотрим основные моменты работы на примере создания перечня элементов.


 Задача: есть таблица с перечнем элементов, созданная в Excel


Необходимо импортировать эту таблицу в AutoCAD так, чтобы сохранилась двухсторонняя связь между ними.

Создание связи с данными и вставка таблицы



1. Запускаем в AutoCAD команду Таблица. В диалоговом окне выбираем пункт На основе связи с данными. В выпадающем списке еще нет никаких связей, мы создадим новую, выбрав соответствующий пункт меню или нажав кнопку рядом


2. В окне Выбор связи данных создаем новую связь с данными Excel


3. Присваиваем ей имя



4. Выбираем файл с перечнем элементов. Для многостраничных таблиц нужно указать необходимый лист с данными, выбрать опцию Связь со всем листом или с диапазоном. После введения всех данных будет доступен предварительный просмотр таблицы


5. Теперь в окне Выбор связи данных выбираем нашу созданную связь и вставляем таблицу в чертеж


    6. После создания связи с таблицей в правой части строк состояния появляется символ связи и в виде цепочки


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

    Использование двусторонней связи


    Вставленная в AutoCAD таблица заблокирована, о чем символизирует символ замка около курсора. В этом случае работает только прямая связь - из Excel в AutoCAD и в самом AutoCAD править таблицу нельзя.


    Чтобы изменить блокировку необходимо из контекстного меню таблицы выбрать меню Блокирование, где доступно четыре опции:
    • Разблокирование - снятие всех блокировок с таблицы (при этом связь с Excel сохраняется)
    • Содержимое заблокировано - блокировка содержимого таблицы, но не ее формата
    • Формат заблокирован - запрет изменения формата, но возможность редактирования данных таблицы
    • Содержимое и формат заблокированы - полная блокировка таблицы (этот параметр установлен по умолчанию для всех вновь созданных таблиц)


    Проще говоря, заблокировав содержимое мы сможем брать данные из любой таблицы Excel и оформлять ее в AutoCAD так, как нам нужно. При этом данные всегда будут актуальны. На нашем примере - перечень элементов создан путем экспорта в Excel из EDA-приложения, вставлен в AutoCAD с разблокированным форматированием и оформлен по ЕСКД средствами AutoCAD.

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


    Если разблокировать содержимое или формат таблицы, то можно ее править в самом AutoCAD и в любой момент передать изменения в исходный Excel-файл. В уже известном нам меню Связь с данными есть соответствующие команды:
    • Загрузить изменения из исходного файла
    • Выгрузить пользовательские изменения в исходный файл - позволяет выгрузить изменения таблицы, сделанные в AutoCAD в исходный Excel-файл (опять же, можно связать как содержимое, так и формат). ВАЖНО! Перед выгрузкой данных убедитесь, что файл с таблицей Excel закрыт!
    • Редактирования связи с данными - запускает окно изменений связи с Excel
    • Открыть файл связей с данными (не очень удачный перевод на русский язык) - открывает исходную таблицу Excel
    • Разорвать связь с данными - удаляет связь - таблицы становятся независимыми.

      Заключение:


      1. Любую таблицу Excel можно вставить в чертеж AutoCAD. При этом можно вставить как весь лист таблицы, так и его конкретную часть. Можно создать множество таблиц AutoCAD на основе одного файла Excel
      2. Вставленная таблица имеет двустороннюю связь с исходным Excel-файлом. Связь поддерживается на уровне данных и уровне форматов. Можно включать/отключать каждый тип связи для каждой таблицы - это дает огромные возможности для совместной работы проектировщиков, сметчиков, плановых служб и пр., когда все всегда пользуются актуальными данными
      3. Благодаря возможности блокировки/разблокировки связи формата можно брать за основу любую таблицу Excel и оформлять ее в AutoCAD стандартными средтвами
      4. При двусторонней связи всегда есть опасность одновременного внесения изменений, поэтому грамотная организация этого процесса очень важна
      5. Связь между таблицами можно разорвать.
      С другими приемами работы в AutoCAD можно ознакомиться на одноименной странице блога.

      С уважением, Андрей


      Если вы получили ответ на свой вопрос и хотите поддержать проект материально - внизу страницы для этого есть специальная форма.

      51 комментарий:

      1. Андрей, немного не основную тему. но как сохранить форматирование ячейки при удалении содержимого ячейки?
        Пользуюсь в автокаде только таблицами, даже доверяю им несложные расчеты, но вот удаление форматирования никак не поборю.

        ОтветитьУдалить
        Ответы
        1. Действительно, формат исчезает если удалить содержимое, даже если форматирование заблокировано. Даже не знал о такой особенности. Что могу пока сходу посоветовать - не удалять содержимое, а вставлять пробел. Тогда внешне и ячейка пустая и формат не слетает. Попробовал - получается. Но все же попробую найти правильное решение, если оно есть.

          Удалить
        2. подумал тут, что если в ячейку вбивать пробел, то если она участвует в расчетах, то будет error. В таком случае надо 0 вставлять. Перелопатил справку, пока про удаление форматирования ничего не нашел, похоже, что это баг в программе

          Удалить
        3. http://1.bp.blogspot.com/-9Qh_iy-IwOI/UBYAsmk2CII/AAAAAAAABLg/wLmZpciSJ_o/s320/005-0001.jpg

          в правом нижнем углу - указатель на развертывание... а дальше все понятно)

          Удалить
        4. Павел, согласен с Вами, но это относится к таблицам, импортированным из Excel. Пользователь gip.14.08 же спрашивает об обычных таблицах AutoCAD.

          Удалить
        5. Проблема исчезает, если форматирование ячейки настраивать не в самой таблице а Стилях таблиц. И далее стиль ячейки сменить с "по строке/столбцу" на тот стиль, который вы отредактировали как полагается. Более подробную информацию см. мой ответ на вопрос Вероники Кузнецовой ниже. Корень ее проблемы такой же))))

          Удалить
      2. Да, приходилось вставлять ноль и назначать его цвет под цвет фона, что бы ячейка казалась пустой.
        Я с похожим вопросом обращался к разработчикам еще при 2010 автокаде. Но, за давностью лет, не помню точно, что они ответили. Что-то типа: " мы над этим работаем ".
        Для меня было бы удобно, если бы при удалении содержимого ячейки или группы ячеек, форматирование оставалось при нажатых клавишах Del+(Ctrl или Alt).

        ОтветитьУдалить
        Ответы
        1. Да, похоже ничего не поменялось с тех пор :( Тем не менее проблема меня заинтересовала, поищу еще решение

          Удалить
        2. Андрей, добрый день.
          Удалось найти решение?

          Удалить
      3. Здравствуйте, Андрей! Подскажите, пожалуйста, как сделать так, что бы AutoCad чертил по данным таблицы, вставленной из Excel?

        ОтветитьУдалить
        Ответы
        1. Боюсь стандартными средствами AutoCAD это невозможно. Можно написать программу на Lisp, которая будет считывать данные из таблиц и что-то по ним строить

          Удалить
        2. Спасибо, Андрей. Не подскажите, где можно подробнее почитать о Lisp?

          Удалить
        3. Самый лучший способ изучить LISP - это прочитать эту книгу "САПР на базе AutoCAD: как это делается" (С.А.Зуев, Н.Н.Полещук, при участии П.Лоскутова). В интернете куча сайтов, но качество контролировать невозможно.

          Удалить
        4. Вера, не за что! Главное, чтобы во благо.

          Удалить
      4. Добрый день, Андрей.
        подскажите, как сохранить форматирование таблицы в автокаде, при обновлении данных из экселя? напрочь сбивается все оформление по ЕСКД

        ОтветитьУдалить
        Ответы
        1. Вероника, к сожалению, сейчас нет такой возможности. Форматирование "слетает" при любых настройках и условиях. В 2014 версии та же история.

          Удалить
        2. очень жаль, а то было бы идеально))

          Удалить
        3. Проблема решается следующим образом. В меню редактирования ячейки (не содержимого ячейки, а самой) есть такое свойство - стили ячеек. Там всегда по умолчанию стоит "по строке/столбцу". Это типа по умолчанию, потому при обновлении с экселя автокад возвращает это форматирование (оно было при вставке связи). Чтобы избежать этого для каждой ячейки надо задать свой стиль (например, выбрать из 3-х преложенных: Данные, Заголовок, Название). Но чтобы выбранный вами стиль соответствовал ЕСКД, сначала его необходимо отредактировать (настроить размер текста, его стиль, выравнивание) в меню Стили Таблиц. Далее присвоить таблице отредактированный стиль и в соответственном меню выбрать необходимый стиль ячеек.
          P.S. Всегда для своих целей создавайте новые стили (таблиц, текста, мультивыноски, размеров) а не редактируйте стиль "Standart". Иначе при открытии на других компьютерах, автокад будет использовать не ваши настройки этого стиля, а настройки по умолчанию, и все ваши труды на смарку - получится каша)))

          Удалить
        4. Алексей, Андрей, подскажите пожалуйста:
          а если мне нужно, чтоб один столбец данных имел выравнивание по центру,
          другой- влево? Если я использую стиль данные, он будет один для всех столбцов.
          Спасибо заранее.

          Удалить
        5. Стиль применяется для всех столбцов одновременно

          Удалить
      5. при экспорте таблицы из автокад 2013(пользуюсь встроенными таблицами с ячейками и т.д. аналого экселя) вместо диаметра в экселе перед числом %%C, тоже самое с градусами и степенями, это возможно как то пофиксить? я в принципе пишу дм, град, и м.кв. но хотелось бы именно символы если это возможно =)
        Заранее спасибо

        ОтветитьУдалить
        Ответы
        1. Добрый день! Символы экспортируются так как Вы описали, т.к. это внутренние коды AutoCAD и Excel их естественно не понимает. Побороть нельзя, к сожалению. Используйте символы из шрифтов TTF, тогда все отлично передается

          Удалить
      6. Здравствуйте, Андрей. Столкнулся с такой проблемой: необходимо разорвать связь с таблицей Exel в AutoCAD. Версия AutoCAD - 2012. Функция "Связь с данными" не активна. Раньше стояла версия 2010, такой проблемы не было.

        ОтветитьУдалить
        Ответы
        1. Попробуйте установить обновления SP1 и SP2 для AutoCAD - 2012

          Удалить
        2. http://usa.autodesk.com/adsk/servlet/ps/dl/index?siteID=123112&id=2334435&linkID=9240618

          Удалить
      7. Добрый день, Андрей! Спасибо за Ваш блог!
        Требуется настройка в Autocad, которая бы позволяла обновлять связи автоматически (при открытии/закрытии файла, например).
        Каждый раз обновлять связи вручную напрягает.
        Поможете?

        ОтветитьУдалить
        Ответы
        1. Сделать автообновление при старте легко. Добавьте в файл acad.lsp строку (command ".СВЯЗЬОБНОВИТЬ" "О" "В" ""). Не забудьте включить выполнение acad.lsp при старте системы

          Удалить
      8. Анонимный12 июля 2014 г., 0:09

        Привіт Андрій. Потрібно вирішити таку проблему: потрібно звязати колір заливки елемента (квадрата наприклад)&із текстом з таблиці(текст1/код кольору)

        ОтветитьУдалить
      9. Доброго времени суток. Столкнулся с такойф проблемой. При связи данных из икселя таблица созданная в автокаде меняет свои размеры. Подскажите как сделать так чтобы вставлялось только содержимое ячеек без изменения высоты и ширины ячеек?

        ОтветитьУдалить
        Ответы
        1. Создавай стиль таблицы,стиль ячеек и настраивай стиль текста для стиля ячейки. Соответственно их будет несколько взависимости от назначения. Можешь поиграть с настройками "отступ по горизонтали" отступ по вертикали" задача подогнать текст который будет импортирован под нужный размер. Когда подгонишь после обновления всё будет на своих местах. Я сделал с помощью связи икселя и акада перечни КД оформленные по ЕСКД разумеется.
          Данные ячеек заблокировал.В диспетчере связей данных должны стоять параметры "Преобразовать форматы данных в текст, вычислить формулы в EXCEL" и "Разрешить запись в исходный файл".Открываются эти параметры под стрелкой в нижнем углу диспетчера связей данных.

          С уважением, Лужнов Алексей.

          Удалить
      10. Андрей Спасибо за статью.
        У меня вопрос чисто по акадовским таблицам. Можно ли в таблице удалить одну (две ,три и т.д) ячейку без сдвига. не строку или столбец целиком, а именно одну ячейку. Ну или в крайнем случае сделать ее неактивной. Поясню в чем суть вопроса: у меня есть таблица, поверх одной ячейки которой нарисована схема, а в боковых столбцах и в нижних строках - пояснения. Так вот при попытке выделения чего-то на схеме с помощью левой или правой рамки - выделяется ячейка ,что мешает. Заранее спасибо.

        ОтветитьУдалить
        Ответы
        1. К сожалению, такой возможности нет. Можно попробовать сделать таблицу из нескольких, но это совсем дурное решение.

          Удалить
        2. Андрей Спасибо за статью!
          Подскажите, почему при создании или изменении связи Автокад зависает минут на 5?
          Вес файла Эксель- около 2,5 мб

          Удалить
        3. Зависает только с этим файлом или все файлы так себя ведут? Какая версия AutoCAD?

          Удалить
        4. Этот комментарий был удален автором.

          Удалить
        5. Этот комментарий был удален автором.

          Удалить
      11. Добрый день, Андрей!
        Подскажите, пожалуйста по еще одному вопросу!

        Использую в работе связь Автокад/эксель при создании спецификации и перечней элементов (СПДС).

        Столкнулся с таким неудобством: при обновлении связи, если в Автокаде текст не влезает в одну строку, ячейка растягивается на две строки. Но, если в экселе ячейки сдвигаются, и не влезает уже другая, то прежняя уже обратно не сжимается. Приходится вручную проходить всю таблицу и править высоту.

        Есть ли способ зафиксировать высоту ячейки, или как-то другим образом обойти эту проблему?
        Спасибо заранее

        ОтветитьУдалить
      12. Здравствуйте! Хотелось бы получить совет! За ранее буду благодарен: - в общем проблема у меня такая . - Рисую я мебель в автокаде... А деталировки потом вбиваю в ручную в екселе - как можно экспортировать сразу размеры ? Точно знаю возможность есть - где то видел... Спасибо!

        ОтветитьУдалить
        Ответы
        1. Добрый день! Откуда и что экспортировать?
          В любом случае, вам сюда http://mikhailov-andrey-s.blogspot.ru/2015/11/autocad-izvlechenie-dannyh-v-excel.html и смотреть в сторону инструмента Извлечение данных.

          Удалить
        2. Я извиняюсь за то что не пояснил! В общем рисую я мебель в автокаде - а размеры потом вбиваю в ручную в экселе - то есть открываю на одном мониторе и ексель и автокад - кликаю на деталь - смотрю размеры и потом их вписываю... долго, еще и ошибки иногда бывают. Во избежание этого - хотелось бы после проектировки как то размеры скопировать из автокада и вставить в ексель? Надеюсь внятней обяснил мою проблему! Спасибо за ссылку - надеюсь поможет!

          Удалить
      13. при экспорте в пдф, таблица никак не отображается...

        ОтветитьУдалить
        Ответы
        1. Какая версия AutoCAD? Какая ОС? Как экспортируете? Что за таблица, с каким стилем, на каком слое?

          Удалить
      14. Здравствуйте! Скажите, а можно ли создать связь данных для таблицы свойств в динамическом блоке? То есть, есть таблица (вообще она в dwg-файле, но, допустим, я перенесу её в Excel), есть динамический блок, можно ли, создав там таблицу свойств, импортировать в неё данные из внешней таблицы (хотя бы просто перенести без связи, чтобы вручную не вбивать). Версия Autocad 2015

        ОтветитьУдалить
      15. Спасибо за статью, долго мучился с переносом из автокада обратно в ексель.Получилось,только исходный файл ексель должен быть закрыт на момент выгрузки в исходный файл.Это только у меня,или как?

        ОтветитьУдалить
        Ответы
        1. Александр, это у всех так. Таков принцип работы операционной системы - если файл занят одним приложением, то другое приложение имеет к нему доступ только на чтение, в лучшем случае. поэтому для обновления и нужно закрывать файл с таблицей.

          Удалить
        2. Понял, в статье не было, про закрытый файл эксель.
          Ваше описание принял как основу по созданию таблиц и связей.В автокад 2017 еще проще стало работать с таблицей, чем в 2014.
          Спасибо Вам.

          Удалить
        3. Спасибо, добавил пункт про необходимость закрывать файл Excel.

          Удалить
        4. Как такой вариант переноса табл. Exel в Autucad:
          1. создаем таб. в Autucad
          2. делаем связь (см. https://mikhailov-andrey-s.blogspot.com/2012/08/autocad-excel.html)
          3. взрываем (команда "РАСЧЛЕНИТЬ") таб.
          4. собираем таб. (команда "ВТАБЛИЦУ", см. так же в ленте СПДС)
          5. получается таб. Autocad -> "Вуаля!"
          примечание: необходимо установить Autodesk СПДС модуль (бесплатный)(http://www.autodesk.ru/products/spds/overview)

          Удалить
      16. "Как такой вариант переноса табл. Exel в Autucad:
        1. создаем таб. в Autucad"
        Я дальше даже не читал, ибо создать таблицу в 10-15 или больше колонок в автокад долго, проще в эхсель , а затем просто создать таблицу в автокад на основании связи с фалом эксель...

        ОтветитьУдалить