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

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

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

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

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

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

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

Не могу сохранить в jpeg.. Очень нужна помощь

Автор puyol, 05.03.25, 13:54:53

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

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

puyol

Добрый день, третий день мучаюсь, буду признательна за любую помощь..

Мне нужно из каталога с .m3d сохранить каждый файл в .jpeg

Запускаю через внешний python скрипт, библиотеку апи скопировала в папку с пайтоном.

У меня не работает использование API7

То есть вот такой скрипт
   import pythoncom
    from win32com.client import Dispatch, gencache

    KAPI5 = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
    iKompasObject = KAPI5.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(KAPI5.KompasObject.CLSID, pythoncom.IID_IDispatch))

    KAPI7 = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
    iApplication = KAPI7.iApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(KAPI7.IApplication.CLSID, pythoncom.IID_IDispatch))

Вызывает ошибку что у KAPI7 нет атрибута  iApplication

При это с API5 все норм, все свойства и методы доступны.

А вот такая попытка использования API7 говорит, что нет атрибута IKompasDocument2D

# Получим активный документ
kompas_document = iApplication.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)

Попытка скомбинировать два апи не дает успеха:

import pythoncom, os, time
from win32com.client import Dispatch, gencache

def batch_convert_m3d_to_jpeg(input_folder, output_folder):

    kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
    kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))

    KompasAPI7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
    iApplication = Dispatch('Kompas.Application.7')

    documents = iApplication.Documents
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(".m3d"):

            input_path = os.path.join(input_folder, filename)
            #png_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ".png")
            #m3d_path_out = os.path.join(output_folder, filename)
            output_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ".jpeg")

            try:
                doc = documents.Open(input_path, True, False)
                iApplication
                iKompasDocument2D = kompas_object.Document2D()

                #print(dir(kompas6_api5_module))
                if doc:
                    try:
                       Param = iKompasDocument2D.RasterFormatParam
                       print(dir(Param))
                       Param.format = 2
                       iKompasDocument2D.SaveAsToRasterFormat(output_path, Param)

                    except Exception as e:
                        print(f"SaveAs: {e}")
                    iKompasDocument2D.Close(0)
                else:
                    print("!")
            except Exception as e:
                print("{e}")

input_folder = r"C:\Users\puyols\3d"
output_folder = r"C:\Users\puyols\3d_out"

if not os.path.exists(output_folder):
    os.makedirs(output_folder)
    print("{output_folder}")

batch_convert_m3d_to_jpeg(input_folder, output_folder)


Не вываливается в исключения, но в и папке пусто...
(это примерный код, я очень много его меняла, но какая-то версия не выдавала ошибки, но и джпега не было)

Нашла библиотеку от компаса пакетного сохранения... тоже ни ошибок, ни файлов..

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

UU

Цитата: puyol от 05.03.25, 13:54:53Нашла библиотеку от компаса пакетного сохранения... тоже ни ошибок, ни файлов..
Какую библиотеку нашли и какой Компас?
+ Благодарностей: 1

puyol

Цитата: UU от 05.03.25, 14:02:15Какую библиотеку нашли и какой Компас?

Компас 23 библиотека с сайта s7.askon 41 версии

UU

#3
Цитата: puyol от 05.03.25, 14:10:09Компас 23 библиотека с сайта s7.askon 41 версии
Нужно полную ссылку на сайт давать, хотя и так понятно о чем речь.
На сайте АСКОН, нет библиотеки работающей с Компас V23, соответственно она и не сохраняет.
Версия которая работает с Компас V23, находится здесь - https://forum.ascon.ru/index.php?topic=38319.msg332207#msg332207.

Михаил88

У Вас были ошибки в коде. Немного подправил.
Результат работы на скрине.

P.S. А вообще просто купите у UU его прогу SaveRaster не таких она больших денег уж и стоит, чтобы жадничать.
+ Благодарностей: 1

puyol

Цитата: UU от 05.03.25, 14:16:25Нужно полную ссылку на сайт давать, хотя и так понятно о чем речь.
На сайте АСКОН, нет библиотеки работающей с Компас V23, соответственно она и не сохраняет.
Версия которая работает с Компас V23, находится здесь - https://forum.ascon.ru/index.php?topic=38319.msg332207#msg332207.

Извините, не знала, что можно ссылки вставлять тут, спасибо за ссылку на библиотеку, как я поняла, Вашу.
Если решат использовать на постоянной основе, возможно, воспользуются.

puyol

Цитата: Михаил88 от 05.03.25, 14:57:53У Вас были ошибки в коде. Немного подправил.
Результат работы на скрине.

P.S. А вообще просто купите у UU его прогу SaveRaster не таких она больших денег уж и стоит, чтобы жадничать.

Спасибо Вам огромное!!!

Действительно, если добавить константы и запускать через встроенный пайтон(через внешний не работает), то можно обратиться к IKompasDocument3D()
ну и за исправление остальных ошибок)

Про программу пакетного сохранения, узнала только вечером вчера после нескольких дней мучений)), и сегодня узнала от UU, что есть работающая для версии 23

Мне хотелось разобраться, почему не работает мой код, я далека от пайтона и еще дальше от Компаса, но после потраченных дней, захотелось все-таки увидеть файлы jpeg) И дело тут не в деньгах)

Михаил88

С python, который Вы сами поставите тоже будет работать. Нужно установить библиотеку pywin32. У меня например установлен Python 3.10.11 и все работает.
В комплект поставки с компасом входит Python 3.2.5.

UU

#8
Цитата: puyol от 05.03.25, 15:47:17Извините, не знала, что можно ссылки вставлять тут, спасибо за ссылку на библиотеку, как я поняла, Вашу.
Если решат использовать на постоянной основе, возможно, воспользуются.
Сейчас завершаю тестирование, на найденные ошибки и замену ссылок на переменные в файлах, на ссылки файлов компонентов.
Сохранение в версию 5.11 из версии 23 дичь.