Управление автокад из эксель

Обновлено: 07.07.2024

Для наглядности продемонстрирую как все это работает на реальном проекте.

Примеры использования

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

Первые шаги

И наконец в следующем видео я пошагово объясняю порядок работы, надеюсь, достаточно доступно. Так же я выпустил платную, боле быструю версию программы с расширенным функционалом
CAD_EX+

27 комментариев:

День добрый. Отличный инструмент.
В начале третьего видео говорится о привязке автокада к экселу через визуалбейсик. Но в рассмотренном примере, автокад 2017 уже есть в списке по умолчанию, и в обычном экселе данная галочка стоит по умолчанию. А как привязать макрос к нестандартному автокаду, которого нет в списке ссылок? Это как-то можно сделать через указание библиотеки вручную, но какой файл для этого необходимо выбрать? (AutoCAD Electrical 2019 вер. 16.0.49.0)

Здравствуйте!
Вам необходимо снять галочку с 17 версии Автокада, ещё раз внимательно просмотреть в Reference все доступные программы (в видео это показано) должно быть что-то вроде AutoCAD 2019 type library и поставьте на него галочку

Доброго времени суток! А можно ли с помощью Вашей утилиты сделать так, что бы, меняя значение в ексель, менялся размер блока? Заранее спасибо

Здравствуйте!
Да, можно. В доступной для скачивания версии CAD_EX есть возможность управления одним параметром, если запараметризиравать размеры блока в Lookup параметре, вы сможете менять размеры блока. В новой версии макроса будет возможность обработки неограниченного количества параметров.

Добрый день, никак не могу запустить. Помогите разобраться. type library подключил.
Автокад запущен нужный файл открыт
При попытке запустить "SELECT_ON_SCREEN" выходит "ошибка out of memory" на строке

If acadApp Is Nothing Then
Set acadApp = New AcadApplication
>>вот здесь стоп>> acadApp.Visible = True
End If

я так понял что перед этим не прошел проверку на открыт автокад или нет.

В чем может быть причина?

Не работает только эта функция?
У вас один Автокад установлен?

Не работают все функции, остановка по скрипту в аналогичных местах. Установлен параллельно BrycsСad 19 (Autocad 18). Проверил на другой машине - аналогичная ситуация, но там стоят Autocad 2019 LT и Нанокад (бесплатная версия).

Добрый день) у вас в видео обновление данных довольно оперативно проходит. Я Попробовал прогнать на 100 блоков обновление данных - у меня очень долго обновляется информация. Можно ли как-то ускорить это процесс, или я где-то поменять настройки?

Добрый день!
Все зависит от количества атрибутов в блоке, чем их больше, тем соответсвенно дольше происходит обновление

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

Можно ли каким-нибудь образом обновить связь в самой таблице? Удалять и создавать новую я не могу, т.к. таблице в каде привязано много полей.

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

Последний раз редактировалось Yur.OK_SPb, 30.07.2011 в 16:07 .
Если я перемещаю таблицу Excel в другое место, связь нарушается.
Правильно, если пути назначались абсолютные, то так и будет. Чтобы пути не терялись нужно при создании линка задавать относительные пути и за пределы корневого каталога не перемещаться.
Снова настраиваю связь с уже перемещенной таблицей, .
Можно ли каким-нибудь образом обновить связь в самой таблице?
. вообще можно, но в данном случае никому не известно что у вас там.
Выложите пример, расскажите подробнее что вы хотите получить в итоге? какова задача? . вообще можно, но в данном случае никому не известно что у вас там.
Выложите пример, расскажите подробнее что вы хотите получить в итоге? какова задача?

Вот пример. Объясняю.
На чертеже имеется 3 таблицы.
Левая связана с листом "выемка" в документе "123.xlsx". При помощи полей вынесены отметки из этой таблицы в виде "проект/факт" для левой, осевой и правой точек.
Средняя таблица - это полная копия левой таблицы с полями-отметками. Соответственно она тоже связана с листом "выемка" в документе "123.xlsx"
Правая таблица - это лист "насыпь" из документа "123.xlsx". Нужно к нему быстро привязать поля, как и в первой таблице, но в ручную это делать очень муторно (т.е. выбирать поле, формула, ячейка для каждой из ячеек таблицы). Поэтому я и хочу у средней таблицы изменить связь с выемки на насыпь, и поля у средней таблицы сами поменяться.

Мне нужно выносить отметки с 20-40 поперечников автомобильной дороги на её плановое положение. При этом отметки есть в табличном виде, как в примере. После проведенных операций мне будет достаточно перетянуть поле "проект/факт" на нужное место на чертеже, а не вручную забивать все эти числа. Надеюсь, что понятно объяснил.

P.S. Я на данный момент нашел только один способ изменить связь у таблицы:
применительно к моему примеру - нужно зайти в среднюю таблицу, выделить ячейку А1, зайти в свойства таблицы, закладка "ячейка", и в самой нижней строке в пункте "связь с данными ячейками" можно изменить связь с "выемка" на "насыпь". При этом данные выемки отодвинутся ниже и правее, станут несвязными (нужно удалять лишние строки и столбцы). Но нужные ячейки будут ссылаться на "насыпь", поля работают исправно.

Последний раз редактировалось Yur.OK_SPb, 30.07.2011 в 20:09 .

Вот теперь понятно, т.е.:
1. Автоматически вставлять в чертёж данные из excel в виде отдельных полей
2. Автоматически менять источник этим полям

Готовых автоматических способов не нашёл, скорее всего их просто нет.
Однако можно попробовать сделать это полуавтоматически, связав поле с ячейкой Excel напрямую, без манипуляций с DWG таблицей, указав в качестве источника Базу данных AD. В этом случае смена источника (ячейки) происходит в 2-3 клика.
Во-вторых, источники полям одновременно можно поменять если они сгруппированы как-то, например в таблицу, а россыпью никак!
Если поля будут располагаться как в примере, то тогда почему бы их не сделать в виде таблицы?
Тогда но проблем!) )

На запрос таблицы укажите ту таблицу значения которой необходимо получить в полях, на запрос объектов выберите поля.Вызов (test) в комстроку со скобками.

Вот теперь понятно, т.е.:
1. Автоматически вставлять в чертёж данные из excel в виде отдельных полей
2. Автоматически менять источник этим полям

Готовых автоматических способов не нашёл, скорее всего их просто нет.
Однако можно попробовать сделать это полуавтоматически, связав поле с ячейкой Excel напрямую, без манипуляций с DWG таблицей, указав в качестве источника Базу данных AD. В этом случае смена источника (ячейки) происходит в 2-3 клика.
Во-вторых, источники полям одновременно можно поменять если они сгруппированы как-то, например в таблицу, а россыпью никак!
Если поля будут располагаться как в примере, то тогда почему бы их не сделать в виде таблицы?
Тогда но проблем!) )

А можете что-нибудь в качестве примера набросать? Мне не совсем понятно, как поля связывать с таблицами Эксель напрямую.

Блииин, создал я 210 полей, которые ссылаются на ячейки таблицы размером 6*35, их копирование и изменение связи на другую таблицу приводит к зависанию автокада. Что делать? Что служит тормозящим фактором? Если просто создавать таблицу - то все довольно быстро. Но вот изменение связи фатально.
Может ли это быть от того, что файлы лежат в сети? Какие пункты выбирать при создании связи в пунктах "содержимое ячеек и форматирование ячеек"?

Я инженер-проектировщик ОВиК, не программист. И не хочу, да и некогда, вникать в серьезное программирование. Чаще всего появляется ситуация, что нужно как-то автоматизировать рутину здесь и сейчас. На помощь приходит простой язык VBA.

Далее я покажу, как можно без особых забот сделать самому то, за что серьезные ребята берут не плохие денежки. А именно перенос данных из Excel в AutoCAD и обратно. Заинтересованных прошу под кат.

Программировать будем на стороне Excel — мне так проще. Для подключения нужно войти в режим разработчика: Alt+F8 Либо можно открыть вкладку «разработчик» из настроек ленты.

В окне разработчика VBA входим в верхнее меню: Tools/References. В этом окне нужно поставить галочку на вашей версии AutoCAD


В моем случае это AutoCAD 2014 Type Library. Далее нужно в левом окне создать в вашей книге модуль, как на скриншоте (Module)


И в модуль вставляем нижеприведенный код:


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


Код обновления текста по хэндлу — написан ниже: 'получаем хэндл из ячейки, в которую мы записали кодом выше.

entHandle = ActiveCell.Offset(0, 3).Value 'получили наш блок по хэндлу
Set blockObj = acadDoc.HandleToObject(entHandle)

А дальше делаем всё то же самое, что и выше.

Для того, чтобы немного разъяснить как это работает вживую — записал видео:

Как видите, кода минимум, однако на больших объектах мне экономит по несколько часов работы. И снижается риск ошибки. Т.к. обычно это выглядит следующим образом у проектировщиков — открываются два окна на разных экранах, и или вручную, или через буфер обмена начинается заполнение выносок или блоков на чертеже.

Опять же чем хорош VBA — что он всегда под рукой :) Excel-то основной инструмент у инженера.

alt

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

Связь Эксель с Автокадом

Для импорта данных из Excel в AutoCAD нужно правильно связать данные с нужным файлом. Будет происходить обновление данных, если они будут меняться. См. видеоурок "Связь данных таблиц Excel и Автокад". Воспользуйтесь командой «Связь с данными», которая расположена на вкладке «Вставка», панель «Связывание и извлечение».

Автокад (спецификация) связь с Эксель

Вставку таблицы Еxcel в Аutocad можно совершить непосредственно при создании таблицы. Для этого нужно на вкладке «Аннотации» выбрать команду «Таблица» и в диалоговом окне «Вставка таблицы» указать параметры вставки данного объекта «На основе связи с данными» (см. рис.).

Спецификация из Эксель в Автокад

Какой бы способ ни был выбран для импорта из Экселя в Автокад, откроется диалоговое окно «Диспетчер связей данных», в котором нужно указать «Создать новую связь с данными Excel» (см. рис).

Таблица Эксель в Автокад. Диспетчер связей данных

После этого обязательно введите имя данной связи. Старайтесь указывать название, отражающее суть.

Вставка Excel в AutoCAD. Ввод имени связи

Следующий шаг переноса таблицы из Еxcel в Аutocad – выбрать внешний файл, связь с которым вы хотите установить. Предусмотрена возможность связывать отдельный Лист Excel или же нужный диапазон при экспорте таблицы Excel в Autocad, путем указания ячеек (см. рис).

Связь Автокад с Эксель. Выбор внешнего файла

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

Эксель → Автокад: иерархический список связей

Создание таблицы AutoCAD на основе существующей связи

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

Импорт Excel в AutoCAD (результат)

Изменение связи таблиц Автокад с Excel

Экспорт из Экселя в Автокад путем установления связи позволяет обновлять данные в таблицах при внесении изменений. Т.к. этот объект представляет собой гиперссылку.

Команда «Загрузить из источника» обновляет связанные данные в таблице в текущем чертеже с учетом внесенных корректировок во внешнем файле, то есть из Excel в Аutocad. С помощью команды «Выгрузить в исходный файл» происходит обновление данных в файле Excel в результате изменения табличных значений в файле Автокада.

Если вы подкорректируете таблицу в одном из файлов, всегда можно обновить данные с помощью Загрузки/Выгрузки информации (см. рис.).

AutoCAD - связи таблиц. Загрузка/Выгрузка информации

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

Изучите наши базовые курсы из раздела "Autocad для чайников", которые можно найти на этом сайте (бесплатно для подписчиков)!

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