Python 使用comtypes创建COM对象

Python 使用comtypes创建COM对象,python,comtypes,Python,Comtypes,我正在尝试将一些旧的VBA代码移植到Python 在VBA中,我添加Geo3D.dll作为项目参考,然后使用以下内容: Set P1 = New GEO3DLib.Point P1.Set 1, 2, 3, 0.001 在Python中,我尝试了以下方法: import comtypes import comtypes.client as cc cc.GetModule('C:\\Program Files (x86)\\think3\\2009.3\\thinkdesign\\bin\\Ge

我正在尝试将一些旧的VBA代码移植到Python

在VBA中,我添加
Geo3D.dll
作为项目参考,然后使用以下内容:

Set P1 = New GEO3DLib.Point
P1.Set 1, 2, 3, 0.001
在Python中,我尝试了以下方法:

import comtypes
import comtypes.client as cc
cc.GetModule('C:\\Program Files (x86)\\think3\\2009.3\\thinkdesign\\bin\\Geo3d.dll')
import comtypes.gen.GEO3DLib as Geo3d
pt = cc.CreateObject('Geo3d.Point', None, None, Geo3d.Point)
但我得到了这个错误:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    pt = cc.CreateObject('Geo3d.Point', None, None, Geo3d.Point)
  File "C:\Anaconda3\lib\site-packages\comtypes\client\__init__.py", line 238, in CreateObject
    obj = comtypes.CoCreateInstance(clsid, clsctx=clsctx, interface=interface)
  File "C:\Anaconda3\lib\site-packages\comtypes\__init__.py", line 1217, in CoCreateInstance
    iid = interface._iid_
AttributeError: type object 'Point' has no attribute '_iid_'
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    pt.Set(1., 2., 3., 0.001)
AttributeError: type object 'Point' has no attribute 'Set'
我得到这个错误:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    pt = cc.CreateObject('Geo3d.Point', None, None, Geo3d.Point)
  File "C:\Anaconda3\lib\site-packages\comtypes\client\__init__.py", line 238, in CreateObject
    obj = comtypes.CoCreateInstance(clsid, clsctx=clsctx, interface=interface)
  File "C:\Anaconda3\lib\site-packages\comtypes\__init__.py", line 1217, in CoCreateInstance
    iid = interface._iid_
AttributeError: type object 'Point' has no attribute '_iid_'
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    pt.Set(1., 2., 3., 0.001)
AttributeError: type object 'Point' has no attribute 'Set'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
零件组(1,2,3,0.001)
AttributeError:类型对象“点”没有属性“集”

有什么想法吗?

请确认python实现和thinkdesign库是为相同的平台类型编译的:64位或32位

我测试如下:

>>> p=Dispatch('Geo3d.Point')
>>> p
<win32com.gen_py.think3 thinkdesign Type Library.IPoint instance at 0x59554312>
>>> p.Set(0,0,0)
>>> p.X
0.0