dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Автоматическая загрузка dll-файла посредством Acaddoc.lsp

Автоматическая загрузка dll-файла посредством Acaddoc.lsp

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 27.10.2009, 12:01 #1
Автоматическая загрузка dll-файла посредством Acaddoc.lsp
hwd
 
C, C++, C#
 
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™

hwd вне форума Вставить имя

На сервере, в некотором каталоге "//aaa/bbb/ccc/ddd/eee/AcadLibs/" разместил файл Acaddoc.lsp со следующим содержимым:
Код:
[Выделить все]
;;;Исключаю возможность перезаписи метода S::STARTUP...
(setq S::STARTUP (append S::STARTUP HwdStartup))

(defun-q HwdStartup()
(princ "\nПроверка связи...")
(command "AcadLayoutsCountLoad")
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
  (setq echo (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq fd (getvar "filedia"))
  (setvar "filedia" 0)
  (command "netload" "//aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll")
  (setvar "filedia" fd)
  (setvar "cmdecho" echo)
)
В диалоговом окне Options, на вкладке Files добавил путь "//aaa/bbb/ccc/ddd/eee/AcadLibs" и установил его первой строчкой.
Однако получаю две проблемы:
1. Не происходит автоматической загрузки файла Acaddoc.lsp, несмотря на то, что каталог поиска добавлен.
2. Не удаётся загрузить .Net библиотеку из командной строки. Даже если вручную установлю "filedia" в 0 и выполню команду netload, указав путь "//aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll" или же "//aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount" (т.е. без расширения файла) - загрузки библиотеки не происходит.

В чем проблемы?
Просмотров: 3856
 
Непрочитано 27.10.2009, 12:02
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 34,171


.NET-сборки из ком.строки не загружаются. На caduser.ru А.Ривилис показывал ссылки на ветки реестра, куда надо данные о сборках записывать. По-моему, аналогичное было и в DevTV, но сейчас не проверить
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 12:07
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
.NET-сборки из ком.строки не загружаются. На caduser.ru А.Ривилис показывал ссылки на ветки реестра, куда надо данные о сборках записывать. По-моему, аналогичное было и в DevTV, но сейчас не проверить
через реестр я знаю как делать. но хотелось бы его не трогать. имхо лучше было бы разместить приведённый мною выше файл на серваке, добавить каждому пользователю в профиль запись с сылкой на каталог и всё. дело в том, что у разных юзеров разные версии автокада, у некоторых даже русские версии. т.о. каждому из них нужно будет в реестр свой вариант изменений производить. это не удобно.

Кроме того, не понял тогда офиц. инфы. смысл тогда делать вариант команды netload строчный, если он не работает?

Если я каждому юзеру пришлю эту информацию:

Создаём reg-файл, который произведет в реестре нужные изменения, решив вопрос со своевременным подключением библиотеки:

Текст нашего reg-файла:

Для русской версии AutoCAD 2009:

Цитата:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7004:409\Applications\Bushman]
"LOADER"="C:\\AcadPlagins\\AcadLayoutsCount.dll"
"LOADCTRLS"=dword:00000002
"MANAGED"=dword:00000001
Для английской версии AutoCAD 2009:

Цитата:
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7001:409\Applications\Bushman]
"LOADER"="C:\\AcadPlagins\\AcadLayoutsCount.dll"
"LOADCTRLS"=dword:00000002
"MANAGED"=dword:00000001
Рассмотрим содержимого reg-файла более подробно:

"[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.
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 12:20
#4
Александр Ривилис

MAESTRO Group, программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,113
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью AIM Отправить сообщение для Александр Ривилис с помощью MSN Отправить сообщение для Александр Ривилис с помощью Yahoo Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
.NET-сборки из ком.строки не загружаются.
У меня загружается:
Код:
[Выделить все]
(command "_netload" "E:/RAN/C#/2007/GetClassList/GetClassList/obj/Debug/GetClassList.dll")
Цитата:
Сообщение от hwd Посмотреть сообщение
1. Не происходит автоматической загрузки файла Acaddoc.lsp, несмотря на то, что каталог поиска добавлен.
По поводу загрузки acaddoc.lsp смотри системную переменную ACADLSPASDOC
А вот по сети так (IMHO) не получится так грузить сборку по двум причинам:
1. Нельзя первые "\\\\" менять на "//"
2. Нужны соответствующие права для выполнения .NET-сборки по сети: http://kpblc.blogspot.com/2009/09/net.html
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 12:26
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
[/code]По поводу загрузки acaddoc.lsp смотри системную переменную ACADLSPASDOC
про это я знаю.

Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
1. Нельзя первые "\\\\" менять на "//"
спасибо, учту, хотя, честно говоря удивился такому ограничению...
Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
2. Нужны соответствующие права для выполнения .NET-сборки по сети: http://kpblc.blogspot.com/2009/09/net.html
Спасибо, сейчас буду разбираться...
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 12:30
#6
Александр Ривилис

MAESTRO Group, программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,113
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью AIM Отправить сообщение для Александр Ривилис с помощью MSN Отправить сообщение для Александр Ривилис с помощью Yahoo Отправить сообщение для Александр Ривилис с помощью Skype™


Подумай над написанием своего простенького инсталлятора, который находит установленные AutoCAD'ы и по выбору пользователя (из выпадающего списка) прописывает твою .NET-сборку в автозагрузку. В принципе это можно сделать и из самой сборки. Тогда один раз необходимо ее будет загрузить вручную, а она все что надо пропишет в реестр.
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 12:46
#7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Подумай над написанием своего простенького инсталлятора, который находит установленные AutoCAD'ы и по выбору пользователя (из выпадающего списка) прописывает твою .NET-сборку в автозагрузку. В принципе это можно сделать и из самой сборки. Тогда один раз необходимо ее будет загрузить вручную, а она все что надо пропишет в реестр.
Да я вот параллельно как раз этим и занят... Однако хотелось бы уметь решать данную задачу и посредством подключения .нет библиотек через файл acaddoc.lsp

Изменил файл Acaddoc.lsp так:
Цитата:
;;;Исключаю возможность перезаписи метода S::STARTUP...
(setq S::STARTUP (append S::STARTUP HwdStartup))

(defun-q HwdStartup()
(princ "\nПроверка связи...")
(command "AcadLayoutsCountLoad")
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq fd (getvar "filedia"))
(setvar "filedia" 0)
(command "netload" "\\aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll")
(setvar "filedia" fd)
(setvar "cmdecho" echo)
)
Выполнил через командную строку указанную по ссылке операцию:
Цитата:
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\hwd>CasPol.exe -m -ag 1.2 -url "\\aaa/bbb/ccc/ddd/eee/AcadLibs/" FullTrust
Microsoft (R) .NET Framework CasPol 2.0.50727.3053
Copyright (c) Microsoft Corporation. All rights reserved.

The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
y
Added union code group with "-url" membership condition to the Machine level.
Success
однако результат по прежнему нулевой...

п.с. пытался и так:
Цитата:
;;;Исключаю возможность перезаписи метода S::STARTUP...
(setq S::STARTUP (append S::STARTUP HwdStartup))

(defun-q HwdStartup()
(princ "\nПроверка связи...")
(command "AcadLayoutsCountLoad")
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq fd (getvar "filedia"))
(setvar "filedia" 0)
(command "netload" "\\\\aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll")
(setvar "filedia" fd)
(setvar "cmdecho" echo)
)
Выполнил через командную строку указанную по ссылке операцию:
Цитата:
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\hwd>CasPol.exe -m -ag 1.2 -url "\\\\aaa/bbb/ccc/ddd/eee/AcadLibs/" FullTrust
Microsoft (R) .NET Framework CasPol 2.0.50727.3053
Copyright (c) Microsoft Corporation. All rights reserved.

The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
y
Added union code group with "-url" membership condition to the Machine level.
Success

Последний раз редактировалось hwd, 27.10.2009 в 12:56.
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 12:56
#8
Александр Ривилис

MAESTRO Group, программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,113
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью AIM Отправить сообщение для Александр Ривилис с помощью MSN Отправить сообщение для Александр Ривилис с помощью Yahoo Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
однако результат по прежнему нулевой...
Нулевой это что? Не загрузился acaddoc.lsp? Загрузился acaddoc.lsp но не выполнилась команда _netload? Выполнилась команда _netload, но сборка не работает?
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 12:58
#9
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Нулевой это что? Не загрузился acaddoc.lsp? Загрузился acaddoc.lsp но не выполнилась команда _netload? Выполнилась команда _netload, но сборка не работает?
  • не грузится acaddoc.lsp
  • не выполнилась команда _netload (даже если загрузить acaddoc.lsp принудительно)
  • не работает команда AcadLayoutsCountLoad, даже если её вызвать вручную после загрузки acaddoc.lsp
п.с. сборка рабочая, т.к. изначально сделал автоматическую загрузку через реестр. всё работало. а вот через acaddoc.lsp ни в какую не получается...
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 13:02
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 34,171


А почему в пути слеши не на сетевой каталог указывают?
Уже подправлено, неактуально.
P.S. лично я стараюсь не смешивать в лиспе прямые и обратные слеши. Не всегда работает корректно.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 13:03
#11
Александр Ривилис

MAESTRO Group, программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,113
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью AIM Отправить сообщение для Александр Ривилис с помощью MSN Отправить сообщение для Александр Ривилис с помощью Yahoo Отправить сообщение для Александр Ривилис с помощью Skype™


Если ты вводишь в командной строке:
Код:
[Выделить все]
(command "netload" "\\\\aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll")
Отрабатывает нормально? Не должно так работать. Ты же в курсе, что "\\" означает паузу в воде команд.
Резюме. Можешь еще долго с этим парится, но нормальное решение, это копировать сборку на локальный PC и там ее регистрировать в автозапуске (реестре).
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 13:05
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А почему в пути половина слешей "перепутаны"?
я уже не знаю как в каком случае для автокада слэши указывать )
ранее думал, что слешь для автокада, это "/" или же "\\" что для этой программы одно и то же. теперь оказывается, что если я указываю сервер, то "//" ставить нельзя... нужно "\\\\"...
где там чего напутано?
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 13:07
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 34,171


Я ж написал, что "исправлено, теперь неактуально" ))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 13:10
#14
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Резюме. Можешь еще долго с этим парится, но нормальное решение, это копировать сборку на локальный PC и там ее регистрировать в автозапуске (реестре).
я пробовал вручную вызывать netload и вставлять в качестве имени файла "\\\\aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll" никакой паузы не возникало.
Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Резюме. Можешь еще долго с этим парится, но нормальное решение, это копировать сборку на локальный PC и там ее регистрировать в автозапуске (реестре).
у юзеров нет прав на работу с реестром... т.о., reg-файл они не смогут использовать...

2 Кулик Алексей aka kpblc
>Я ж написал, что "исправлено, теперь неактуально" ))

не понял тебя... поясни

млин... оказывается ещё и CasPol.exe не добавила права на вызов библиотеки, лежащей на серваке...

Последний раз редактировалось hwd, 27.10.2009 в 13:15.
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 13:17
#15
Александр Ривилис

MAESTRO Group, программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,113
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью AIM Отправить сообщение для Александр Ривилис с помощью MSN Отправить сообщение для Александр Ривилис с помощью Yahoo Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
я пробовал вручную вызывать netload и вставлять в качестве имени файла "\\\\aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll" никакой паузы не возникало.
Что же из тебя информацию нужно клещами тянуть? Так сборка загрузилась или нет? Ты проверил что команда, определенная в сборке после этого запускается?
Цитата:
Сообщение от hwd Посмотреть сообщение
у юзеров нет прав на работу с реестром... т.о., reg-файл они не смогут использовать...
У них есть права на запись в HKEY_CURRENT_USER (в частности HKEY_CURRENT_USER\Software\Autodesk\AutoCAD - иначе бы AutoCAD не запускался). Тебе нужно писать сюда: HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7001:XXX\Applications для AutoCAD 2009
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 13:28
#16
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Значит так...
Изначально (вчера) я разместил библиотеку на локальной машине, добавил в реестр соответствующие изменения - всё заработало как нужно.
Но это у меня на машине.
Я пошёл к начальнику IT отдела и предложил закинуть библиотеку в сетевой каталог, доступный всем, чтобы пользователи каждый раз при открытии документа подгружали эту библиотеку (т.е. на их компах локальной копии нет) - так проще обновлять библиотеки (заменил на серваке - изменилось у всех).
Закинули мы библиотеки на сервак.
после этого (уже сегодня) я грохнул у себя в реестре запись по автозагрузке моей библиотеки для каждого документа, решив всё реализовать посредством acaddoc.lsp файла, который закинул в тот же каталог на сервере, где лежит библиотека.

с сервера сборку загрузить так и не могу даже вручную...

касательно правки реестра - админ сказал, что у всех пользователей нет прав на изменения даже их собственной ветки реестра и regedit запрещён политикой, и что либо менять он не будет, мол как хочешь, так и извращайся, но в реестр не пущу. Единственно - мне дал права на доступ к реестру моего компа, но др. юзерам не даст...

Прочёл статью на аглицком, приведенную Александром....
подправил строку шары:

Цитата:
CasPol.exe -m -ag 1.2 -url "file://\\aaa/bbb/ccc/ddd/eee/AcadLibs/*" FullTrust
теперь удалось подключить вручную через netload...

файл acaddoc.lsp вроде как автоматом сам загружается, хотя сообщения "\nПроверка связи..." я не получаю на экране, следовательно не происходит автоматической загрузки метода S::STARTUP

если вручную вызываю команду AcadLayoutsCountLoad - она запускается.

Последний раз редактировалось hwd, 27.10.2009 в 13:46.
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2009, 13:41
#17
Александр Ривилис

MAESTRO Group, программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,113
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью AIM Отправить сообщение для Александр Ривилис с помощью MSN Отправить сообщение для Александр Ривилис с помощью Yahoo Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
касательно правки реестра - админ сказал, что у всех пользователей нет прав на изменения даже их собственной ветки реестра и regedit запрещён политикой, и что либо менять он не будет, мол как хочешь, так и извращайся, но в реестр не пущу. Единственно - мне дал права на доступ к реестру моего компа, но др. юзерам не даст...
1. regedit тебе не нужен - на .NET напишешь то, что нужно по работе с реестром.
2. если у них нет прав писать в собственную ветку реестра - AutoCAD не будет работать по определению. Ну пишет он в свою ветку постоянно. Значит все-таки права есть, т.к. AutoCAD работает. Так вот напиши и проверь у кого-нибудь "бесправного".
Александр Ривилис вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.10.2009, 13:55
#18
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
1. regedit тебе не нужен - на .NET напишешь то, что нужно по работе с реестром.
2. если у них нет прав писать в собственную ветку реестра - AutoCAD не будет работать по определению. Ну пишет он в свою ветку постоянно. Значит все-таки права есть, т.к. AutoCAD работает. Так вот напиши и проверь у кого-нибудь "бесправного".
Сейчас схожу попробую...

Если подправить лисп-файл так:
Цитата:
;;;Исключаю возможность перезаписи метода S::STARTUP...
;;;(setq S::STARTUP (append S::STARTUP HwdStartup))

(defun-q S::STARTUP()
(princ "\nПроверка связи...")
(c:AcadLayoutsCountLoad)
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq fd (getvar "filedia"))
(setvar "filedia" 0)
(command "netload" "\\\\aaa/bbb/ccc/ddd/eee/AcadLibs/AcadLayoutsCount.dll")
(setvar "filedia" fd)
(setvar "cmdecho" echo)
)
всё заработало (т.е. как мне и нужно - происходит автоматическая загрузка библиотеки и вызов метода AcadLayoutsCountLoad).
Но почему не происходит автоматического выполнения команды AcadLayoutsCountLoad при таком варианте? :
Цитата:
;;;Исключаю возможность перезаписи метода S::STARTUP...
(setq S::STARTUP (append S::STARTUP HwdStartup))

(defun-q HwdStartup()
(princ "\nПроверка связи...")
(c:AcadLayoutsCountLoad)
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq fd (getvar "filedia"))
(setvar "filedia" 0)
(command "netload" "\\\\aaa/bbb/ccc/ddd/eee/AcadLayoutsCount.dll")
(setvar "filedia" fd)
(setvar "cmdecho" echo)
)
?

Похоже я понял в чём дело...

По видимому имеет значение порядок записи (определений) функций.
Так всё работает:
Цитата:
(defun-q HwdStartup()
(princ "\nПроверка связи...")
(c:AcadLayoutsCountLoad)
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq fd (getvar "filedia"))
(setvar "filedia" 0)
(command "netload" "\\\\hyprostroy/dfs/SystemFolder/tools/AutoCAD tools/AcadLibs/AcadLayoutsCount.dll")
(setvar "filedia" fd)
(setvar "cmdecho" echo)
)
;;;Исключаю возможность перезаписи метода S::STARTUP...
(setq S::STARTUP (append S::STARTUP HwdStartup))

Последний раз редактировалось hwd, 27.10.2009 в 14:06.
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.03.2017, 10:35
#19
AID88


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


А можете на пальцах пояснить порядок действий, чтобы подключить счетчик листов в акад?
Версия - акад2017.
Пробовал подключить таким образом скачал папку с библиотекой, создал файл AcadLayoutsCountLoad.lsp на рабочем столе, ставлю этот файл в автозагрузку.
Счетчик не работает.
AID88 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.03.2017, 10:55
#20
Boxa

ПГС
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,224


Скачали папку... какую? откуда? куда ее положили? какую версию библиотеки пытаетесь запустить?
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Автоматическая загрузка dll-файла посредством Acaddoc.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

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


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