我想通过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。
知道出了什么问题?
答案 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窗口的“模板”选项卡中