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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.

Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.

Ответ
Поиск в этой теме
Непрочитано 15.10.2014, 10:16 #1
Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.
Дианка
 
Регистрация: 14.10.2014
Сообщений: 29

Добрый день,в общем-то я не программирую на лиспе,я чайник чайниковый,немножко VBA (MS-ft), но при возможности накопаю,накопирую,как говорится.Просто хочется понять возможно ли это,если нет,буду искать другие пути решения,а задача -вот такая:


В dwg файл,по кнопочкам вставляется блок - после pick folder-a на сервере, нужного проекта.В тоже время в той папке(нужногопроекта) лежит mdb с данными и файлик-блок с атрибутами типа field вытащенные из того же мдб., после вставки того проектного блока, последовательно предложить вставку списка фамилий(дин.блочки с lookup уже готовы) .И (перед сном опять же) вспомнилось,что при необходимости надо добавить возможность изменить данные, ну к примеру типовое решение,и просто нажать кнопочку"изменить исходные данные", выходит диалоговое окно с выбором другой папки на сервере и соответственно других данных,ну или просто если человек ошибся с "тыком" папки, данные в mdb меняются часто,и посему думается про поля...что бы была синхронизация какая-то.

Я не знаю, понятно ли объяснила, буду очень рада прочитать Ваше вИдение решения данной задачи,может я вообще не в ту степь "копаю".
сейчас у нас типо тхт файлика данных по проекту,из которого тянутся данные для ворда, и для двг один файлик который тянем Xref-om остальное делается вручную..
считывать данные с тхт(который для ворда) -думаю дико геморрно,хочу всё привести к одному источнику данных,скорее всего к mdb

п.с. просьба как можно более упроситить "язык ответа" , я же - чайник.
Просмотров: 14566
 
Непрочитано 15.10.2014, 10:24
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


1. dbConnect позволяет привязать БД к dwg без всякого программирования
2. ADO=>VBA=>AutoCAD легко, но вот со синхронизацией придётся подумать...
trir вне форума  
 
Автор темы   Непрочитано 15.10.2014, 10:37
#3
Дианка


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


Цитата:
Сообщение от trir Посмотреть сообщение
1. dbConnect позволяет привязать БД к dwg без всякого программирования
так это ведь единичная привязка...причем таскать эту лабуду с собой постоянно )



Цитата:
Сообщение от trir Посмотреть сообщение
2. ADO=>VBA=>AutoCAD легко, но вот со синхронизацией придётся подумать...
-через адо ,я как раз в ворде делаю. Но синхронизация(т.е. повторное считывание) происходит при запуске "редактирования".,Т.е. необходимо знать,что там(наверху) что-то изменилось, и сходить нажать в доке "редактировать->обновить данные". а в Автокаде может можно что-то типо в авторан запихнуть какую-то хитрую процедуру %) не знаю.Ну вот как к примеру xref работает,при запуске релоудит все ссылки...

а еще вспомнилось, при Bind эта информация вообще не улетит куда-то ? в смысле превратится в какие-нибудь ##### ? А то часто,оч часто приходится внедрять всё притянутое ...
Дианка вне форума  
 
Непрочитано 15.10.2014, 11:31
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Рассматривали такие варианты?:
1. Подшивки и поля
2. Команды AttIn и AttOut
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 15.10.2014, 12:57
#5
Дианка


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Рассматривали такие варианты?:
1. Подшивки и поля
2. Команды AttIn и AttOut

подшивки...это что для листов что ли? поля-я как раз и спрашиваю как туда запихать инфу с БД,и чтоб возможность обновления была.


а про аттин аттаут -опять возврат к txt, а там проблемы с перекодировкой и т.п.
Дианка вне форума  
 
Непрочитано 15.10.2014, 13:11
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Пошивками как то проще...
trir вне форума  
 
Автор темы   Непрочитано 15.10.2014, 13:26
#7
Дианка


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


насколько я понимаю,каждый раз надо редактировать атриббуты подшивки, причем каждого шаблона что ли, один геморр на другой )
Дианка вне форума  
 
Непрочитано 15.10.2014, 13:27
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Дианка Посмотреть сообщение
Просто хочется понять возможно ли это
Не устану повторять - возможно все, практически любые фантазии. Вопрос лишь в наличии желания, знаний и времени.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 15.10.2014, 13:32
#9
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Offtop:
Цитата:
Сообщение от Do$ Посмотреть сообщение
Вопрос лишь в наличии желания, знаний и времени.
... и способности желающего определить свои желания доходчиво и однозначно
skkkk вне форума  
 
Автор темы   Непрочитано 15.10.2014, 15:00
#10
Дианка


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Не устану повторять - возможно все, практически любые фантазии. Вопрос лишь в наличии желания, знаний и времени.
времени - не вчера,а месяц, полтора. главное определиться с методом более оптимальным -на будущее так скажем,а не на сейчас .Насчет знаний,опять таки я в вопросе изложила,скорее он звучит так "как бы сделали Вы?" - а уже более уточнённо,я могу в интернете почитать.Насчет желания, как и у обычного человека нет желания лопатить сейчас все азбуки от А до Я . Проще почитать советы, пути,и уже копать конкретно в этих направлениях.

Цитата:
Сообщение от skkk
.. и способности желающего определить свои желания доходчиво и однозначно
мне,Кажется,я более или менее доходчиво объяснила суть задачи %) или мне так кажется?
если на пальцах то ->ткнуть в кнопочку,получить штампик с данными проекта,который будут обновляться исходя из изменяемых данных проекта, которые на сервере в файлике(скорее mdb) правит администратор проекта.
Дианка вне форума  
 
Непрочитано 15.10.2014, 15:05
#11
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
ткнуть в кнопочку,получить штампик с данными проекта,который будут обновляться исходя из изменяемых данных проекта, которые на сервере в файлике
Подшивки
trir вне форума  
 
Автор темы   Непрочитано 15.10.2014, 15:13
#12
Дианка


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


Цитата:
Сообщение от trir Посмотреть сообщение
Подшивки
но ведь подшивка строится на изменении атрибутики,т.е. админ должен зайти в файлик подшивки и в атрибутах менять данные?
а всё же вопрос остается вопросом,нужно одно хранилище для вордовских доков и двг (инфа то одна,зачем ее дублировать в ткст для ворда,и в подшивке двг) ?
ответьте на первый вопрос ))) и тогда в случае отрицательного ответа,я отстану на время вкопки в тему подшивок
Дианка вне форума  
 
Непрочитано 15.10.2014, 15:21
#13
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


1. Поля подшивок хорошо синхронизируются в АкАд'е
2. Свойства файла можно использовать в АкАд'е и Word'е
3. Можно завести БД, которая сможет автоматически синхронизироваться со
а) свойства файла
б) поля подшивки (через COM+AutoCAD или напрямую (хотя для этого придётся голову поломать))
trir вне форума  
 
Непрочитано 15.10.2014, 15:34
#14
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Может тогда обратить внимание на какую-то готовую систему электронного документооборота? В них вроде все это есть. Карточка проекта, из которой берется атрибутика в документы...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 15.10.2014, 16:40
#15
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
ткнуть в кнопочку
Чтобы "ткнуть кнопочку" надо эту кнопочку сделать, а к ней привязать свою программу, а эту программу написать. Вас штатные средства, которые предлагают, не устраивают. Соглашусь, что dbConnect это ерунда - просто "демо" принципиальных возможностей. Вот и пишите свою программу, которая будет делать что Вам надо и как надо.

Если есть некий MDB-файл, то доступ к нему можно получить через ADO, в том числе из Lisp. Только надо иметь соответствующую библиотеку функций. Отправив через ADO SQL-запрос к файлу (с каким-то условием отбора записей), получаете результат (набор данных) в виде LISP-списка. Теперь можете делать с ним что угодно - хоть атрибуты обновлять, хоть поля.

Это общая схема. Но "дьявол кроется в деталях". Надо продумывать и программно реализовывать, где и как хранятся данные для формирования условия запроса, как они туда попадают, и т.п. и т.д.

На прямой вопрос
Цитата:
хочется понять возможно ли это
прямо отвечаю - да, это возможно. А как это сделать - придется самостоятельно разрабатывать. А
Цитата:
накопаю,накопирую
- это наивно. На форуме же можно получать ответы на конкретные короткие вопросы, типа "А где взять библиотеку для работы с ADO из Lisp". А решить задачу для "накопирую" - это в Поиск исполнителей.
ShaggyDoc вне форума  
 
Непрочитано 15.10.2014, 16:51
#16
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Дианка Посмотреть сообщение
мне,Кажется,я более или менее доходчиво объяснила суть задачи %) или мне так кажется?
Очень уверяю, так кажется.
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"дьявол кроется в деталях"
Они отнимают до 99% от всего времени разработки программы.

----- добавлено через ~26 мин. -----
На самом деле, сам давно маюсь в желании начать разработку подобного инструмента, но ввиду ограниченности времени никак не решусь. Понимаю, однако, что все там непросто и нужно хорошенько все продумать. И легких путей там нет.
Если я правильно понял потребности, то нужно создать некое хранилище данных для каждого проекта (в основном, числовых и текстовых) и инструмент, который при обновлении этих данных обновит их в полях по всему чертежу dwg да еще и в Word. Так?
Можно еще рассмотреть такой вариант, который у нас пока и используется. Несколько корявый и даже, наверное, дилетантский, но тем не менее. В Автокаде создается связь с данными таблицы Excel, которая является базой данных, не самой надежной, но зато понятной большинству пользователей, даже старой закалки, у которых слова "База данных" вызывают головокружение и острое сопротивление. Далее программой отсюда создаются поля, вставляются куда нужно на чертеже. При обновлении данных в файле Excel нужно обновить связи с данными (об этом сообщит всплывающее окошко в правом нижнем углу окна Автокада), а затем и обновить поля второй командой из программы по ссылке.
skkkk вне форума  
 
Автор темы   Непрочитано 16.10.2014, 12:43
#17
Дианка


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Может тогда обратить внимание на какую-то готовую систему электронного документооборота? В них вроде все это есть. Карточка проекта, из которой берется атрибутика в документы...
куплена,но до этой части дойдет нескоро ) еще наверное миниммум год-1,5.

----- добавлено через ~8 мин. -----
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Чтобы "ткнуть кнопочку" надо эту кнопочку сделать, а к ней привязать свою программу, а эту программу написать.
-а ведь я вообще этого не отрицала ни одним словом ,я просила помощи от лисперов в одном вопрос-возможно ли,перспективно ли связь с мдб?


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Если есть некий MDB-файл, то доступ к нему можно получить через ADO, в том числе из Lisp. Только надо иметь соответствующую библиотеку функций. Отправив через ADO SQL-запрос к файлу (с каким-то условием отбора записей), получаете результат (набор данных) в виде LISP-списка. Теперь можете делать с ним что угодно - хоть атрибуты обновлять, хоть поля.
чего и добилась собственно, через адо просто я в ворде делала,в лиспе не представляла в каком виде можно получить данные,спс.



Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
прямо отвечаю - да, это возможно. А как это сделать - придется самостоятельно разрабатывать. А-
накопаю,накопирую- это наивно. На форуме же можно получать ответы на конкретные короткие вопросы, типа "А где взять библиотеку для работы с ADO из Lisp". А решить задачу для "накопирую" - это в Поиск исполнителей.
Опять таки , повторяю,у меня были два вопроса "возможно ли", и "как бы решили такую задачу Вы?"-исходя из опыта работы в сфере САПР,Autocad и т.п.,что бы изначально исключить не перспективный путь .Исполнителей я не ищу,копировать я собираюсь в пространствах интернета уже конкретно по пунктам задач примеры. Ни с кого тянуть исполнения моих задач я не собираюсь.Спс.

----- добавлено через ~18 мин. -----
Цитата:
Сообщение от skkkk Посмотреть сообщение
Можно еще рассмотреть такой вариант, который у нас пока и используется. Несколько корявый и даже, наверное, дилетантский, но тем не менее. В Автокаде создается связь с данными таблицы Excel, которая является базой данных, не самой надежной, но зато понятной большинству пользователей, даже старой закалки, у которых слова "База данных" вызывают головокружение и острое сопротивление. Далее
Вот это уже очень интересно,вчера один коллега тоже предложил эксел,но опять таки,по мне,это быстрый ход,НО как шаг назад.А учитывая то,что к данным о проекте наши "пользователи старой закалки" доступа не имеют,так что ничего ужасного в аксессе .

Цитата:
программой отсюда создаются поля, вставляются куда нужно на чертеже. При обновлении данных в файле Excel нужно обновить связи с данными (об этом сообщит всплывающее окошко в правом нижнем углу окна Автокада), а затем и обновить поля второй командой из программы по ссылке.
это на чём реализовано(язык)? я видела примеры,но узнала что на ВБА...и мне сказали забыть про него ) проблемы там какие то в последних версиях.

вчера разработали схему взаимодействия с МДБ. Насчет обновлений ..решили "плясать" от внутренней библиотеки dwg в которой можно сохранить какие то ключевые данные -путь проекта...и т.п.

а вот,вспомнила,при открытии файла,будет типо авторановый лисп,ЛИБО опять же кнопочка, нажав на которую, берется путь к проекту ,который во внутренних переменных сохранится,и просто перечитает mdb .вот типо так

п.с. Пойду тестировать процесс считки данных из мдб
Дианка вне форума  
 
Непрочитано 16.10.2014, 14:31
#18
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


А зачем вообще зачем .mdb? Нормальная серверная СУБД - вот, что нужно!
lisp+ADO - тот ещё изврат
trir вне форума  
 
Автор темы   Непрочитано 16.10.2014, 16:10
#19
Дианка


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


Цитата:
Сообщение от trir Посмотреть сообщение
А зачем вообще зачем .mdb? Нормальная серверная СУБД - вот, что нужно!
lisp+ADO - тот ещё изврат
нормальная СУБД это типо mysql? ну пока, для годика другого, mdb подойдет, думаю.А в чём изврат?
ПРосто у нас куплена система документооборота(там как раз насколько слышала Mysql) , но до данной части дойдет нескоро, там пока другой модуль шлифуется. А пока позатыкать мдбшкой вроде неплохо ...)
Дианка вне форума  
 
Непрочитано 16.10.2014, 18:54
#20
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
А зачем вообще зачем .mdb? Нормальная серверная СУБД - вот, что нужно!
lisp+ADO - тот ещё изврат
Это что, "для поддержания разговора"? Что Вы знаете про "серверные СУБД"? Что Вы знаете про АДО? Почему внутри Автокада надо использовать Lisp, знаете? Почему для связки АвтоЛисп с любой СУБД нужно использовать именно ADO знаете?

Начинать с MDB (как формата файла) вполне возможно. Его можно и на локальной машине использовать, и в расшаренных папках (фактически файловом сервере). Потом, по мере роста объемов данных и количества пользователей, можно будет перейти и на использование сервера баз данных, с установленной "нормальной СУБД". Если эта "нормальная СУБД" будет MSSQL, то миграция вообще простая. В какую-то другую СУБД данные можно экспортировать через SQL. Если первичное приложение для локальной работы написано правильно, то даже можно и код не переписывать.

Приложения для AutoCAD можно делать в разных средах, включая ObjectARX и .NET. Вопрос в том, насколько программист ими владеет. Конечно, Александр Ривилис не будет связываться со связкой Lisp-ADO. Но Ривилис здесь один. А автор ветки все-таки по собственному заявлению "я чайник чайниковый,немножко VBA".
Цитата:
повторяю,у меня были два вопроса "возможно ли", и "как бы решили такую задачу Вы?"-исходя из опыта работы в сфере САПР,Autocad и т.п.
На первый вопрос я ответил "прямо отвечаю", на второй ответил там же, в #15, двумя строчками выше. А skkkk совершенно справедливо добавил
Цитата:
Они отнимают до 99% от всего времени разработки программы
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59