我目前正在开发一个插件,我需要在其中获取 petrel 中的当前单位系统(即在现场或公制系统中)。如何得到它?
问问题
290 次
2 回答
1
获取不变单位(单位数据存储在):
var invUnit = PetrelUnitSystem.GetInvariantUnit(someTemplate);
要获取系统/项目当前正在使用的单元:
var dispUnit = PetrelUnitSystem.GetDisplayUnit(someTemplate);
在它们之间转换的转换器。
var convInvDisp = PetrelUnitSystem.GetConverter(invUnit, dispUnit);
var fahrenheit=convInvDisp.Convert(100);
于 2014-04-15T11:02:10.807 回答
1
您是指模拟案例的单位系统(字段或公制)吗?
恐怕“模拟单元”没有通过 Ocean API 公开。
但是,您可以通过检查 ECLIPSE 卡片组中是否存在 FIELD 或 METRIC 关键字来测试每个(导出的)模拟案例是 FIELD 还是 METRIC。
以下代码段将遍历案例并输出它们是 FIELD 还是 METRIC。
using (ITransaction trans = DataManager.NewTransaction())
{
SimulationRoot SimRoot = SimulationRoot.Get(PetrelProject.PrimaryProject);
foreach (Case Case in SimRoot.Cases)
{
EclipseKeywordEditor editor = SimulationSystem.CreateEclipseKeywordEditor(Case);
trans.Lock(editor);
foreach (EclipseKeyword keyword in editor.Sections.RunSpec.GetAll("FIELD"))
{
// found FIELD keyword
PetrelLogger.InfoOutputWindow(String.Format("### Case {0} is FIELD", Case.Name));
}
foreach (EclipseKeyword keyword in editor.Sections.RunSpec.GetAll("METRIC"))
{
// found METRIC keyword
PetrelLogger.InfoOutputWindow(String.Format("### Case {0} is METRIC", Case.Name));
}
}
trans.Commit();
}
于 2014-04-23T13:34:51.877 回答