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 );

自定义单位系统不会更改任何 Petrel 模板,也不会添加到 Petrel Explorer 窗口中的模板选项卡中

于 2011-06-12T08:53:53.160 回答