Создание чертежа средствами API5

Автор Ratcatcherzz, 08.05.19, 14:43:38

« предыдущая - следующая »

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

Ratcatcherzz

Начал читать книжку Норсеева С.А. "Разработка приложений под компас в Delphi" пытаясь
переработать приведенные в ней примеры для Python. При попытке создать чертеж средствами API5
при выполнении кода:

import pythoncom
from win32com.client import Dispatch, gencache

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


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

#Создаем документ
DocumentParam = module5.ksDocumentParam(kompas.GetParamStruct(kompas6_constants.ko_DocumentParam))
DocumentParam.Init()
DocumentParam.type = kompas6_constants.ksDocumentDrawing

Document2D = module5.ksDocument2D(kompas.Document2D)

Document2D.ksCreateDocument(DocumentParam)


kompas.Visible = True

'''

столкнулся со следующей проблемой:

Traceback (most recent call last):
  File "F:\WPy-3670\notebooks\api_kompas3\my_api_kompas10.py", line 19, in <module>
    Document2D.ksCreateDocument(DocumentParam)
  File "C:\Users\ratca\AppData\Local\Temp\gen_py\3.7\0422828C-F174-495E-AC5D-D31014DBBE87x0x1x0.py", line 5828, in ksCreateDocument
    return self._oleobj_.InvokeTypes(152, LCID, 1, (11, 0), ((9, 0),),par
AttributeError: 'function' object has no attribute 'InvokeTypes'


Что не так со строчкой "Document2D.ksCreateDocument(DocumentParam)"?
Заранее спасибо за любую помощь :)

Вират Лакх

С этой строчкой всё нормально.
Ошибка в строке Document2D = module5.ksDocument2D(kompas.Document2D) - не хватает скобок (метод, а не свойство): Document2D()
И с применением константы ksDocumentDrawing что-то не то. В сдк для ksDocumentParam другое написано.
Можно было попроще написать код:

from win32com.client import Dispatch, gencache
KompasConst = gencache.EnsureModule('{75C9F5D0-B5B8-4526-8681-9903C567D2ED}', 0, 1, 0).constants
KompasObject = Dispatch('Kompas.Application.5', None, '{E36BC97C-39D6-4402-9C25-C7008A217E02}')
ksDocumentParam = KompasObject.GetParamStruct(KompasConst.ko_DocumentParam)
ksDocumentParam.type = 3
ksDocument2D = KompasObject.Document2D()
ksDocument2D.ksCreateDocument(ksDocumentParam)