Как проверить открыт ли файл КОМПАС?

Автор SergNLMK, 18.03.23, 12:28:02

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

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

SergNLMK

Здравствуйте!
Есть задача проверить, открыт ли файл КОМПАС, на который имеется полный путь.

Это нужно для того, чтобы во время пакетной обработки файлов лишний раз не открывать их. А если они открыты, то не закрывать, чтобы пользователь мог продолжать с ними работать.

Задача, я считаю, популярная, но на форуме не нашел никакой информации по этому вопросу...  :cl:

Подскажите, пожалуйста, есть ли возможность проверки открыт ли файл КОМПАС?
Есть ли обсуждения на эту тему на форуме?

Михаил88

18.03.23, 13:02:29 #1 Последнее редактирование: 18.03.23, 13:25:40 от Михаил88
Цитата: SergNLMK от 18.03.23, 12:28:02Подскажите, пожалуйста, есть ли возможность проверки открыт ли файл КОМПАС?

# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(
    Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID,
                                                            pythoncom.IID_IDispatch))
documents = application.Documents
document = documents.Item(r"C:\Users\User\Desktop\Стенка.m3d")
print(document)

Если возвращается None, то документа в открытых файлах нет.
+ Благодарностей: 1

SergNLMK

Цитата: Михаил88 от 18.03.23, 13:02:29# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(
    Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID,
                                                            pythoncom.IID_IDispatch))
documents = application.Documents
document = documents.Item(r"C:\Users\User\Desktop\Стенка.m3d")
print(document)

Если возвращается None, то документа в открытых файлах нет.

Спасибо! Получилось!
Единственная проблема была - не срабатывал скрипт из-за слэшей. У меня они прямые.
Решил следующим способом:
document = documents.Item(path.replace('/', '\\'))