|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
![]() |
Поиск в этой теме |
![]() |
#1 | |
Lisp,VBA. Autocad 2013. Как "втянуть" данные в аттрибут блока(field)-из БД(mdb например)?С дальнейшей синхронизацией.
Регистрация: 14.10.2014
Сообщений: 29
|
||
Просмотров: 14980
|
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
так это ведь единичная привязка...причем таскать эту лабуду с собой постоянно )
-через адо ,я как раз в ворде делаю. Но синхронизация(т.е. повторное считывание) происходит при запуске "редактирования".,Т.е. необходимо знать,что там(наверху) что-то изменилось, и сходить нажать в доке "редактировать->обновить данные". а в Автокаде может можно что-то типо в авторан запихнуть какую-то хитрую процедуру %) не знаю.Ну вот как к примеру xref работает,при запуске релоудит все ссылки... а еще вспомнилось, при Bind эта информация вообще не улетит куда-то ? в смысле превратится в какие-нибудь ##### ? А то часто,оч часто приходится внедрять всё притянутое ... |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
подшивки...это что для листов что ли? поля-я как раз и спрашиваю как туда запихать инфу с БД,и чтоб возможность обновления была. а про аттин аттаут -опять возврат к txt, а там проблемы с перекодировкой и т.п. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
|
|||
![]() |
|
||||
Не устану повторять - возможно все, практически любые фантазии. Вопрос лишь в наличии желания, знаний и времени.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
Цитата:
если на пальцах то ->ткнуть в кнопочку,получить штампик с данными проекта,который будут обновляться исходя из изменяемых данных проекта, которые на сервере в файлике(скорее mdb) правит администратор проекта. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
но ведь подшивка строится на изменении атрибутики,т.е. админ должен зайти в файлик подшивки и в атрибутах менять данные?
а всё же вопрос остается вопросом,нужно одно хранилище для вордовских доков и двг (инфа то одна,зачем ее дублировать в ткст для ворда,и в подшивке двг) ? ответьте на первый вопрос ))) и тогда в случае отрицательного ответа,я отстану на время вкопки в тему подшивок ![]() |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
1. Поля подшивок хорошо синхронизируются в АкАд'е
2. Свойства файла можно использовать в АкАд'е и Word'е 3. Можно завести БД, которая сможет автоматически синхронизироваться со а) свойства файла б) поля подшивки (через COM+AutoCAD или напрямую (хотя для этого придётся голову поломать)) |
|||
![]() |
|
||||
Может тогда обратить внимание на какую-то готовую систему электронного документооборота? В них вроде все это есть. Карточка проекта, из которой берется атрибутика в документы...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Если есть некий MDB-файл, то доступ к нему можно получить через ADO, в том числе из Lisp. Только надо иметь соответствующую библиотеку функций. Отправив через ADO SQL-запрос к файлу (с каким-то условием отбора записей), получаете результат (набор данных) в виде LISP-списка. Теперь можете делать с ним что угодно - хоть атрибуты обновлять, хоть поля. Это общая схема. Но "дьявол кроется в деталях". Надо продумывать и программно реализовывать, где и как хранятся данные для формирования условия запроса, как они туда попадают, и т.п. и т.д. На прямой вопрос Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Цитата:
![]() ----- добавлено через ~26 мин. ----- На самом деле, сам давно маюсь в желании начать разработку подобного инструмента, но ввиду ограниченности времени никак не решусь. Понимаю, однако, что все там непросто и нужно хорошенько все продумать. И легких путей там нет. Если я правильно понял потребности, то нужно создать некое хранилище данных для каждого проекта (в основном, числовых и текстовых) и инструмент, который при обновлении этих данных обновит их в полях по всему чертежу dwg да еще и в Word. Так? Можно еще рассмотреть такой вариант, который у нас пока и используется. Несколько корявый и даже, наверное, дилетантский, но тем не менее. В Автокаде создается связь с данными таблицы Excel, которая является базой данных, не самой надежной, но зато понятной большинству пользователей, даже старой закалки, у которых слова "База данных" вызывают головокружение и острое сопротивление. Далее программой отсюда создаются поля, вставляются куда нужно на чертеже. При обновлении данных в файле Excel нужно обновить связи с данными (об этом сообщит всплывающее окошко в правом нижнем углу окна Автокада), а затем и обновить поля второй командой из программы по ссылке. |
|||
![]() |
|
|||||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
----- добавлено через ~8 мин. ----- Цитата:
![]() Цитата:
Цитата:
![]() ----- добавлено через ~18 мин. ----- Цитата:
![]() Цитата:
вчера разработали схему взаимодействия с МДБ. Насчет обновлений ..решили "плясать" от внутренней библиотеки dwg в которой можно сохранить какие то ключевые данные -путь проекта...и т.п. а вот,вспомнила,при открытии файла,будет типо авторановый лисп,ЛИБО опять же кнопочка, нажав на которую, берется путь к проекту ,который во внутренних переменных сохранится,и просто перечитает mdb .вот типо так ![]() п.с. Пойду тестировать процесс считки данных из мдб |
||||||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
ПРосто у нас куплена система документооборота(там как раз насколько слышала Mysql) , но до данной части дойдет нескоро, там пока другой модуль шлифуется. А пока позатыкать мдбшкой вроде неплохо ...) |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Начинать с MDB (как формата файла) вполне возможно. Его можно и на локальной машине использовать, и в расшаренных папках (фактически файловом сервере). Потом, по мере роста объемов данных и количества пользователей, можно будет перейти и на использование сервера баз данных, с установленной "нормальной СУБД". Если эта "нормальная СУБД" будет MSSQL, то миграция вообще простая. В какую-то другую СУБД данные можно экспортировать через SQL. Если первичное приложение для локальной работы написано правильно, то даже можно и код не переписывать. Приложения для AutoCAD можно делать в разных средах, включая ObjectARX и .NET. Вопрос в том, насколько программист ими владеет. Конечно, Александр Ривилис не будет связываться со связкой Lisp-ADO. Но Ривилис здесь один. А автор ветки все-таки по собственному заявлению "я чайник чайниковый,немножко VBA". Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Это-то понятно. Я предложил это, как вариант, уже, можно сказать, готовый к употреблению. Без претензий на исключительность.
На лиспе. После, если не ошибаюсь, 2008-го или 2009-го Автокада VBA выведено из базового функционала и поставляется в виде Enabler'a. Это, по мнению многих, предрекает его (VBA) скорую гибель. При переходе с 2008-го на 2011-й Автокад в нашей конторе пришли к тому, что отказались от всех приложений на VBA, благо не много их было. При установке VBA-Enabler'a наблюдались тормоза на 2011-м, правда, тогда еще не было SP, не знаю, решил ли он эту проблему. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
1. Не решил: http://adn-cis.org/autocad,-vba-i-proizvoditelnost.html
2. VBA в ACAD2015 претерпел существенные изменения, многие коды, скорее всего, придется перерабатывать.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Я наврал: не в 2015, а в 2014: http://adn-cis.org/vbamacro-compatib...ad2014x64.html
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
Цитата:
![]() а если я его включу в стартаповский лисп(ну просто чтоб потом не забыть) acaddoc.lsp это не принесет каких то проблем? |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
![]() Вам нужно: 1. Раздобыть LSP-библиотеку, с функциями работы с ADO. Lisp не может работать с DLL, но может обращаться к некоторым методам. 2. Обеспечить загрузку этой библиотеки. Вот здесь может и acaddoc.lsp помочь. 3. Написать кучу своих функций и тоже включить их в библиотеку. 4. Дальше делать "функции-программы" - любые по своему хотенью. Внутри их уже может быть вызов библиотечных функций. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вот Вам три "волшебных" функции - они в большинстве случаев закрывают все вопросы по ADO<->Autolisp.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Ну или знаменитейшая библиотеки Флемингов http://acad.fleming-group.com/Downlo...p/ADOLisp.html )))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
----- добавлено через ~2 мин. ----- Цитата:
----- добавлено через ~3 мин. ----- Цитата:
а тож я решила чего это всё так просто. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Ну и прочее. Я бы все-таки рекомендовал библиотеку от "семейки Адамс", т.е. Флемингов. Она не такая изячная, её можно много совершенствовать, но там "по полочкам" и с примерами. И позволю себе гнусные, заведомо ложные измышления. ADO - это технология Microsoft. Очень удобная. Но в последние годы они, как специально, начали её компрометировать. Разрабатывают новые версии, теперь уже включают в новые версии Windows и MS Office (а раньше надо было самостоятельно устанавливать, или тольк с Офисом). естественно, появляются новые версии движка Jet, который и работает с MDB. Вот в нем вдруг обнаруживаются ошибки, причем чрезвычайно трудно обнаруживаемые. Сказали бы мне - не поверил бы. Но убедился - одна и та же программа, использующая ADO, работает по-разному на разных машинах. Кроме того, Microsoft придумала "свой SQL", отличающийся от общепринятых диалектов. Это приходится учитывать. В результате мне пришлось для программ, использующих локальные БД отказаться от MDB и перейти на совершенной иной, независимый от MS движок. Как минимум, известно где искать ошибки, да и возможность прямой работы с SQL (чего нет в Access) многократно ускоряет работу. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
я впрочем уже внесла загрузку этих флеммингов в acddoc.lsp а их exampl почему то не работает у меня %) пишет Код:
----- добавлено через 55 сек. ----- дан?) |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
Офис стоит?
ADO+Lisp - и ты в прошлом веке ;=) Надо, что бы разрядность Access'а и Acad'а совпадали Если Access не стоит - тогда проще, можно просто драйвер поставить, а вот если стоит... x32: C:\WINDOWS\SYSWOW64\odbcad32.exe А может в топку mdb? ShaggyDoc правильно намекает, вон у вас и SQLite стоит... Последний раз редактировалось trir, 21.10.2014 в 11:10. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
C:\Windows\System32\odbcad32.exe C:\Windows\SysWOW64\odbcad32.exe -обе есть. а вообще глобальный вопрос, если у людей не стоит аксесс...то?(я просто забыла это упомянуть %) ) надо это как то учитывать? если mdb в топку, выход тогда -какой? Цитата:
Последний раз редактировалось Дианка, 21.10.2014 в 11:20. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,108
|
Цитата:
C:\Program Files C:\Program Files (x86) Смотришь где стоит большая часть - та разрядность C:\Windows\System32\odbcad32.exe - это x64 драйвер (кто бы мог подумать) Смотришь где отсвечивает движок Цитата:
Цитата:
http://www.microsoft.com/en-us/downl....aspx?id=23734 картинка, что ты запостила, показывает, что у тебя либо не стоит Access, либо он x32 - ибо скорей всего ты смотришь C:\Windows\System32\odbcad32.exe |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
сказали, что autocad 64-x как и система. Цитата:
![]() access определенно точно стоит ))) я же в нём работаю... Offtop: блин я уже склоняюсь к методу считки с xls, а потом в отпуске пытаться написать что то на с++ или т.п. попытаться %) |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
два дня три головы мучаем с этими версиями ), сменами типов провайдеров ....
office -32, (поэтому без проблем c jet 4.0) ----- добавлено через ~17 ч. ----- вести с полей.........всё таки решено было использовать серверную базу SQL законнектилась... теперь встрял вопрос юникода ![]() ![]() ![]() ![]() т.е. с БД не считывает НЕкириллицу... т.е. не считывает,как надо... Последний раз редактировалось Дианка, 22.10.2014 в 13:20. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
![]() |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
"НЕкириллица" это ещё только начало. Мелкий вопрос. Конечная-то задача какая? Вроде было написано непонятное: Цитата:
Может вопрос "гроша выеденного" не стоит? "Источники данных" могут быть разные, в том числе текстовые разных видов (причем отображаемые как таблица БД, т.е. DataSet). В том числе такие, которые и Лисп и другие приложения могут напрямую читать, безо всяких "движков". Надо ли для этого MSSQL тащить, да на все рабочие места? У Вас "дядя в Майкрософт работает, у него там этих SQL-ов..."? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~7 мин. ----- p.s. Динамические блоки фамилий с lookup-это хорошо, но лишний мусор в чертеже. Сначала сделал так же, сейчас планирую сменить: фамилии в подшивках с полями в атрибутах основной надписи, блоки с подписями подтягивается простейшим макросом по содержимому соответствующих атрибутов. |
|||
![]() |
|
|||||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
тип поля в таблице nvarchar коннект такой Код:
----- добавлено через ~19 мин. ----- Цитата:
такого в общих чертах,т.е. суть-хранение данных в одном файле на серваке, админ вносит с новым проектом, но я думала такое лиспом можно реализовать,но столкнулась с проблемой юникода.К mdb я прицепилась, т.к. часть данных (для ворда)я уже перевела в базу ,какая то часть хранится в инишках,короче этот балаган,в конце концов хотела свести к одному источнику,а т.к. в ворде всё выглядит не плохо с аксессом.. На данный момент в MS Worde у нас данные считываются с ini(каждого нового проекта) которые сохраняюся в формате unicode( не ANSI),функция VBA считывает в формате юникода- vbFromUnicode -Converts the string from Unicode to the default code page of the system. Цитата:
Цитата:
![]() ----- добавлено через ~8 мин. ----- Цитата:
Цитата:
про подшивки сегодня почитаю,что то смутно представляю что и как. Последний раз редактировалось Дианка, 23.10.2014 в 10:00. |
||||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Для разных БД кодировка устанвливается по-разному.
Например, в MySQL кодировка указывается в свойствах базы данных. Она больше нужна для сравнения строк, но программы которые читают БД могут пытаться этим свойством воспользоваться и отобразить данные в соответствующей кодировке. Причем вполне возможно, что определят кодировку неправильно. Кроме того, сами строки перед помещением в БД должны быть в правильной кодировке. Они ведь откуда-то берутся. Например из всяких DbEdit в программе редактирования БД. Там уже есть какая-то кодировка. Раньше были и DOS-866, и Win1251, а теперь может быть и UTF-8 и вообще какая-нибудь экзотика. Т.е. возможна необходимость перекодировки текста в БД. Пример две картинки с простейшей таблицей DBF. Таблица древняя, в ней еще DOS-кодировка. Но программа просмотра позволяет отобразить правильный текст, без перекодировки данных. Но их, если надо, можно и перекодировать. Тогда более современные программы, в которых 866 и установить нельзя, смогут с ней работать. Также и происходит сейчас с Win и UTF. UTF более универсальна, но для текстов требуется почти вдвое больше места. Ну и не все программы могут отобразить UTF. Например, сможет ли ваш Автокад правильно отображать строки, извлеченные из БД, знаете ли? Цитата:
Последний раз редактировалось ShaggyDoc, 23.10.2014 в 10:17. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
1. Потому что это динамический блок - т.е. сначала создается анонимный блок с выбранной "конфигурацией" динблока, а потом лишь вставка этого анонимного блока.
2. Смотря как сделано - если подписи в виде блоков - то еще будет висеть неиспользуемых (15..20)*3 блоков в чертеже. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
в скрине свойства вроде всё ,что можно посмотреть . п.с. не знаю показатель ли,я сделала запрос в Managment Studio Express на строки эти НЕкириллицы, и сохранила результат в тхт(там есть функция save result as..), он сохранил сразу в формате юникода. п.п.с. всё же хочется уйти от текстового формата,либо модернизировать то,что имеется (каждый проектовый файл ini) и считывать данные уже в Autocad -но я не поняла,как в этом случае решить проблему кодировки ![]() ----- добавлено через ~3 мин. ----- Цитата:
не знаю,учитывая их куча разного хлама,не думаю что утяжелит чертеж один блочок ) пойду тестировать подшивки. Последний раз редактировалось Дианка, 23.10.2014 в 10:54. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Как это влияет на отображение легко исследовать в Notepad++ на любом текстовм файле с русским текстом. Там можно и отобразить текст в любой из пары десятков кодировок, и преобразовать его в любую из них. Но не каждая программа умеет оторажать данные в разных кодировках. |
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
Цитата:
на машине у меня стоит русский..как и у большинства ,думаю. ну так вообще решение есть какое то? с кодировкой..я уже перестаю,что либо понимать.. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Регистрация: 14.10.2014
Сообщений: 29
|
вручную меняются (если речь о переборе),программно только определить кому-какой блок вставить,не более.
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |