如何在Petrel中添加自定义单位?

时间:2011-06-09 19:32:12

标签: ocean petrel

我想通过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 and Integrate方法中。 在这两种情况下,Ocean都会抛出SEHException。

知道出了什么问题?

1 个答案:

答案 0 :(得分: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窗口的“模板”选项卡中