• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

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

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

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

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'));..." не под сессией пользователя?

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

SerGoVec