ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:1.22MB ,
资源ID:11233895      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11233895.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(ResForm-高级应用-宏编辑.docx)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

ResForm-高级应用-宏编辑.docx

1、ResForm 高级应用——宏编辑 ResForm脚本语言是专门为基于ResForm构架下的地质研究、油藏工程、油藏描述等系列软件产品配置的编程语言。利用该脚本语言,可以轻松实现现有功能的特定扩展,提高工作的质量和效率。 本文以一些常用的例子为主线介绍如何使用ResForm脚本语言。旨在通过短小精炼的内容编排以及浅显的实例,抛砖引玉,将复杂难懂的计算机语言变成用一门可以快速掌握的工具。用一个下午,或者临睡前时间,甚至在飞机上、上下班途中,您就有可能一口气把它读完。 是不是有点兴趣了呢?下面就让我们一起来开始吧! 1三个术语 在这里,我们先简单介绍一下这样3个术语: 1.ResFor

2、m脚本语言:一种计算机语言; 2.宏:用于实现特定功能的代码段; 3.宏脚本语言编辑器:编写或编辑宏的工具(或工作界面)。 2宏脚本语言编辑 针对不同工作需求,软件提供了标准宏、裸体宏两种宏语言编辑、应用模式。 标准宏是完整的宏代码,它拥有main主函数,在不同的单井图文档中都可使用已有的标准宏代码处理数据。裸体宏仅对某个单井图中的某个图道进行处理,比较简单、灵活。 2.1标准宏编辑器 图1 打开单井图后,在不选择任何图道的情况下,单击主窗口工具条上的【编辑并执行宏】按钮,即可打开标准宏编辑器,见图1: 1.单击按钮新建一个宏; 2.单击打开一个已有的宏; 3.单击保存当

3、前编辑的宏; 4.单击执行宏。 2.2裸体宏编辑器 选中单井图上一个图道后,点击工具条中的工具按钮,或者单击右键,选择【编辑/执行宏】命令即可将其打开,见图2;: 1 2 3 图2 在图2所示的对话框中,上方可以设置循环范围以及是否为“自动循环”,中间代码编辑区域直接输入代码即可,不需要写main主函数。 3第一个宏 首先,我们需要打开宏脚本语言编辑器:打开任意一张单井图,单击【编辑并执行宏】功能按钮,在代码编辑区域内键入代码(图3): void main() { 代码编辑区域 图3 } 宏脚本编辑器非常聪明,在输入过程中,它将自动提示您要输入的

4、内容。按上↑下↓键选择,回车Enter键确认,或者直接键入即将输入的下一个符号,如空格、点号“.”等即可。 main()表示程序执行的主入口函数,你可以将其简单理解为程序的开始标记。代码段需要用一对大括号括起。 图4 ShowMsg表示显示一个消息框,内容文本两侧需要用引号括起,语句结束时输入分号。宏脚本语言中的符号一律使用英文符号。 单击【执行】按钮,可以看到运行结果(图4)。 到这里,我们的第一个宏就完成了,接下来的内容里,我们将通过实际工作中的例子来进行介绍,期间也会穿插一些编程中涉及的知识点。 4实例Ⅰ 计算孔隙度 4.1算法描述 如果某口井岩心分析孔隙度与补偿密度相关

5、性较好,存在下述关系式: ——计算孔隙度,代码中用POR表示; DEN——补偿密度; ——岩石骨架密度,隐含值取2.65,代码中用DG表示; ——流体密度,隐含值取1,代码中用DF表示。 4.2代码实现 在这里,我们需要编写一段代码,它完成的工作是:根据已有公式计算得到计算孔隙度数值,并将其加载至对应的图道里。 首先,单击按钮打开宏脚本编辑器,粘贴或键入下述语句(双斜杠//后面的文字为代码注释,可以不加),见图5: //----------------------计算孔隙度---------------------- void main() { float DG

6、 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

7、 - DG)/(DF - DG); }while(this.NextRow()); } //-------------------------------- 图5 在详细讲解这段代码之前,我们先看看它的执行效果: 单击宏脚本语言编辑器对话框下方的【执行】按钮,可以看到单井图上新建了一条“计算孔隙度”图道。我们手动将数值范围设置为0~1之间,见图6: 图6 4.3代码详解 第4.2小结所示的代码中: 1.float:是一种数据类型,用于浮点型数据。 2.SCurveTrace:曲线类图道的公共类。其它同类型的类还有:SDiscreteTrace离散型数据道、SLa

8、yerTraceBase层对象型数据道等。por为SCurveTrace实例化后的一个对象。 在这里,我们简单介绍一些编程的基本概念: 类是一个抽象的概念。以现实生活为例,我们可以把小轿车、越野车、卡车等具有的共同特性抽象出来,构成“汽车”类。 类包含属性和方法。 属性相当于特征描述,如汽车具有颜色、箱型等。方法相当于具有的行为,如汽车可以进行启动、前进、后退等活动。 对象是类这个抽象概念对应的实体。如,有一辆车牌照号码为陕A55522的红色福特小轿车,那么这辆车就是将“汽车”类实例化的对象。我们通过将类实例化成对象来使用这个类的属性和方法。 读到这里你是否有疑问?为什么用这种类与

9、对象的方式设计程序呢? 这样设计的好处,一是将编写的代码更加贴近真实生活,增加它的易读性;二是通过抽象把大程序分解成更易于管理的小单元,类似于“黑盒”。就想您在使用宏脚本的某个类或方法时,不需要知道它们内部是怎样实现的。 3.this: this是一个关键字。关键字是计算机语言里事先定义的,有特别意义的标识符。在ResForm脚本语言中,this相当于单文档类的实例。在this之后输入点号“.”可以查看到单文档类下所有的图道类以及方法、属性等。 4.实心点号:“.”表示“……的”。 5.Channels:图道或图道组合的集合,可以理解为一个容器,能够放置一个或者多个图道。 6.Add

10、Trace:为Channels类所具有的一个方法,意为“添加图道”。小括号内传递两个参数,分别代表图道类型为曲线道、图道名称为POR。 7.对象定义之后就可以使用了,por.Title = "计算孔隙度"意为将por对象(por曲线道)定义道头显示内容设置为“计算孔隙度”。 8.SetLoopRange:为单文档类下的一个方法,表示设置循环的起止深度范围,小括号内传递两个参数,分别是顶深和底深。 9.do-while循环: do-while循环语义为:“当满足某个条件时,一直做某件事情,直到判断条件不满足为止”。 在我们讨论的例子里: do{ por.Value = (th

11、is.DEN.Value - DG)/(DF - DG); }while(this.NextRow()); 可以解释为在指定的深度范围内,根据DEN值以及公式,计算第一个采样点对应的por值,并把该值赋值给por。接着计算第二个采样点的值,以此类推,直到深度大于给定的底深为止。 4.4深入了解 利用第4.2小结所示的代码中,我们虽然自动生成了一个计算孔隙度图道,但还未对其进行任何修饰。如,设置曲线的数值范围、颜色、充填样式等,从而达到更好的显示效果。 为此,我们增加下述几行代码(图7): //--------------------------------------------

12、 por.Left = 0; //设置左刻度值 por.Right = 1; //设置右刻度值 por.CurveColor = Color.Red; //设置曲线颜色为红色 por.FillMode = FillLogCurveMode.Left; //设置曲线充填样式为左充填 //设置充填画刷样式,参数分别有前景色、背景色、充填符号 por.FillBrush = new XBrush(COLORREF.Black,COLORREF.RGB(205,133,23), HatchStyle.DashedHor

13、izontal); //-------------------------------------------- 图7 其中: 1.Left、Right、CurveColor、FillMode、FillBrush均属于曲线道的属性,在这里我们完成了给por这条特定的曲线道赋值的任务; 2.除上述5个属性外,曲线道还具有其它属性。我们可以通过输入por加实心点看到(图8):属性前均有作为标记。紫红色小方框标记则代表方法,如。 3.Color:表示颜色,在Color后输入实心点即可选择想要的颜色。 4.FillMode:表示充填样式。在FillMode后输入等号,可选择FillL

14、ogCurveMode充填类型,包含左充填、右充填两种。 5.FillBrush:表示充填画刷,这里需要通过关键词new创建一个画刷对象。传递3个参数,分别是: (1)前景色:设置为黑色,用COLORREF.Black表示。其中,COLORREF的用法与Color类似; (2)背景色:设置橙黄色,可以用RGB值表示为COLORREF.RGB(205,133,23); (3)充填符号:设置为水平虚线,用HatchStyle.DashedHorizontal表示。 单击【执行】按钮,代码执行效果如图9: 图8 图9 同样,本实例实现的计算孔隙度工作还可以通过裸体宏代码来实现

15、具体方法如下: 1.在单井图中创建“计算孔隙度”曲线道; 2.选中孔隙度道后,点右键,选择【编辑/执行宏】命令; 3.在弹出的对话框中设置循环顶、底深度范围,选中“自动循环”,输入如下孔隙度计算公式代码(图10): //----------------------------------------- //根据公式计算并将结果赋值给POR图道 this.POR.Value = ((this.DEN.Value - 2.65)/(1-2.65)); 图10 //----------------------------------------- 4.单击执行宏后,点【确定】按钮

16、 5.设置图道刻度范围为“0-1”,可以看到得到的计算孔隙度杆状图(图11),此时只需要再设置图道显示样式即可。 图11 5实例Ⅱ 计算泥质含量 5.1算法描述 如果泥质含量与测井曲线存在下述经验公式: () 式中 ——解释层段内第条曲线测井值; ——第条曲线在纯砂岩处的测井值; ——第条曲线在纯泥岩处的测井值; ——第条曲线测井相对值; GCUR——地区经验系数,对第三纪地层为3.7;对老地层为2;也可以由本地区的实际资料统计获得。 ——由第条曲线求出泥质含量; —

17、—表示任一条测井曲线,如GR、SP、RT、CNL、NLL,本节我们选用自然伽马GR曲线进行计算。 5.2代码实现 单击按钮打开宏脚本编辑器,粘贴或键入下述语句: //----------------------计算泥质含量---------------------- void main() { float GCUR = 3.7; //定义地层经验系数 float GMAX = this.GR.GetMaxValue(900,945); //获得GR曲线最大值 float GMIN = this.GR.GetMinValue(900,945); //获得GR

18、曲线最小值 float SH_value; //定义GR曲线测井相对值 //创建一个名为VSH的曲线道 SCurveTrace vsh = this.Channels.AddTrace(WellTraceTypes.curve,"VSH"); vsh.Title = "泥质含量"; //设置道头标题 vsh.CurveColor = Color.Blue; //设置曲线颜色 vsh.CurveStyle = PenDashStyle.Dash; //设置曲线线型为虚线 vsh.CurveWidth = 1.5;

19、 //设置曲线宽度 vsh.FillMode = FillLogCurveMode.Left; //设置曲线充填样式为左充填 //设置充填画刷,前景色为黑色、背景色为深灰色、充填符号为水平虚线 vsh.FillBrush = new XBrush(COLORREF.Black,COLORREF.DarkGray, HatchStyle.DashedHorizontal); vsh.Left = 0; //设置曲线左刻度值 vsh.Right = 100; //设置曲线右刻度值 //设置循环的起止深度范围为900~945

20、m this.SetLoopRange(900,945); //循环,根据公式计算并赋值给vsh图道 do{ //计算GR曲线测井相对值 SH_value = (this.GR.Value - GMIN)/(GMAX - GMIN); //计算泥质含量并将结果赋值给图道 vsh.Value = (this.Pow(2,(GCUR * SH_value)) - 1)/(this.Pow(2,GCUR) - 1)*100; }while(this.NextRow()); } //------------------------------------

21、 在详细讲解这段代码之前,我们先看看它的执行效果: 单击宏脚本语言编辑器对话框下方的【执行】按钮,可以看到单井图上新建了一条“泥质含量”图道,见图12。 图12 5.3代码详解 第5.2小结所示的代码中: 1.GetMaxValue是曲线道类具有的一个方法,其功能是获得目标曲线在某个深度范围之内的最大值。GetMaxValue方法具有两个参数,分别是顶深、底深。如,: this.GR.GetMinValue(顶深,底深)。 在方法名称后面键入一个小括号(左),系统会自动提示需要添加的参数及其数值类型。 2.float SH_va

22、lue定义了一个浮点型的变量,由于SH_value是参与计算的中间参数,所以这里没有进行赋值。 3.创建泥质含量道的方法与实例Ⅰ中是一样的,只是起了不同的对象名称和道名称。 道名称一般指计算机内部识别图道的唯一标识。如,计算孔隙度POR、泥质含量VSH。道标题名称指图道创建以后道标题上显示的文本名称,该名称不是唯一标识,可以根据需要修改。定义时通过Title属性进行设置,如vsh.Title = "泥质含量",双引号内部的文本即为图道生成后道标题处显示的内容。 4.CurveStyle:表示曲线类图道“曲线线型”的属性。在其后输入等号后,自动弹出PenDashStyle枚举类型,可以选择

23、不同的值,如Dash(虚线)、DashDot(单点画线)等等。 5.CurveWidth:表示曲线类图道“曲线线宽”的属性,直接赋值即可。 6.Pow方法:表示指数计算函数。传递两个参数,分别是基数、幂。如可以表示为Pow(10,5)。 5.4深入了解 同样,本实例实现的计算泥质含量工作还可以通过裸体宏代码来实现。具体方法如下: 1.在单井图中创建曲线道,图道名称为VSH,标题为“泥质含量”; 2.选中泥质含量道后,点右键,选择【编辑/执行宏】命令; 3.在弹出的对话框中设置循环顶、底深度范围,选中“自动循环”,输入下述代码(图13): //------------------

24、 float GCUR = 3.7; //定义地层经验系数 float GMAX = this.GR.GetMaxValue(900,945); //获得GR曲线最大值 float GMIN = this.GR.GetMinValue(900,945); //获得GR曲线最小值 float SH_value; //定义GR曲线测井相对值 //计算GR曲线测井相对值 SH_value = (this.GR.Value - GMIN)/(GMAX - GMIN); //计算泥质含量并将结果赋

25、值给图道 vsh.Value = (this.Pow(2,(GCUR * SH_value)) - 1)/(this.Pow(2,GCUR) - 1)*100; //------------------------------------------------ 4.单击执行宏后,点【确定】按钮; 5.在单井图中可以看到得到计算出来的泥质含量曲线(图14),此时只需要再设置图道显示样式即可。 图13 图14 6实例Ⅲ 自动生成岩性剖面 6.1算法描述 本节内容将介绍如何根据测井曲线自动生成岩性剖面。 这里,我们以自然电位SP为例,首先确定SP值与岩性之间存在的逻辑

26、关系: 深度 SP值 岩性 含油气性 1370~1380 SP≥41 深灰色灰质泥岩 无 29<SP≤41 灰白色泥质石灰岩 无 其它 灰色泥岩 无 1380~1395 8<SP≤38 棕黄色生物灰岩 饱含油 其它 灰色泥岩 无 6.2代码实现 在这里,我们需要编写一段代码,它完成的工作是:在循环1(深度段1370~1380)与循环2(深度段1380~1395)中分别根据SP值判断岩性并赋值给岩性道,最终实现岩性的自动划分。 单击按钮打开宏脚本编辑器,粘贴或键入下述语句: //----------------------------------

27、 void main() { //新建岩性道,命名为LITHO SLithoTrace litho = this.Channels.AddTrace(WellTraceTypes.Litho,"LITHO"); litho.Title = "岩性"; //定义道标题显示内容 litho.ColorColumnWidth = 0; //定义岩性道颜色列宽度 this.SetLoopRange(1370, 1380); //设置循环1的起止深度范围 //循环,根据SP曲线值不

28、同,设置不同的岩性 do{ if(this.SP.Value > 41){ //如果SP值大于41,则执行 litho.ColorName = "深灰色"; //设置颜色为深灰色 litho.OilOccurence = 0; //设置含油气性,0表示无 litho.PrefixName = ""; //设置岩性前缀 litho.MainName ="灰质泥岩"; //设置岩性 } else if((this.SP.Value > 29) && (this.SP.Value <= 41)){

29、//如果SP值大于29小于等于41,则执行 litho.ColorName = "灰白色"; //设置颜色为灰白色 litho.OilOccurence = 0; //设置含油气性,0表示无 litho.PrefixName = "泥质"; //设置岩性前缀为泥质 litho.MainName = "石灰岩"; //设置岩性 } else{ //如果上述两种情况均不满足,则执行 litho.ColorName = "灰色"; //设置颜色为灰色

30、 litho.OilOccurence = 0; //设置含油气性,0表示无 litho.Prefix = 0; //设置岩性前缀,0表示无 litho.MainName = "泥岩"; //设置岩性 } }while(this.NextRow()); //循环1结束 this.SetLoopRange(1380, 1395); //设置循环2的起止深度范围 //循环,根据SP曲线值不同,设置不同的岩性 do{ if((this.SP.Value > 8) && (this.

31、SP.Value <= 38)){//若SP大于8小于等于38,则执行 litho.ColorName = "棕黄色"; //设置颜色为棕黄色 litho.OilOccurence = 1; //设置岩性前缀,1表示饱含油 litho.PrefixName = ""; //设置岩性前缀 litho.MainName = "生物灰岩"; //设置岩性 } else{ //如果SP值不符合上述条件,则执行 litho.ColorName = "深灰色"; //设置颜色为深灰

32、色 litho.OilOccurence = 0; //设置岩性前缀,0表示无 litho.PrefixName = ""; //设置岩性前缀 litho.MainName ="灰质泥岩"; //设置岩性 } }while(this.NextRow()); //循环2结束 } //----------------------------------------- 在详细讲解这段代码之前,我们先看看它的执行效果: 单击宏脚本语言编辑器对话框下方的【执行】按钮,可以看到单井图上新建了一个岩性道并自动划分了

33、岩性,见图15。 图15 6.3代码详解 第6.2小节所示的代码中: 1.SLithoTrace:岩性类图道的公共类。litho为SLithoTrace实例化后的一个对象。该语句意为创建一个岩性道对象,该对象的名称为LITHO; 2.岩性道有很多属性,如上一小节代码用到的: (1)Title:道标题; 图16 (2)ColorColumnWidth:颜色列宽; (3)ColorName:颜色名称; (4)OilOccurence:含油气性索引号; (5)PrefixName:岩性前缀名称; (6)Prefix:岩性前缀索引号; (7)MainName:岩性主名。

34、 其中,索引号(如,OilOccurence)需赋值为整型数字,具体的值可以通过岩性配置中查找得到,见图16。 每个油气名称前的数字即为索引值,如“饱含油”为1、“富含油”为2。 颜色名称ColorName与岩性前缀名称PrefixName等需赋值为字符型,即把具体的名称用双引号括起来,如: litho.ColorName = "灰白色"; 除本实例中用到的属性外,岩性道还有很多其它属性,您可以在宏脚本剪辑器中输入SLithoTrace类的实例化对象litho后,再输入一个实心圆点,系统将自动弹出该对象包含的各种方法与属性,见图17。 图17 7实例Ⅳ 曲线自动解释小层 7.

35、1算法描述 本节内容将介绍如何根据测井曲线自动生成分层。 这里,我们以自然电位测井曲线SP与电导率测井曲线RILD为例,它们与分层之间存在下述逻辑关系: 深度 SP值 RILD值 解释结论 1370~1400 SP<30 RILD≥1.1 油层 RILD<1.1 水层 SP≥30 无 无 7.2代码实现 在这里,我们需要编写一段代码,它完成的工作是: 新建一个解释分层图道。在深度段1370~1400范围内,当SP小于30时,若RILD的大于等于1.1,判断为油层;RILD的小于1.1,判断为水层。当SP大于等于30,不执行任何操作。 单击按钮打开宏脚本编辑

36、器,粘贴或键入下述语句: //-----------该示例演示如何根据自然电位测井和电导率测井曲线自动分层--------- void main() { float topDepth = 1370; // 定义处理井段顶深 float bottomDepth = 1400; // 定义处理井段底深 this.SetLoopRange(topDepth, bottomDepth); //设置循环的起止深度范围 //新建解释分层道,命名为“测井解释” SSandTrace sand = this.Channels.AddTrace(WellTraceT

37、ypes.Sand,"测井解释"); //循环,根据SP值与RILD值判断解释结论 do{ if(this.SP.Value < 30) { //若SP值小于30,则执行 if(this.RILD.Value >= 1.1 ) { //若RILD值大于等于1.1,则执行 sand .LayerTypeName = "油层"; //分层类型名称为“油层” } else if(this.RILD.Value < 1.1 ){ //如果RILD值小于1.1,则执行 sand .LayerTypeName = "水层"; //分层类型名称

38、为“水层” } } }while(NextRow()); } //-------------------------------------------------------- 在详细讲解这段代码之前,我们先看看它的执行效果:单击宏脚本语言编辑器对话框下方的【执行】按钮,可以看到单井图上新建了一个测井解释道并实现了自动分层,见图18。 图18 7.3代码详解 第7.2小节所示的代码中: 1.SSandTrace:解释分层道公共类。sand为SSandTrace实例化后的一个对象。该语句意为创建一个解释分层道对象,该对象的名称为“测井解释”; 2.san

39、d .LayerTypeName = "油层"意为将sand对象的层类型名称赋值为“油层”,对应于配置里“分层类型定义”时的层类型名称,见图19; 图19 3.除LayerTypeName之外,解释分层道还具有其它属性,如: (1)Title:道标题; (2)Width:道宽; (3)LayerName:层名; (4)FinalVerdict:综合解释; (5)ModelVerdict:模型解释; (6)ElectrologVerdict测井解释; (7)GeoLogVerdict:录井解释; (8)TestVerdict:试油结论; (9)PilotVerdict:试采

40、结论; (10)Litho:解释岩性。 7.4深入了解 同样,本实例实现的曲线自动解释小层的工作还可以通过裸体宏代码来实现。具体方法如下: 1.在单井图中创建解释分层道,图道名称和标题均为“测井解释”; 2.选中测井解释道后,点右键,选择【编辑/执行宏】命令; 3.在弹出的对话框中设置循环顶、底深度范围,选中“自动循环”,输入下述代码(图20): //------------------------------------------------ if(this.SP.Value < 30) { //若SP值小于30,则执行 if(this.RILD.Value >= 1.1 ) { //若RILD值大于等于1.1,则执行 this.测井解释.LayerTypeName = "油层"; } else if(this.RILD.Value < 1.1 ){ //如果RILD值小于1.1,则执行 this.测井解释.LayerTypeName = "水层"; //分层类型名称为“水层” } } //------------------------------------------------ 4.单击执行宏后,点【确定】按钮即可。 图20

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服