【发布时间】:2015-06-17 04:59:09
【问题描述】:
我正在尝试将一些旧的 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_'
将最后一行替换为:
pt = Geo3d.Point
pt.Set(1., 2., 3., 0.001)
我收到此错误:
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'
有什么想法吗?
【问题讨论】: