Интерфейс IAdditionConvertParameters

Автор ЕК, 13.03.26, 15:42:48

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

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

ЕК

Не получается использовать свойства интерфейса IAdditionConvertParameters. Вот часть кода:

iKompasDocument1 = KompasAPI7.IKompasDocument1(KompasDocument)
iAdditionConvertParameters = iKompasDocument1.GetInterface(10131) #см. KompasAPIObjectTypeEnum
iAdditionConvertParameters.Format = 4
iAdditionConvertParameters.TopolgyIncluded = False

Интерфейс получаю, а не использовать не могу. В чем может быть проблема?

Student2025

А, так?

iKompasDocument1 = KompasAPI7.IKompasDocument1(KompasDocument)
iAdditionConvertParameters = iKompasDocument1.GetInterface(10131) #см. KompasAPIObjectTypeEnum
iAdditionConvertParameters = KompasAPI7.IAdditionConvertParameters(iAdditionConvertParameters)
iAdditionConvertParameters.Format = 4
iAdditionConvertParameters.TopolgyIncluded = False

Student2025

Это бессмысленный путь и с объектом iAdditionConvertParameters  не чего не сможете сделать хоть в справке написано что можете использовать в качестве аргумента для ksDocument3D:SaveAsToAdditionFormat  - не чего не происходит

Doc3D = api5.ActiveDocument3D()

iDoc = api7.ActiveDocument
iDoc1 = KAPI7.IKompasDocument1(iDoc)

iAddConvParam = iDoc1.GetInterface(const_.ksObjectAdditionConvertParameters)
iAddConvParam = KAPI7.IAdditionConvertParameters(iAddConvParam)

iAddConvParam.Format = const_.ksConverterToIGES

iAddConvParam.TopolgyIncluded = False

#запись происходит
ok = iAddConvParam.SaveConfigurationFile("./vb.txt")

# не чего не происходит
Doc3D.SaveAsToAdditionFormat(r"./vb.igs", iAddConvParam)

+ Благодарностей: 1

ЕК

Получается с расширенными параметрами сохранения в IGES через API7 работать не получится?

p3452

А чем, Вас всех, не устраивает SaveAs... и КУЧА доступных форматов!?

Student2025

Цитата: ЕК от 16.03.26, 07:53:39IGES через API7 работать не получится?

Да, выходит что так. У API5 можно.

Slaviation

Добрый день.
Пример во вложении. Запускать на активном 3d документе.
+ Благодарностей: 1

ЕК

Попробовал разобраться. Написал на основе вашего кода, но не работает. В чем может быть проблема?
# -*- coding: utf-8 -*-
#|Сохранение в IGES

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

#  Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

# Подключим описание интерфейсов API5
KompasAPI5 = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
KompasObject = Dispatch('Kompas.Application.5')

# Подключим описание интерфейсов API7
KompasAPI7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
Application = Dispatch('Kompas.Application.7')

# Получим активный документ
KompasDocument = Application.ActiveDocument
KompasDocument3D = KompasAPI7.IKompasDocument3D(KompasDocument)

# Преобразование из API7 в API5
ks_document_3d = KompasObject.TransferInterface(KompasDocument3D, kompas6_constants.ksAPI5Auto, kompas6_constants_3d.o3d_document)

# Получим интерфейс AdditionFormatParam
ks_addition_format_param = ks_document_3d.AdditionFormatParam()

# Параметры сохранения в IGES
ks_addition_format_param = kompas6_constants_3d.format_IGES
ks_addition_format_param.topolgyIncluded = 0

# Сохраняем файл IGES
iges_file_name = os.path.dirname(os.path.abspath(KompasDocument.PathName)) + "\\" + os.path.basename(KompasDocument.PathName) + ".iges"
ks_document_3d.SaveAsToAdditionFormat(iges_file_name, ks_addition_format_param)

dimak222

Цитата: ЕК от 17.03.26, 09:30:03ks_addition_format_param = kompas6_constants_3d.format_IGES
Тут ошибка, нет ".format".

И можно не использовать константы:
# -*- coding: utf-8 -*-
#|Сохранение в IGES

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

# Подключим описание интерфейсов API5
KompasAPI5 = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0) # API5 КОМПАСа
KompasObject= Dispatch("Kompas.Application.5", None, KompasAPI5.KompasObject.CLSID) # интерфейс API КОМПАС

# Подключим описание интерфейсов API7
KompasAPI7 = gencache.EnsureModule('{69AC2981-37C0-4379-84FD-5DD2F3C0A520}', 0, 1, 0)
Application = Dispatch('Kompas.Application.7')

# Получим активный документ
KompasDocument = Application.ActiveDocument
KompasDocument3D = KompasAPI7.IKompasDocument3D(KompasDocument)

# Преобразование из API7 в API5
ks_document_3d = KompasObject.TransferInterface(KompasDocument3D, 1, 103) # преобразуем в API5 # см. ksObj3dTypeEnum

# Получим интерфейс AdditionFormatParam
ks_addition_format_param = ks_document_3d.AdditionFormatParam()

# Параметры сохранения в IGES
ks_addition_format_param.format = 4
ks_addition_format_param.topolgyIncluded = 0

# Сохраняем файл IGES
iges_file_name = os.path.dirname(os.path.abspath(KompasDocument.PathName)) + "\\" + os.path.basename(KompasDocument.PathName) + ".iges"
ks_document_3d.SaveAsToAdditionFormat(iges_file_name, ks_addition_format_param)
+ Благодарностей: 1

Student2025

Цитата: dimak222 от 17.03.26, 14:44:40И можно не использовать константы:
Не думаю что это лучшая практика, ведь константы могут поменять порядок исчисления и ошибку потом не просто поймать.