没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论























ResForm 高级应用——宏编辑
ResForm 脚本语言是专门为基于 ResForm 构架下的地质研究、油藏工程、油藏描述等
系列软件产品配置的编程语言。利用该脚本语言,可以轻松实现现有功能的特定扩展,提高
工作的质量和效率。
本文以一些常用的例子为主线介绍如何使用 ResForm 脚本语言。旨在通过短小精炼的
内容编排以及浅显的实例,抛砖引玉,将复杂难懂的计算机语言变成用一门可以快速掌握的
工具。用一个下午,或者临睡前时间,甚至在飞机上、上下班途中,您就有可能一口气把它
读完。
是不是有点兴趣了呢?下面就让我们一起来开始吧!
1 三个术语
在这里,我们先简单介绍一下这样 3 个术语:
1.ResForm 脚本语言:一种计算机语言;
2.宏:用于实现特定功能的代码段;
3.宏脚本语言编辑器:编写或编辑宏的工具(或工作界面)。
2 宏脚本语言编辑
针对不同工作需求,软件提供了标准宏、裸体宏两种宏语言编辑、应用模式。
标准宏是完整的宏代码,它拥有 main 主函数,在不同的单井图文档中都可使用已有的
标准宏代码处理数据。裸体宏仅对某个单井图中的某个图道进行处理,比较简单、灵活。
2.1 标准宏编辑器
打开单井图后,在不选择任何图道的情况下,
单击主窗口工具条上的 【编辑并执行宏】按钮,
即可打开标准宏编辑器,见图 1:
4.单击 执行宏。
2.2 裸体宏编辑器
图 1
选中单井图上一个图道后,点击工具条中的 工具按钮,或者单击右键,选择【编辑/
执行宏】命令即可将其打开,见图 2;:

3
1
2
图 2
在图 2 所示的对话框中,上方可以设置循环范围以及是否为“自动循环”,中间代码编
辑区域直接输入代码即可,不需要写 main 主函数。
3 第一个宏
首先,我们需要打开宏脚本语言编辑器:打开任意一张单井图,单击【编辑并执行宏】
功能按钮,在代码编辑区域内键入代码(图 3):
void main()
{
代码编辑区域
}
宏脚本编辑器非常聪明,在输入过程中,它
将自动提示您要输入的内容。按上↑下↓键选择,
回车 Enter 键确认,或者直接键入即将输入的下
一个符号,如空格、点号“.”等即可。
main()表示程序执行的主入口函数,你可以
将其简单理解为程序的开始标记。代码段需要用
一对大括号括起。
ShowMsg 表示显示一个消息框,内容文本两
图 3
侧需要用引号括起,语句结束时输入分号。宏脚
本语言中的符号一律使用英文符号。
单击【执行】 按钮,可以看到运行结果(图 4)。
到这里,我们的第一个宏就完成了,接下来的内容里,我们将通过实际工
作中的例子来进行介绍,期间也会穿插一些编程中涉及的知识点。
图 4
4 实例Ⅰ 计算孔隙度
4.1 算法描述
如果某口井岩心分析孔隙度与补偿密度相关性较好,存在下述关系式:

DEN
ma
f
ma
——计算孔隙度,代码中用 POR 表示;
DEN——补偿密度;
——岩石骨架密度,隐含值取 2.65,代码中用 DG 表示;
ma
——流体密度,隐含值取 1,代码中用 DF 表示。
f
4.2 代码实现
在这里,我们需要编写一段代码,它完成的工作是:根据已有公式计算得到计算孔隙度
数值,并将其加载至对应的图道里。
首先,单击 按钮打开宏脚本编辑器,粘贴或键入下述语句(双斜杠 //后面的文字为
代码注释,可以不加),见图 5:
//----------------------计算孔隙度----------------------
void main()
{
float DG = 2.65;
//定义岩石骨架密度值
//定义流体密度值
float DF = 1;
//新建曲线道,命名为 POR
SCurveTrace por = this.Channels.AddTrace(WellTraceTypes.Curve,"POR");
por.Title = "计算孔隙度"; //定义道头显示内容
this.SetLoopRange(900,960); //设置循环的起止深度范围
//循环,根据公式计算并将值赋给图道
do{
por.Value = (this.DEN.Value - DG)/(DF - DG);
}while(this.NextRow());
}
//--------------------------------
图 5
在详细讲解这段代码之前,我们先看看它的执行效果:
单击宏脚本语言编辑器对话框下方的 【执行】按钮,可以看到单井图上新建了一条
“计算孔隙度”图道。我们手动将数值范围设置为0~1 之间,见图 6:

图 6
4.3 代码详解
第 4.2 小结所示的代码中:
1.float:是一种数据类型,用于浮点型数据。
2.SCurveTrace:曲线类图道的公共类。其它同类型的类还有:SDiscreteTrace 离散型
数据道、SLayerTraceBase 层对象型数据道等。por 为 SCurveTrace 实例化后的一个对象。
在这里,我们简单介绍一些编程的基本概念:
类是一个抽象的概念。以现实生活为例,我们可以把小轿车、越野车、卡车等具有的共
同特性抽象出来,构成“汽车”类。
类包含属性和方法。
属性相当于特征描述,如汽车具有颜色、箱型等。方法相当于具有的行为,如汽车可以
进行启动、前进、后退等活动。
对象是类这个抽象概念对应的实体。如,有一辆车牌照号码为陕A55522 的红色福特小
轿车,那么这辆车就是将“汽车”类实例化的对象。我们通过将类实例化成对象来使用这个
类的属性和方法。
读到这里你是否有疑问?为什么用这种类与对象的方式设计程序呢?
这样设计的好处,一是将编写的代码更加贴近真实生活,增加它的易读性;二是通过抽
象把大程序分解成更易于管理的小单元,类似于“黑盒”。就想您在使用宏脚本的某个类或
方法时,不需要知道它们内部是怎样实现的。
3.this: this 是一个关键字。关键字是计算机语言里事先定义的,有特别意义的标识符。
在 ResForm 脚本语言中,this 相当于单文档类的实例。在 this 之后输入点号“.”可以查看
到单文档类下所有的图道类以及方法、属性等。
4.实心点号:“.”表示“……的”。
5.Channels:图道或图道组合的集合,可以理解为一个容器,能够放置一个或者多个
图道。
6.AddTrace:为 Channels 类所具有的一个方法,意为“添加图道”。小括号内传递两
个参数,分别代表图道类型为曲线道、图道名称为POR。
7.对象定义之后就可以使用了,por.Title = "计算孔隙度"意为将 por 对象(por 曲线道)
定义道头显示内容设置为“计算孔隙度”。
8.SetLoopRange:为单文档类下的一个方法,表示设置循环的起止深度范围,小括号
剩余15页未读,继续阅读
资源评论


我是你的春哥!
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 一个网页版的“小蜜蜂”游戏。基于html+css+Javascript。.zip
- 西门子博途与WinCC用于10层6梯电梯控制系统的设计与实现:SCL语言与仿真应用 - 工业自动化
- 一个智能的网页内容提取API服务,基于magic-html和jina-ai_reader。支持多种内容类型(文章_论坛_
- 基于 C++ WASM 实现股票图表和技术指标(模仿富途),提供 Web HTML 实现。.zip
- 基于html+css+javascript动态音乐app(1).zip
- 基于STM32的高精度频率计设计与实现
- 一个用于管理实验设备的系统。使用MySQL数据库、Flask后端以及基于HTML、CSS和JavaScript构建的轻量
- 通义千问终端客户端py
- 基于HTML+CSS+JQuery 开发的电商网站.zip
- 基于MATLAB的六自由度Stewart平台并联机器人运动学仿真与舵机动态建模
- 永磁同步电机MTPA控制算法仿真模型:矢量控制、最大转矩电流比优化与弱磁控制 弱磁控制 v3.5
- 西门子S7-300博途植物萃取饮料生产线控制系统程序案例 - 采用博途STEP7及WINCC RT Pro编程 - S7-300 终极版
- COMSOL模拟铌酸锂波导中PPLN和频的研究 - 通信技术
- 四轴SCARA机器人正逆解算法的C++实现及左右手模式支持
- 实战demo——基于【HTML+CSS+JS】模仿WeGame的web网页;基于“一起来捉妖”的官网,使用【jQuery
- Android14 实现CPU使用率100%且计算CPU负载并保存到对应可查看文件中
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
