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

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

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

Регистрация будет доступна с 8:00 (мск) 12 января.

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

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

Получение данных из чертежей .cdw через клиентское API ЛОЦМАН

Автор SadMan, 04.02.26, 09:48:31

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

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

SadMan

Здравствуйте.
Я начинаю изучать клиентское API системы ЛОЦМАН:PLM. Возник конкретный практический вопрос, направление для решения которого в документации найти не удалось.

Описание ситуации:
В базе ЛОЦМАН существует сборочная единица, связанная с комплексом чертежей в формате .cdw.
Цель — программно получить данные из свойств элементов в этих чертежах (например, поле Position).

Ключевой вопрос:
Каким способом это корректнее и надежнее реализовать в контексте ЛОЦМАН?

1. Использование API ЛОЦМАН: Можно ли для этой задачи использовать клиентское API ЛОЦМАН, в частности, механизм интеграторов (прокси) или метод IntegratorReadDoc, чтобы система сама обработала файл и вернула данные? Если да, то в каком виде эти данные возвращаются и какие есть примеры или ограничения?

2. Прямая работа с API КОМПАС-3D: Или единственный верный путь — это фоновый запуск КОМПАС-3D (который и так вызывается из ЛОЦМАН для открытия файла) и использование его API (например, через IKompasAPIObject) для чтения нужных свойств напрямую из .cdw-файла?

Интересует именно архитектурный подход, принятый в практике внедрения. Любые ссылки на документацию, примеры кода или аналогичные обсуждения будут очень полезны. Спасибо!

SadMan

Я разобрался, всё таки нужно это делать через КОМПАС.
И запускать его в фоновом режиме, получая интерфейс для работы с API.

Вот пример "тихого" запуска с получением интерфейсов:

Type typeFromProgID = Type.GetTypeFromProgID("KOMPAS.Application.5", throwOnError: false);
if (!(typeFromProgID == null))
{
    object obj = Activator.CreateInstance(typeFromProgID);
    app5 = obj as KompasObject;
    app7 = (dynamic)app5.ksGetApplication7();
}

lavgirb

Цитата: SadMan от 05.02.26, 15:50:52Я разобрался, всё таки нужно это делать через КОМПАС.
И запускать его в фоновом режиме, получая интерфейс для работы с API.
КОМПАС не обязательно запускать в скрытом режиме.
Иногда, все-таки удобно, чтоб его было видно. Это информация о том, что КОМПАС загружен и с ним идет работа.
Или можно подключиться к уже открытому пользователем КОМПАС.
В скрытом режиме можно подгружать файлы для считывания их данных.
На мой взгляд.