1

Ocean を介して、Petrel のカスタム ユニット システムにカスタム ユニットを追加したいと考えています。
開発者ガイドで提案されているように、次のコードを使用しました。

IUnitService unitService = Slb.Ocean.Core.CoreSystem.GetService(); 
IUnitCatalog catalog = unitService.GetCatalog(null); 
System.Collections.Generic.IDictionary map = 
       new System.Collections.Generic.Dictionary(); 
map["Pressure"] = "MyUnit"; 
catalog.CreateCustomUnitSystem("My UnitSystem", 
                               "UnitSystem for my additional units.", 
                                map, 
                                "MyUnitSystem"); 

そのコードを Initialize メソッドと Integrate メソッドに入れました。どちらの場合も、Ocean は SEHException をスローします。

何がうまくいかないのですか?

4

1 に答える 1

2

作成するカスタム単位系は、既存の単位系に基づいている必要があります。
CreateCustomUnitSystem メソッドでは、既存の単位系名が参照系として使用されます。
既存の単位系には、IUnitServiceSettings から使用できる Canonical および Display 単位系が含まれます。
カスタム単位系を作成するコードの例を次に示します。

IUnitService unitService = CoreSystem.GetService( );
IUnitCatalog catalog = unitService.GetCatalog( null );
IUnitServiceSettings uss = CoreSystem.GetService( );
IUnitSystem refSystem = uss.InvariantSystem;
IDictionary map = new Dictionary( );
map["Pressure"] = "MyUnit";
ICustomUnitSystem myUnitSystem = catalog.CreateCustomUnitSystem( "My UnitSystem", "Unit System for my additional units.", map, refSystem.Name );

カスタム単位系はペトレル テンプレートを変更せず、ペトレル エクスプローラー ウィンドウの [テンプレート] タブにも追加されません。

于 2011-06-12T08:53:53.160 に答える