KSINVISIBLE.Application.5 в компас 17

Автор SerGoVec, 26.01.18, 15:32:09

« предыдущая - следующая »

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

SerGoVec

26.01.18, 15:32:09 Последнее редактирование: 26.01.18, 15:46:30 от SerGoVec
Всем привет!

Есть самостоятельная программа, которая считывает свойства документов Компас-3D (cdw/spw)
и далее производит определенные действия. Программа вызывает API Компас-3D в невидимом режиме,
открывает файлы чертежей/спецификаций только на чтение. Программа написана на delphi.

Изначально подключение к API Компас-3D осуществлялось так:
"...K5 := KompasObject(CreateOleObject('KSINVISIBLE.Application.5'))...", на Компас-3D версии 16.1.
Поскольку 'KSINVISIBLE.Application.5' порождал сторонний от "KOMPAS.Exe" процесс, то получалось
обходить две проблемы:
1.
   Если к документу Компас-3D, скажем спецификация (spw), были подключены, но не найдены
   другие документы (подключенные документы), то запись, типа doc := K7.Documents.Open(cadName, False, True), где
   doc - указатель на объект IKompasDocument, возвращала nil. Указатель doc был равен nil потому, что
   Компас-3D ожидал ответа от пользователя: "Изменены документы, подключенные к спецификации или к ее объектам. Перестроить спецификацию?".
    Так как документ открывался в режиме "невидимки": doc := K7.Documents.Open(cadName, False, True), Компас-3D не получал ответа
   и возвращал nil. Но стоило только сделать открытие документа Компас-3D, типа видимым, с использованием флага ksHideMessageYes:
       "...
         K7.HideMessage := ksHideMessageYes;
         doc := K7.Documents.Open(cadName, True, True);
      ..."
   при том, что используется 'KSINVISIBLE.Application.5' и документ все равно будет невидим, как
   "...doc := K7.Documents.Open(cadName, True, True);..." вернет указатель на документ!
   
2.
   Для запуска 'KSINVISIBLE.Application.5' не требовалось запущенной пользователькой сессии на ОС (Windows)!
   А это особенно актуально при запуске утилиты из под службы Windows:
      сбой сервера -> автоматическая перезагрузка -> выполнение программы (нет нужды порождать пользовательскую сессию)
   
С приходом Компас-3D 17, подключение к API было измено с "...K5 := KompasObject(CreateOleObject('KSINVISIBLE.Application.5'))..."
на "...K5 := KompasObject(CreateOleObject('kompas.Application.5'));..." так как при использовании 'KSINVISIBLE.Application.5'
указатель на документ Компас-3D равен nil!

Вопрос: - возможно ли успешно использовать 'KSINVISIBLE.Application.5 в компас 17 ? (как это сделать)
          - возможно ли подключаться к API Компас-3D "...K5 := KompasObject(CreateOleObject('kompas.Application.5'));..." не под сессией пользователя?

Sabahs

 'KSINVISIBLE.Application.5 в компас 17 - использует лицензию, получить её можно в АСКОН.

SerGoVec