Полностью автоматическая библиотека

Автор kornei, 16.08.12, 17:17:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kornei

Здравствуйте

Подскажите пожалуйста, можно ли каким-то образом сделать полностью автоматическую библиотеку для Компаса?
Т. е. Чтобы она отрабатывала сразу при запуске Компаса? Без нажатия пользователем каких-либо клавиш.

Я так понимаю, что нужно использовать подписку на события. Но конкретно как применить ее, понять не могу.

Заранее спасибо.

Вам нужно сделать библиотеку по технологии AddIn.
Это обычная библиотека, но она регистрируется в реестре и загружается при запуске системы КОМПАС.

kornei

И она будет выполнять свои функции при запуске компаса?

Вот пример AddIn библиотеки http://forum.ascon.ru/index.php/topic,20277.msg154381.html#msg154381 , когда установите откройте чертеж с несколькими видами, и поводите по видам мышкой, они будут переключатся при наведении на них курсора, хотя Вы нечего не нажимаете.

kornei

А регистрировать в реестре можно вручную?

chelkar

Можно и руками.
Если написать правильно, то будет регистрироваться по команде regsvr32 "имя файла".

kornei

А можно подробнее синтаксис команды?

Задаю regsvr32.exe полный путь к модулю - пишет что регистрация не удалась

Почитайте в SDK, там всё расписано, можно зарегистрировать и файлом типа reg.

Пример :
Файл реестра "MyLibrary.reg"
REGEDIT4
[HKEY_CURRENT_USER\Software\ASCON\KOMPAS-3D\AddIns\Моя библиотека]
"ProgID"="MyLibrary.class1"
"Path"="c:\\MyLibrary.rtw"
"AutoConnect"=dword:00000001

kornei

Читал я SDK)))))
Создаю все так как в примере Только вот библиотеке подключаться это не помогает))))))


Вот экспортировал из реестра файл своей библиотеки, достаточно для её работы.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ASCON\KOMPAS-3D\AddIns\Select]
"AutoConnect"=dword:00000001
"Path"="c:\\Select\\Select23.rtw"

kornei

Спасибо конечно Все получилось

Вот только это совсем не то, что мне нужно. Объясню подробнее))
Есть библиотека, которая открытый документ сохраняет в формате *.jpg Библиотека сама по себе не сложная.
Но сейчас она делает это, только если я в меню "Библиотеки" выберу свою библиотеку и таким образом выполню функцию экспорта.

А мне нужно, чтобы жать ничего не надо было. Просто открыли файл *.cdw, а библиотека отработала и кинула файл *.jpg в определенное место.
Как это возможно сделать?

Заранее спасибо.

SDK пример 12 в обработчик события
  // koOpenDocumen - Документ открыт
function ApplicationEvent.OpenDocument( newDoc : Reference; docType : integer ) : WORDBOOL;
begin
  AdviseDoc( newDoc );
  UpdateSlideBox1( newDoc );

  вставить свой код сохранения изображения или коллекции изображений
  Result := true;
end;

Лишнее из примера можно удалить, фактически Вам нужно подписаться на интерфейс событий приложения IKompasObjectNotify.

kornei

А функцию LibraryEntry оставить пустой?

Можно и пустой оставить инициализация будет здесь
function LibInterfaceNotifyEntry(disp:IDispatch):Integer; stdcall;

kornei

Ясно Спасибо за совет Буду пробывать))))

kornei

Цитата: Sabahs от 16.08.12, 22:12:58
Можно и пустой оставить инициализация будет здесь
function LibInterfaceNotifyEntry(disp:IDispatch):Integer; stdcall;

Все мои попытки были бесплодны. В эту функцию библиотека тупо не попадает. Можно как то подробнее примерчик?

Всё замечательно попадает.

kornei

Я просто забыл export прописать)))))

Вопрос в следующем Если верить SDK, то События приложения.

koCreateDocument  1  - документ создан,
koBeginOpenDocumen  2  - начало открытия документа,
koOpenDocumen  3  - документ открыт, ......

Как этими значениями воспользоваться?


#18
SDK пример 12, Вы его скомпилируйте в том виде в котором он есть, поставьте точки останова в обработчиках событий и в отладчике, посмотрите, когда они возникают, а затем когда разберётесь, удалите всё лишнее.

P.S. Как работать в отладчике есть в видео здесь http://forum.ascon.ru/index.php/topic,22788.msg157712.html#msg157712

kornei