Я пытаюсь использовать IronPython для автоматизации некоторых приложений CAD MicroStation через COM Interop DLL. Когда я пытаюсь получить «пользовательский тип» от объекта, он выдает мне ValueErrors. Мой быстрый код ниже:
import sys, clr, System, os
sys.path.append("C:\\Program Files (x86)\\Bentley\\MicroStation V8i (SELECTseries)\\MicroStation\\assemblies")
clr.AddReferenceToFile("bentley.interop.microstationdgn.dll")
from Bentley.Interop.MicroStationDGN import Application, Point2d, Point3d, TextElement
t = System.Type.GetTypeFromProgID("MicroStationDGN.Application")
ms = System.Activator.CreateInstance(t)
elem = ms.ActiveDesignFile.GetElementByID64(509)
coord = elem.Origin
ValueError: указанная запись не может быть сопоставлена с классом управляемого значения.
elem.Origin должен дать мне объект Point3d ...
Однако, если я сделаю это:
>>> test = Point3d()
>>> Point3d.X.SetValue(test, 1)
>>> Point3d.Y.SetValue(test, 1)
>>> elem.Origin = test
>>> elem.Rewrite()
Я могу установить исходное значение элемента. (и я могу проверить в программном обеспечении САПР, что источник элемента сместился).
Я уверен, что мне не хватает какой-то простой вещи COM / IronPython, но я просмотрел документы, и ничего не выпрыгнуло на меня.
Буду признателен за любую помощь!