首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用海洋复制Petrel中的物品?

用海洋复制Petrel中的物品?
EN

Stack Overflow用户
提问于 2014-06-16 10:56:31
回答 1查看 277关注 0票数 1

在Petrel中,是否可以使用海洋在输入树中复制粘贴项?我需要一个特定的油井或战略的副本,我如何做到这一点?

例如,如果我想要这个井(MyWell)的副本:

代码语言:javascript
复制
  Tubing = e.Data.GetData(typeof(TubingString)) as TubingString;
  Borehole myWell=Tubing.Borehole;

我的无聊(博霍尔):

代码语言:javascript
复制
  WellRoot Welrot = Slb.Ocean.Petrel.DomainObject.Well.WellRoot.Get(PetrelProject.PrimaryProject); 
  BoreholeCollection Borhol = Welrot.BoreholeCollection;

或者拥有DevelopmentStrategy (OldStrategy)的副本:

代码语言:javascript
复制
  EclipseFormatSimulator.Arguments args=WellKnownSimulators.ECLIPSE100.GetEclipseFormatSimulatorArguments(theCase);
  DevelopmentStrategy oldStrategy=args.Strategies.DevelopmentStrategies.First();

转到DevelopmentStrategyCollection (策略性):

代码语言:javascript
复制
  SimulationRoot simroot = SimulationRoot.Get(PetrelProject.PrimaryProject);
  DevelopmentStrategyCollection strategycol=simroot.DevelopmentStrategyCollection;
EN

回答 1

Stack Overflow用户

发布于 2014-07-15 14:11:01

许多在Petrel中具有复制/粘贴功能的域对象实现了一个名为ICopyable的接口。然而,我不认为这是一致的所有领域对象。复制/粘贴域对象的一种更可靠的方法是通过使用ICopyableFactory服务。

代码语言:javascript
复制
Borehole borehole = ...;

ICopyable copyable = borehole as ICopyable;

if (copyable == null)
{
    ICopyableFactory factory = CoreSystem.GetService<ICopyableFactory>(borehole);
    copyable = factory.GetCopyable(borehole);
}

if (copyable != null)
{
    IDataSourceManager sourceMgr = ...;
    IDataSourceManager targetMgr = ...;
    IProjectInfo sourceProjectInfo = ...;
    IProjectInfo targetProjectInfo = ...;
    ICoordinateReferenceSystem sourceCrs = ...;
    ICoordinateReferenceSystem targetCrs = ...;
    ICoordinateOperation coordinateOperation = ...;
    CopyContext.Element ignoreElements = ...;
    CopyContext.Identify identity = ...;
    object targetCollection = ...;
    object snapshot = copyable.GetSnapshot();

    CopyContext context = new CopyContext(sourceMgr, targetMgr,
        sourceProjectInfo, targetProjectInfo, sourceCrs, targetCrs
        coordinateOperation, ignoreElements, identity, targetCollection,
        snapshot);

    Borehole copy = copyable.Copy(context) as Borehole;
}

ICopyable.Copy需要很多参数,因为该方法也用于参考项目工具(用于在项目之间复制域对象)。如果要在同一个项目中复制域对象,则所有相关的源/目标属性都将是相同的(即targetMgr = sourceMgr)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24242116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档