|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
27.10.2009, 12:01 | #1 | |
Автоматическая загрузка dll-файла посредством Acaddoc.lsp
C, C++, C#
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762
|
||
Просмотров: 12440
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
.NET-сборки из ком.строки не загружаются. На caduser.ru А.Ривилис показывал ссылки на ветки реестра, куда надо данные о сборках записывать. По-моему, аналогичное было и в DevTV, но сейчас не проверить
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Кроме того, не понял тогда офиц. инфы. смысл тогда делать вариант команды netload строчный, если он не работает? Если я каждому юзеру пришлю эту информацию: Создаём reg-файл, который произведет в реестре нужные изменения, решив вопрос со своевременным подключением библиотеки: Текст нашего reg-файла: Для русской версии AutoCAD 2009: Цитата:
Цитата:
"[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7004:409\Applications\Bushman]" - здесь мы добавляем новую группу - "Bushman", в которой будут размещаться наши записи. Добавление группы обязательно! Она может иметь др. имя, но она должна быть! Внимание! Код писался и тестировался под 2009-ю версию AutoCAD. Если у вас другая версия программы, то вместо "\R17.2\ACAD-7001:409\" (или вместо "\R17.2\ACAD-7004:409\", если у вас русская версия AutoCAD) у вас будет другое содержимое. Откройте редактор реестра (комманда regedit из командной строки Windows) и пройдите по выше указанной ветви, дабы увидеть именно ваши значения. Внесите в reg-файл данное изменение. Если вы внесли изменение, но ничего не заработало - значит наверняка вы ошиблись при подправлении reg-файла. Убедиться в этом можно так: Если в командной строке AutoCAD вызвать команду "NETLOAD", и в появившемся диалоговом окне выбрать файл AcadLayoutsCount.dll - произойдет загрузка библиотеки. Теперь произведите любую операцию с листами, которая должна повлиять на счетчик листов. Если вы видите, что всё работает (о чём будет выводиться текстовая информация в командной строке AutoCAD) - значит вы напортачили при правке reg-файла. Будьте внимательней - исправьте свою ошибку. "LOADCTRLS"=dword:00000002 - данный параметр указывает, что dll-файл необходимо загружать при открытии приложения. Значение "2" указывает на необходимость. "MANAGED"=dword:00000001 - данный параметр указывает, что dll-файл является управляемым кодом. "LOADER"="C:\\AcadPlagins\\AcadLayoutsCount.dll" - Данный параметр указывает полный путь к файлу нашей библиотеки (если вы сохраняете библиотеку в др. каталоге - измените эту строчку кода, указав ваш путь). Таким образом всё, что от нас требуется - это разместить на диске "C:" каталог "AcadPlagins", в который закинуть файлы нашей сборки. После этого запустить на исполнение наш reg-файл. Всё, задача решена. Теперь можно открывать AutoCAD и работать. они её скорее даже читать не будут, а если и будут - править реестр не смогут, т.к. в политике стоит запрет на использование regedit (админ доступ не даст - наотрез отказался)... Потому хотелось бы через acaddoc.lsp Последний раз редактировалось hwd, 27.10.2009 в 12:23. |
||||
|
||||
У меня загружается:
Код:
Цитата:
А вот по сети так (IMHO) не получится так грузить сборку по двум причинам: 1. Нельзя первые "\\\\" менять на "//" 2. Нужны соответствующие права для выполнения .NET-сборки по сети: http://kpblc.blogspot.com/2009/09/net.html |
||||
|
||||
Цитата:
спасибо, учту, хотя, честно говоря удивился такому ограничению... Цитата:
|
||||
|
||||
Подумай над написанием своего простенького инсталлятора, который находит установленные AutoCAD'ы и по выбору пользователя (из выпадающего списка) прописывает твою .NET-сборку в автозагрузку. В принципе это можно сделать и из самой сборки. Тогда один раз необходимо ее будет загрузить вручную, а она все что надо пропишет в реестр.
|
||||
|
||||||
Цитата:
Изменил файл Acaddoc.lsp так: Цитата:
Цитата:
п.с. пытался и так: Цитата:
Цитата:
Последний раз редактировалось hwd, 27.10.2009 в 12:56. |
||||||
|
||||
|
||||
|
||||
Цитата:
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
А почему в пути слеши не на сетевой каталог указывают?
Уже подправлено, неактуально. P.S. лично я стараюсь не смешивать в лиспе прямые и обратные слеши. Не всегда работает корректно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Если ты вводишь в командной строке:
Код:
Резюме. Можешь еще долго с этим парится, но нормальное решение, это копировать сборку на локальный PC и там ее регистрировать в автозапуске (реестре). |
||||
|
||||
я уже не знаю как в каком случае для автокада слэши указывать )
ранее думал, что слешь для автокада, это "/" или же "\\" что для этой программы одно и то же. теперь оказывается, что если я указываю сервер, то "//" ставить нельзя... нужно "\\\\"... где там чего напутано? |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Я ж написал, что "исправлено, теперь неактуально" ))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Цитата:
2 Кулик Алексей aka kpblc >Я ж написал, что "исправлено, теперь неактуально" )) не понял тебя... поясни млин... оказывается ещё и CasPol.exe не добавила права на вызов библиотеки, лежащей на серваке... Последний раз редактировалось hwd, 27.10.2009 в 13:15. |
||||
|
||||
Цитата:
У них есть права на запись в HKEY_CURRENT_USER (в частности HKEY_CURRENT_USER\Software\Autodesk\AutoCAD - иначе бы AutoCAD не запускался). Тебе нужно писать сюда: HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7001:XXX\Applications для AutoCAD 2009 |
||||
|
||||
Значит так...
Изначально (вчера) я разместил библиотеку на локальной машине, добавил в реестр соответствующие изменения - всё заработало как нужно. Но это у меня на машине. Я пошёл к начальнику IT отдела и предложил закинуть библиотеку в сетевой каталог, доступный всем, чтобы пользователи каждый раз при открытии документа подгружали эту библиотеку (т.е. на их компах локальной копии нет) - так проще обновлять библиотеки (заменил на серваке - изменилось у всех). Закинули мы библиотеки на сервак. после этого (уже сегодня) я грохнул у себя в реестре запись по автозагрузке моей библиотеки для каждого документа, решив всё реализовать посредством acaddoc.lsp файла, который закинул в тот же каталог на сервере, где лежит библиотека. с сервера сборку загрузить так и не могу даже вручную... касательно правки реестра - админ сказал, что у всех пользователей нет прав на изменения даже их собственной ветки реестра и regedit запрещён политикой, и что либо менять он не будет, мол как хочешь, так и извращайся, но в реестр не пущу. Единственно - мне дал права на доступ к реестру моего компа, но др. юзерам не даст... Прочёл статью на аглицком, приведенную Александром.... подправил строку шары: Цитата:
файл acaddoc.lsp вроде как автоматом сам загружается, хотя сообщения "\nПроверка связи..." я не получаю на экране, следовательно не происходит автоматической загрузки метода S::STARTUP если вручную вызываю команду AcadLayoutsCountLoad - она запускается. Последний раз редактировалось hwd, 27.10.2009 в 13:46. |
||||
|
||||
Цитата:
2. если у них нет прав писать в собственную ветку реестра - AutoCAD не будет работать по определению. Ну пишет он в свою ветку постоянно. Значит все-таки права есть, т.к. AutoCAD работает. Так вот напиши и проверь у кого-нибудь "бесправного". |
||||
|
|||||
Цитата:
Если подправить лисп-файл так: Цитата:
Но почему не происходит автоматического выполнения команды AcadLayoutsCountLoad при таком варианте? : Цитата:
Похоже я понял в чём дело... По видимому имеет значение порядок записи (определений) функций. Так всё работает: Цитата:
Последний раз редактировалось hwd, 27.10.2009 в 14:06. |
|||||
|
||||
Регистрация: 19.10.2014
Сообщений: 21
|
А можете на пальцах пояснить порядок действий, чтобы подключить счетчик листов в акад?
Версия - акад2017. Пробовал подключить таким образом скачал папку с библиотекой, создал файл AcadLayoutsCountLoad.lsp на рабочем столе, ставлю этот файл в автозагрузку. Счетчик не работает. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными | Андрей Х. | AutoCAD | 24 | 27.05.2015 10:17 |
Загрузка DWG файла из БД MS Access? | Trifon | Программирование | 6 | 10.02.2011 08:49 |
СПДС, Автоматическая загрузка при открытии файла | Vildar | Прочее. Программное обеспечение | 11 | 05.09.2008 16:58 |
Выполнение acaddoc.lsp - частичное отображение опций команды Автокада | Makswell | LISP | 18 | 26.03.2008 18:35 |