Как добавить пользовательские юниты в Petrel with Ocean? - PullRequest
1 голос
/ 09 июня 2011

Я хочу добавить пользовательские единицы в систему пользовательских единиц Petrel через Ocean.
Как предлагается в руководстве для разработчиков, я использовал следующий код:

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 иИнтегрировать методы.В обоих случаях Ocean генерирует исключение SEHException.

Есть идеи, что не так?

1 Ответ

2 голосов
/ 12 июня 2011

Пользовательская система единиц, которую вы создаете, должна основываться на существующей системе единиц.
Имя существующей системы единиц измерения используется в качестве системы отсчета в методе CreateCustomUnitSystem.
Существующие системы единиц включают системы единиц Canonical и Display, которые доступны от IUnitServiceSettings.
Вот пример кода, который создает пользовательскую систему единиц:

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»

...