Форум пользователей ПО АСКОН

Профессиональные вопросы => Конструирование => Импорт и экспорт => Тема начата: puyol от 05.03.25, 13:54:53

Название: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: puyol от 05.03.25, 13:54:53
Добрый день, третий день мучаюсь, буду признательна за любую помощь..

Мне нужно из каталога с .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)


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

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

Помогите, пожалуйста, разобраться, к компасу доступ ограниченное время, а нужно сделать..
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: UU от 05.03.25, 14:02:15
Цитата: puyol от 05.03.25, 13:54:53Нашла библиотеку от компаса пакетного сохранения... тоже ни ошибок, ни файлов..
Какую библиотеку нашли и какой Компас?
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: puyol от 05.03.25, 14:10:09
Цитата: UU от 05.03.25, 14:02:15Какую библиотеку нашли и какой Компас?

Компас 23 библиотека с сайта s7.askon 41 версии
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: UU от 05.03.25, 14:16:25
Цитата: puyol от 05.03.25, 14:10:09Компас 23 библиотека с сайта s7.askon 41 версии
Нужно полную ссылку на сайт давать (https://sd7.ascon.ru/Public/Utils/SaveRaster/), хотя и так понятно о чем речь.
На сайте АСКОН, нет библиотеки работающей с Компас V23, соответственно она и не сохраняет.
Версия которая работает с Компас V23, находится здесь - https://forum.ascon.ru/index.php?topic=38319.msg332207#msg332207.
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: Михаил88 от 05.03.25, 14:57:53
У Вас были ошибки в коде. Немного подправил.
Результат работы на скрине.

P.S. А вообще просто купите у UU его прогу SaveRaster не таких она больших денег уж и стоит, чтобы жадничать.
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: puyol от 05.03.25, 15:47:17
Цитата: UU от 05.03.25, 14:16:25Нужно полную ссылку на сайт давать (https://sd7.ascon.ru/Public/Utils/SaveRaster/), хотя и так понятно о чем речь.
На сайте АСКОН, нет библиотеки работающей с Компас V23, соответственно она и не сохраняет.
Версия которая работает с Компас V23, находится здесь - https://forum.ascon.ru/index.php?topic=38319.msg332207#msg332207.

Извините, не знала, что можно ссылки вставлять тут, спасибо за ссылку на библиотеку, как я поняла, Вашу.
Если решат использовать на постоянной основе, возможно, воспользуются.
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: puyol от 05.03.25, 15:57:54
Цитата: Михаил88 от 05.03.25, 14:57:53У Вас были ошибки в коде. Немного подправил.
Результат работы на скрине.

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

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

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

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

Мне хотелось разобраться, почему не работает мой код, я далека от пайтона и еще дальше от Компаса, но после потраченных дней, захотелось все-таки увидеть файлы jpeg) И дело тут не в деньгах)
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: Михаил88 от 05.03.25, 16:00:50
С python, который Вы сами поставите тоже будет работать. Нужно установить библиотеку pywin32. У меня например установлен Python 3.10.11 и все работает.
В комплект поставки с компасом входит Python 3.2.5.
Название: Re: Не могу сохранить в jpeg.. Очень нужна помощь
Отправлено: UU от 05.03.25, 21:06:17
Цитата: puyol от 05.03.25, 15:47:17Извините, не знала, что можно ссылки вставлять тут, спасибо за ссылку на библиотеку, как я поняла, Вашу.
Если решат использовать на постоянной основе, возможно, воспользуются.
Сейчас завершаю тестирование, на найденные ошибки и замену ссылок на переменные в файлах, на ссылки файлов компонентов.
Сохранение в версию 5.11 из версии 23 дичь.
(http:///attach%5D)
(http:///attach%5D)
(http:///attach%5D)
(https://forum.ascon.ru/proxy.php?request=http%3A%2F%2F%5Battach%2520id%3D114414%5Dsr1.png%5B%2Fattach%255D&hash=dc166b24ab158f4557d6578065eb87a4e12a8d0a)