Python 从com定义的类型创建com_记录对象
我刚刚开始使用win32com.client模块尝试编写一个Python程序,该程序使用COM接口来控制MicroStation,这与我从Excel控制MicroStation的方式非常相似 我的问题是创建COM库中定义的类型的对象,即COM_记录,在我的例子中是Point3d。Point3d基本上是一个由3个双X,Y,Z组成的C结构Python 从com定义的类型创建com_记录对象,python,win32com,Python,Win32com,我刚刚开始使用win32com.client模块尝试编写一个Python程序,该程序使用COM接口来控制MicroStation,这与我从Excel控制MicroStation的方式非常相似 我的问题是创建COM库中定义的类型的对象,即COM_记录,在我的例子中是Point3d。Point3d基本上是一个由3个双X,Y,Z组成的C结构 struct Point3d { double X; double Y; double Z; } 在Excel中,在引用Microsta
struct Point3d {
double X;
double Y;
double Z;
}
在Excel中,在引用MicrostationDGN库后,我可以访问Point3d数据类型,并且可以轻松地将带有Dim newpoint的新变量定义为Point3d
如何在Python中实现同样的功能
谢谢
另外,我尝试创建一个C结构,但这给了我一个错误
from ctypes import Structure, c_double
class Point3d(Structure):
_fields_ = [('X', c_double),
('Y', c_double)]
startPoint = Point3d()
startPoint.X = 1
startPoint.Y = 1
TypeError: Only com_record objects can be used as records
你在找我
从文档中(粗略地)引用,您需要:
Point3d = namedtuple('Point3d', ['x', 'y', 'z'])
我从图书馆的作者那里找到了这个:
r = win32com.client.Record("RecordName", object)
其中“RecordName”是记录的名称,“object”是&any*
在同一类型库中定义的COM对象
我找不到这种类型的对象来实例化所描述的com_记录,但我设法找到了一个返回所需对象的函数
startPoint = MS.Point3dFromXYZ(2.0,2.0,0.0)
我在这里找到了一些信息,但是我仍然不知道如何制作我需要的com_记录对象。谢谢你的回复!我刚试过,但它产生了同样的错误。。。TypeError:只有com_记录对象可以用作记录库。我试图引导您远离ctypes,转向纯python(命名为tuple)方法。但是,如果您计划将生成的点对象传递给您的问题中未提及的一些例程,那么是的,您必须遵循该接口的文档。您在评论中提到一个URL,建议使用windows特定的COM支持,而不是python的可移植ctypes支持。