AutoCAD: Связь с внешними данными
Часто пользователи хотят связать объекты чертежа с внешними данными – Таблицей Excel, базой данных или просто с текстовым или xml файлом. Конечно, в AutoCAD существует множество способов взаимодействия с внешними данными: _DataLink, dbConnect, attin, _script. Но все эти инструменты требуют «много кликов» и не обеспечивают нужного взаимодействия. Пользователю хочется, что бы объекты чертежа автоматически приводились в соответствие с внешними данными, с минимальным его участием. Образцовым примером подобного взаимодействия является FDO в AutoCAD Map 3D – когда после подключения к источнику мы сразу получаем его содержание в виде графики (и при желании даже с подписями) и для синхронизации с источником, достаточно выполнить обновление слоя (одна команда). Но это специальный (а значит ограниченный) ГИС инструмент, который подойдет не всем. И тогда остаётся лишь применить программирование, благо существует огромное количество способов это сделать – Lisp, C++, .Net, Delphi, Python и т. д.
Одним из способов, установить такую связь с источником данных – создать класс, который будет отвечать за связь с данными или просто агрегировать эти данные для импорта/экспорта. В данной статье я покажу пример подобного класса, который:
- Сам себя рисует (но не Custom object*)
- Имеет собственные данные и следит за их актуальностью
- Умеет импортировать/экспортировать себя в XML
В AutoCAD’е у программиста есть несколько инструментов для хранения собственных данных в чертеже, это – XData и XRecord. Но это весьма ограниченные инструменты и доступ к этим данным имеется только из AutoCAD. Поэтому мы будем использовать внешний источник данных, а связывать их с примитивами в чертеже, через Handle.
Наш объект будет рисовать круг, а также текстовую метку содержащую радиус этого круга, но данный метод позволяет создавать любые примитивы (на пример Solid3d или NurbSurface) – лишь бы у них был Handle. Нам понадобятся методы для отрисовки Объекта и Метки. Но самое главное нам понадобится метод для отслеживания изменения объекта, обработчик события, который мы повесим на событие Modified. Также нам понадобятся методы для обновления примитивов и экспорта в XML. Ну хватит, меньше слов — больше кода.
Не забыли подключить cmgd.dll, acdbmgd.dll, accoremgd.dll (AcAd >= 2013)?
Собственные данные объекта, да это свойства примитива, но это же пример.
Ссылки на примитивы чертежа.
Рисуем сам объект, а заодно запоминаем ссылку на примитив и главное — вешаем обработчик на изменение объекта.
Обрабатываем изменение объекта — получаем новые знаения свойств объекта, обнавляем Метку.
Рисуем Метку объекта.
Импорт/экспорт в XML.
Ну конечно, нам понадобятся команды в AutoCAD’е, для работы с нашим классом.
Как удалить связь с данными в autocad
Разрыв ТОЛЬКО ошибочных связей в excel
Добрый день форумчане! Нужна ваша помощь. Есть много файлов. В них есть ссылки-привязки связей на.
Чтение текста сразу из всех полей Edit сразу
Всем привет. У меня на форме есть 6 текстовых полей. Вот файл .h class TForm1 : public TForm <.
1. Select the table ->right-click -> Click Data Links -> Detach Data Link.
| VoVoRoNaLe |
| Посмотреть профиль |
| Найти ещё сообщения от VoVoRoNaLe |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| VoVoRoNaLe |
| Посмотреть профиль |
| Найти ещё сообщения от VoVoRoNaLe |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| У меня при удалении пропадает кнопна ОК. |
| VoVoRoNaLe |
| Посмотреть профиль |
| Найти ещё сообщения от VoVoRoNaLe |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| mr.beginner |
| Посмотреть профиль |
| Найти ещё сообщения от mr.beginner |
1. Select the table ->right-click -> Click Data Links -> Detach Data Link.
Как удалить связь с Exel?
1. Select the table ->right-click -> Click Data Links -> Detach Data Link.
А потом как на рисунках.
| VoVoRoNaLe |
| Посмотреть профиль |
| Найти ещё сообщения от VoVoRoNaLe |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
Сначала нужно удалять DataLink, а потом файл Excel
Edit DataLink -> Выбрать другой (существующий) файл -> Ок
и тогда как на рис.
| VoVoRoNaLe |
| Посмотреть профиль |
| Найти ещё сообщения от VoVoRoNaLe |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| У меня при удалении пропадает кнопна ОК. |
| VoVoRoNaLe |
| Посмотреть профиль |
| Найти ещё сообщения от VoVoRoNaLe |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| Sneginka_Clan |
| Посмотреть профиль |
| Найти ещё сообщения от Sneginka_Clan |
| mr.beginner |
| Посмотреть профиль |
| Найти ещё сообщения от mr.beginner |
1. Select the table ->right-click -> Click Data Links -> Detach Data Link.