问题标签 [ocean]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

ocean - Plugin.ImageResourceName 似乎没有任何效果

如果 Petrel 插件管理器可以为我们的每个插件显示我们的自定义位图,那就太好了 - 但是,该Plugin.ImageResourceName属性似乎没有任何效果。

图像已正确嵌入(根据文档和 ILDisAsm) - 但插件管理器坚持使用通用图像。对尺寸或格式是否有未记录的要求?文档中的代码片段同时提到了 bmp 和 png,但没有证明该属性确实有效。

我无法在 SDK(仅模块示例)和代码示例下载(这里有几个插件,但它们为资源名称返回 null)中找到实际运行的示例。

任何人都可以提供工作样本或丢失的密钥吗?

0 投票
2 回答
607 浏览

wix - 用于部署 Petrel 插件的 Windows Installer XML (WiX) 模板或指南?

是否有任何模板或指南可用于创建用于部署 Petrel 插件的 Windows Installer XML (WiX) 项目?

WiX 没有被选为旧 *.vdproj/MSI 推荐的自然继承者有什么原因吗?

有没有人尝试过用于 Petrel 插件的 WiX?我有兴趣交流想法和经验。我是 WiX 的新手,很难上手。

(题外话:“新”PIP 范式精简而简单,但不适合企业使用,客户希望能够重新打包 MSI 以通过例如组策略促进大规模部署。我将发布另一个这个问题。)

0 投票
1 回答
175 浏览

ocean - 通过例如组策略大规模部署 PIP?

关于如何使用例如组策略促进 Petrel PIP 文件(插件包)的大规模部署,是否有任何建议?

包内容(插件文件)很简单,但用户特定的 PluginManagerSettings.xml 文件需要小心处理。对于希望能够为此目的自定义和重新打包 MSI 文件的客户来说,这个概念不太适合。

斯伦贝谢谨慎的做法是提供该领域的一些文档和建议的最佳实践。如果文档存在,我深表歉意,并希望得到指点。

0 投票
2 回答
99 浏览

ocean - 如何访问域对象统计选项卡中的属性?

访问支柱网格和视野的统计选项卡中的值对我很有帮助。我可以自己计算大部分,但如果这些属性存在于某个地方,如果我可以访问它们会容易得多。

0 投票
1 回答
133 浏览

c# - 如何通过 SeismicLine2D 中的 Horizo​​nInterpretation2D 获得给定点的值(幅度)?

输入参数是 Horizo​​nInterpretation2D 和 SeismicLine2D。通过选择地平线,海燕显示如图所示的值(红色)。要从代码中找到这个值,我需要获取样本的编号(蓝色)。怎样才能得到样本的数量?

截屏。

截图解决方案[全尺寸]:

截图解决方案。

0 投票
1 回答
507 浏览

ocean - 是否可以以编程方式设置 Petrel 的 Window3D 的背景颜色?

是否可以以编程方式设置 Petrel 的 Window3D 的背景颜色?

我看到您可以使用 ISettingsInfo 来获取/设置颜色,但我想知道如何使窗口的背景更新。

0 投票
1 回答
106 浏览

ocean - 取消订阅 IObservableElementEnumerable.EnumerableChanged 不起作用?

我们的部分 UI 使用 IObservableElementEnumerable.EnumerableChanged 来更新用户,例如从文件夹中删除域对象。

当 UI 被释放时,我们取消订阅事件......或者我们认为。事实证明,取消订阅没有任何效果,我们的事件处理程序仍然被调用。这导致了许多奇怪的错误,但也导致了内存泄漏。

唯一一次取消订阅是,如果我们存储 IObservableElementEnumerable 引用而不是再次调用 IObservableElementEnumerableFactory.GetEnumerable(obj)。但是,这反过来很可能会保留对文件夹对象的实时引用,如果文件夹本身被用户删除,这将中断。

这尤其令人费解,因为 GetEnumerable() 文档清楚地指出:“预计使用相同域对象的后续调用将产生相同的 IObservableElementEnumerable 实例。” 这不应该被解释为保证吗?

是否应该有任何理由取消订阅不起作用?

以下代码复制了 Petrel 2011 上的问题(添加到带有菜单扩展的简单插件,或在此处获取完整解决方案(DropBox)):

要复制:

  1. 使用插件运行 Petrel
  2. 加载带有包含对象的文件夹的项目
  3. 选择文件夹
  4. 激活插件菜单项
  5. 打开弹出窗口,删除文件夹中的对象
  6. 关闭弹出的表单
  7. 删除文件夹中的对象

消息日志应该清楚地显示在处理表单后仍然调用事件处理程序。

0 投票
1 回答
93 浏览

ocean - 如何知道项目何时完成打开

启动一个新项目后,我想知道 Petrel 什么时候完成了新项目的创建。当订阅 DataManager.WorkspaceOpened 事件时,该事件会在工作区打开时被调用,但这可能不是在主线程完成创建新项目时。

关于何时知道 Petrel 何时完成创建新项目的任何想法?

0 投票
1 回答
62 浏览

ocean - 查找与 PropertyDataFilter1D 关联的属性

我有一个用户输入的 PropertyDataFilter1D。如何确定哪个支柱网格属性与该过滤器相关联?过滤器包含一个 PropertyVersionBase 成员,但我不知道如何用它查找属性。

0 投票
1 回答
339 浏览

c# - 使用海洋在 Petrel 3D 窗口中绘制地震体积墙

我可以通过海洋以编程方式在 3D 窗口中绘制 3D 地震数据体渲染吗?

我可以使用 Window3d.showobject(seismic_cube) 绘制随机内联/xline,但我想直接查看体积渲染而不进入设置选项卡。

我怎样才能做到这一点?