首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Petrel 2011 DialogBuilder.ShowSettings on a Process

Petrel 2011 DialogBuilder.ShowSettings on a Process
EN

Stack Overflow用户
提问于 2012-08-22 18:34:58
回答 1查看 167关注 0票数 0

更新:进程需要先设置为活动对象。THe的新问题是如何做到这一点。

代码语言:javascript
复制
PetrelSystem.ActiveObjectService.GetActiveObject<Process>()

上面的调用不起作用。有没有其他方法可以为进程设置活动对象?在流程树中似乎没有一个流程的类型,所以我怀疑任何使用泛型的东西都不会起作用。

老问题:使用API调用DialogBuilder.ShowSettings(object domainObject)启动进程的设置对话框时遇到问题。它似乎适用于导入数据流程,但我无法让它启动任何其他对话框。

我尝试遍历进程树以获取进程域对象,并尝试使用PetrelSystem.ProcessDiagram.FindProcess(string名称获取进程。当传递到DialogBuilder.ShowSettings中时,两者具有相同的结果。

这是2011年API的已知问题吗?

这就是我遍历树的方式

代码语言:javascript
复制
 IObservableElementEnumerableFactory service = CoreSystem.GetService<IObservableElementEnumerableFactory>(PetrelProject.Processes);
 IObservableElementEnumerable elemEnum = service.GetEnumerable(PetrelProject.Processes);

        indentLevel++;
        if (elemEnum != null)
        {
            foreach (object obj in elemEnum)
            {
                var cmo = cmoMananeger.CreateCMO(obj, addText, indentLevel);
                //add it to tree then add its children
                if (cmo != null)
                {
                    if (indentLevel > 0)
                    {
                        comboBox1.Items.Add(cmo);
                        processToCMO.Add(cmo, obj);
                    }
                    traverseTree(obj, indentLevel, addText);
                }
            }
        }
        indentLevel--;

然后尝试在以下情况下启动该进程

代码语言:javascript
复制
  var process = processToCMO[comboBox1.SelectedItem as ContextMenuObject];
  if (!PetrelSystem.DialogBuilder.IsSettingsVisible(process))
        PetrelSystem.DialogBuilder.ShowSettings(process);

这就是我试图通过find process方法启动进程的方式

代码语言:javascript
复制
var PROCESS = PetrelSystem.ProcessDiagram.FindProcess((comboBox1.SelectedItem as ContextMenuObject).DisplayText);
        if (PROCESS != null)
        {
            if (!PetrelSystem.DialogBuilder.IsSettingsVisible(PROCESS))
                PetrelSystem.DialogBuilder.ShowSettings(PROCESS);
        }

我使用的方法适用于其他窗格,如输入和模型。它只是进程窗格有问题。

为你的帮助干杯!

EN

回答 1

Stack Overflow用户

发布于 2012-08-29 04:17:46

IProcessDiagram.ActiveProcess属性获取或设置活动进程。

我编写了一个注册ActiveProcessChanged事件的简单测试,当最终用户选择一个不同的进程时,事件处理程序会显示该进程的设置对话框。这适用于我尝试过的~10原生Petrel进程。我在2011.22012上都进行了测试。

代码语言:javascript
复制
PetrelSystem.DialogBuilder.ShowSettings(PetrelSystem.ProcessDiagram.ActiveProcess);

问候你,Delaina

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

https://stackoverflow.com/questions/12071248

复制
相关文章

相似问题

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