2012-01-11 7 views
0

IronPythonを使用して、一部のCADソフトウェアMicroStationでCOM相互運用機能DLLを使用して自動化しようとしています。オブジェクトから「カスタムタイプ」を取得しようとすると、ValueErrorsがスローされます。私の迅速なコードは以下の通りです:IronPythonから管理値クラスへのマッピング

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:指定されたレコードは、管理値クラスにマッピングすることはできません。

>>> test = Point3d() 
>>> Point3d.X.SetValue(test, 1) 
>>> Point3d.Y.SetValue(test, 1) 
>>> elem.Origin = test 
>>> elem.Rewrite() 

私は要素の起源値を「セット」することができる午前:

elem.Originは、私がこれを行う場合は、...私に

をPoint3dとオブジェクトを与える必要があります。 (そして、私はCADソフトウェアで要素の原点が移動したことを確認できます)。

私はいくつかの単純なCOM/IronPythonのものが欠けていると確信していますが、私はドキュメントを見て、何も私に飛び出しません。

助けていただけたら幸いです!

答えて

0

Ah!私はこれを読んで:

http://support.microsoft.com/kb/811445

私は最初のタイプを登録する必要がありました!今

C:\Windows\Microsoft.NET\Framework\v4.0.30319>regasm "C:\Program Files (x86)\Ben 
tley\MicroStation V8i (SELECTseries)\MicroStation\assemblies\bentley.interop.mic 
rostationdgn.dll" 
Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1 
Copyright (C) Microsoft Corporation 1998-2004. All rights reserved. 

Types registered successfully 

C:\Windows\Microsoft.NET\Framework\v4.0.30319> 

>>> elem.Origin 
<Bentley.Interop.MicroStationDGN.Point3d object at 0x000000000000002E [Bentley.Interop.MicroStationDGN.Point3d]> 
>>> elem.Origin.X 
1.0 

恐ろしいだから私は、これを実行します。

関連する問題