我刚刚开始使用win32com.client模块尝试编写一个使用COM接口来控制MicroStation的Python程序,就像我以前从Excel控制MicroStation一样。
我遇到的问题是创建一个在COM库中定义的类型的对象,一个com_record,在我的例子中是一个Point3d。 Point3d基本上是3个双X,Y,Z的C结构。
struct Point3d {
double X;
double Y;
double Z;
}
在引用MicrostationDGN库后的Excel中,我可以访问Point3d数据类型,并可以使用Dim newpoint As Point3d
轻松定义新变量
我怎样才能在Python中做同样的事情?
谢谢,
PS。我尝试过创建一个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
答案 0 :(得分:0)
答案 1 :(得分:0)
我是从图书馆作者那里找到的:
r = win32com.client.Record("RecordName", object)
其中" RecordName"是记录的名称,'对象'是& any * COM对象在同一类型库中定义。
https://mail.python.org/pipermail/python-list/2003-August/214888.html
我找不到那种类型的对象来实例化描述的com_record,但我设法找到一个返回我需要的对象的函数。
startPoint = MS.Point3dFromXYZ(2.0,2.0,0.0)