第四部分 高级应用.docx

上传人:b****6 文档编号:3329828 上传时间:2022-11-21 格式:DOCX 页数:163 大小:945.94KB
下载 相关 举报
第四部分 高级应用.docx_第1页
第1页 / 共163页
第四部分 高级应用.docx_第2页
第2页 / 共163页
第四部分 高级应用.docx_第3页
第3页 / 共163页
第四部分 高级应用.docx_第4页
第4页 / 共163页
第四部分 高级应用.docx_第5页
第5页 / 共163页
点击查看更多>>
下载资源
资源描述

第四部分 高级应用.docx

《第四部分 高级应用.docx》由会员分享,可在线阅读,更多相关《第四部分 高级应用.docx(163页珍藏版)》请在冰豆网上搜索。

第四部分 高级应用.docx

第四部分高级应用

 

第四部分高级应用

 

第12章关于CarbonScript

12.1CarbonScript和宏

CarbonScript是卡奔软件公司开发的面向地质专业和面向对象的编程语言,利用CarbonScrip语言编写的程序称为“宏”。

IntellExplore提供CarbonScript引擎,用于支持“宏”运行,关于CarbonScript语言的使用详见《附录》的“CarbonScript语言参考”节。

IntellExplore通过CarbonScript语言来实现各项功能扩展。

利用CarbonScript语言可编写多种方法(宏),包括数据加载方法、图形格式、参数计算等。

系统已经提供了一些常用的方法,以后会不断地提供新的方法;你可将自己多年的工作经验进行总结,用CarbonScript语言编写程序形成自己的方法,IntellExplore能将你自己编写的方法加入软件之中,实现功能的扩展。

12.2CarbonScript形成方法——数据加载

数据加载是用CarbonScript语言编写程序形成方法来实现的,目前IntellExplore提供以下几种加载方法:

1.综合录井仪资料加载方法

包括15种加载方法,分别是:

加载ASCII离散数据-单列、加载ASCII离散数据多列、加载DBF离散数据、加载LogDrtsLZD、加载LogAllgLZD、加载LogCadrLZD、加载LogCadrLZD钻时、加载LogCompLZD、加载LogFlowLZD、加载LogH2SgLZD、加载LogMudpLZD、加载LogTGasLZD、加载LogDeepLZD、加载LogHookLZD和加载LogTorqLZD。

2.测井资料加载方法

包括6种加载方法,分别是:

加载Sun716曲线数据、加载ASCII曲线数据-单条、加载ASCII曲线数据-多条、加载DBF曲线数据、加载Forward文本曲线数据、加载长庆716曲线数据等等。

3.岩性描述加载方法

包括1种加载方法是:

加载ASCII岩性数据。

4.层段文本描述加载方法

包括2种加载方法,分别是:

加载ASCII文本描述-单列、加载ASCII文本描述-多列。

5.分层数据加载方法

包括1种加载方法是:

加载ASCII分层数据。

6.符号数据加载方法

包括1种加载方法是:

加载ASCII符号数据。

7.样品数据加载方法

包括1种加载方法是:

加载ASCII样品数据。

8.取芯数据加载方法

包括1种加载方法是:

加载ASCII取芯数据。

12.3CarbonScript形成方法——图形格式

图形格式是用CarbonScript语言编写程序来描述的,IntellExplore已经提供了10种图形格式,分别是:

钻井工程图、气测录井图、地化录井图、综合录井图、岩心综合图、地层综合柱状图、沉积储层综合评价图、四性关系分析图、581测井解释图和3700测井解释图。

12.4CarbonScript形成方法——参数计算

参数计算也是用CarbonScript语言编写程序形成方法来实现的。

IntellExplore已经提供了一些常用的参数计算的方法,包括孔隙度计算、渗透率计算、泥质含量计算、直方图、压力计算、井资料处理,数据输出,以及分层数据直接输出到MicrosoftExcel形成解释成果表,岩芯数据的分类统计,在Excel中做各类直方图(包括曲线数据、离散数据的孔隙度、渗透率等等),各类道数据输出到Excel中等等,这些方法能够给你的地质研究工作带来极大的方便。

第13章建立自己的方法

13.1编写程序(宏)形成方法

用CarbonScript语言编辑程序形成自己的方法。

下面是根据岩心分析孔隙度与声波时差关系式Por=0.1743*ac-30.568(r=0.8865)来计算孔隙度的例子,将此方法命名为“孔隙度计算-AC”。

voidmain()

{

objectv;

v=NewTrace(1,"CvrTrace","POR_AC");

v.Left=0;

v.Right=100;

v.LineColor=RGB(0,127,127);

v.LineWidth=5;

v.LineStyle=0;

v.style|=1<<19;

v.FillIndex=1;

floatvp("POR_AC");

for(depth=500;depth<1500;depth+=0.125){

vp=0.1743*ac-30.568;

//ac为声波时差曲线道

}

Play();

}

13.2方法(宏)存入数据库

将名为“孔隙度计算-AC”的方法加入数据库的步骤如下:

1.打开数据库(或新建数据库),在“数据库视图”窗口中选“方法”项,然后出现方法的各项分类。

2.单击鼠标选中“分析解释方法”,击鼠标右键弹出菜单,选“增加新方法”项命令,图13-1。

3.产生对话框,输入方法名称,加入方法的程序文本(按“打开”按钮选择文件或将从其他软件拷贝然后粘贴到编辑区),然后,选“确定”,图13-2。

4.查看数据库,已有新加入的方法,图13-3。

13.3制作自己的方法(宏)工具条

以“孔隙度计算-AC”方法为例,制作自己的方法工具条,步骤如下:

第一步:

选择方法的图标

A.在“数据库视图”“方法”项窗口中,单击鼠标选中“孔隙度计算-AC”方法;

B.击鼠标右键弹出菜单,选“编辑方法”项命令,图13-4。

C.产生名为“编辑方法”的对话框,在对话框中图标按钮上单击鼠标;出现对话框,选择方法对应的图标,最后按“确定”按钮,图13-5。

第二步:

编辑用户菜单

A.单击“查看“菜单。

B.选择其中的“编辑用户菜单“命令。

C.产生名为“编辑工具条”的对话框,对话框中列出所有方法的图标,在方法图标上双击鼠标,则该方法选中,最后按“确定”按钮。

图13-6是图示的操作过程。

第三步:

打开自己的方法工具条:

A.单击“查看“菜单。

B.选择“工具栏”的“测录井计算“项。

C.在工具栏上形成自己的方法工具按钮。

图13-7是图示的操作过程。

13.4执行方法(宏)

执行方法(宏)很简单,在工具栏上单击自己定义的方法工具按钮便执行了自己的方法。

图13-8是“孔隙度计算-AC”方法执行后的结果,该方法新建了名为“POR_AC”的曲线道,并计算出孔隙度曲线。

第14章使用全局变量

14.1基本概念

全局变量是在分析图中执行宏时不需定义就能引用的变量。

通常定义这口井的一些参数,如泥浆密度、泥浆粘度、泥浆电阻率、井深和测录井情况等,编写对这口井进行处理和计算宏时会经常用到全局变量。

14.2添加全局变量

添加全局变量的方法是:

1.在图形外任一处单击鼠标右键,弹出菜单,选择“编辑全局变量”的命令。

2.产生名为“全局变量”的对话框,在对话框中单击鼠标右键,弹出菜单选择“添加变量”,图14-1。

3.然后,又产生名为“设置变量”的对话框,在对话框中设置变量名称、变量类型、变量值和变量读写标志,按“确定”按钮,图14-2。

14.3编辑全局变量

编辑全局变量的方法是:

1.在图形外任一处单击鼠标右键,弹出菜单,选择“编辑全局变量”的命令,产生名为“全局变量”的对话框。

2.在对话框中单击鼠标选中要编辑的全局变量,然后击鼠标右键弹出菜单,选择“编辑变量”命令,图14-3。

3.产生名为“设置变量”的对话框,在对话框中设置有关参数,按“确定”按钮。

14.4删除全局变量

删除全局变量的方法是:

1.在图形外任一处单击鼠标右键,弹出菜单,选择“编辑全局变量”的命令,产生“全局变量”对话框。

2.在对话框中选中要删除的全局变量,然后击鼠标右键弹出菜单,选择“删除变量”命令。

14.5使用全局变量

编写宏或在图头、图尾表格中录入数据时使用全局变量,使用全局变量的格式是:

"Global."+全局变量名。

例如:

全局变量名Mud_density的引用方法是:

Global.Mud_density。

下面是是引用全局变量的程序例子:

if(Global.Mud_density>1.5){

…….

}else{

…….

}

图14-4是在表格中单元格录入数据时引用全局变量的例子。

 

第15章使用系统内部对象

15.1基本概念

系统内部对象包括“File”文件对象、“Table”二维表对象、“Equation”方程组和回归运算对象、“Database”数据库对象、“Dialog”对话框对象和“UsrHistogram”直方图对象6个常用对象。

另外,系统内部对象还包括分析图对象、列对象(CLogColumn)和道对象(CLogTrace)。

CarbonScript语言提供“Object”型变量,用于系统内部对象的定义,结合系统内部对象的属性和功能函数可完成对系统内部对象的使用,系统内部对象的属性和功能函数详见《附录》的“对象”节。

15.2使用“File”文件对象

“File”文件对象用于在磁盘上创建文件并对文件操作,下面是在D盘根目录创建名为“testzzz.txt”文本文件,并将数据写入磁盘的一个例子,写入磁盘的文件内容见图15-1。

voidmain()

{

Objectv=newFile;

if(v.Create("d:

\\testzzz.txt")){

for(inti=0;i<20;i++){

v.textline=i+"\tV["+i+"]";

}

}

}

15.3使用“Table”二维表对象

“Table”二维表对象用于对二维表进行操作,下面是将2行3列数据放入二维表,并将二维表写入磁盘的一个例子,写入磁盘的文件内容见图15-2。

voidmain()

{

Objectv=newTable;

v.Rows=2;

v.Cols=3;

v.Put(0,0,10);

v.Put(0,1,11.0);

v.Put(0,2,"Tablestring1");

v.Put(1,0,12);

v.Put(1,1,13.0);

v.Put(1,2,"Tablestring2");

v.SaveText("d:

\\Data.txt");

}

15.4使用“Equation”方程组和回归运算对象

“Equation”对象用于进行回归分析和对方程组求解,下面是回归分析和方程组求解的两个例子。

例1:

voidmain()

{

Objectv=newEquation;

v.Row=2;

v.SetParam(0,0,3);

v.SetParam(0,1,4);

v.SetParam(0,2,-3);

v.SetParam(1,0,3);

v.SetParam(1,1,1);

v.SetParam(1,2,-3);

BOOLb=v.Calc();

doubler1=v.GetResult(0);

doubler2=v.GetResult

(1);

//方程组:

3x+4y-3=0

//3x+1y-3=0

//求解结果:

r1=1,r2=0;即x=1,y=0。

}

例2:

voidmain()

{

Objecte=newEquation;

e.Quintic=1;

e.SetXY(20,40);

e.SetXY(23,60);

e.SetXY(42,93);

if(e.Calc()){

MsgBox("CalcOK!

",MB_OK);

floata,b;

a=e.GetResult(0);

b=e.GetResult

(1);

MsgBox("y="+a+"x+"+b,MB_OK);

}else{

MsgBox("CalcError",MB_OK);

}

//回归分析关系式:

y=2.1698x+2.856

}

15.5使用“Database”数据库对象

“Database”数据库对象用于对Access形成的数据库进行操作,下面是一个在C盘跟目录打开名为“dbf1.mdb”的例子。

voidmain()

{

Objectv=newDatabase;

if(v.Open("c:

\\db1.mdb")){

Objects=v.OpenRecordset("select*fromTWU5whereDepth>600");

s.MoveFirst();

for(inti=0;i<10;i++){

doubledp=s.GetFieldValue("Depth");

doubleva=s.GetFieldValue("Value");

MsgBox(i+":

Dep="+dp+",Val="+va,MB_OK);

s.MoveNext();

}

}

}

15.6使用“Dialog”对话框对象

“Dialog”对话框对象用于产生对话框,并对对话框进行操作,下面是对话框对象的3个例子。

例1:

voidmain()

{

Objectv=newDialog;

v.Title="TestDialog";

v.Xspace=10;

v.Xunit=15;

v.Label(NULL,3333,0,0,11,2,SS_ETCHEDFRAME);

v.AdjBorder(3333,4,4,4,4);

v.Label("sadfasdf",0,0,0,3,1,0);

doublex=100.123;

v.EditBox(12,3,0,8,1,x);

Stringo[]=newString[2];

o[0]="ssdfsdf";

o[1]="trtyrty";

v.ComboBox(13,0,1,11,1,o);

v.RadioBox("Radio1",33,0,3,3,1,"");

v.RadioBox("Radio2",34,4,3,3,1,"");

v.RadioBox("Radio3",39,8,3,3,1,"");

v.SetExtStyle(34,WS_EX_DLGMODALFRAME);

v.Group("",111,0,3,7,1);

v.AdjBorder(111,4,6,4,2);

v.DoModal();

}

 

例1程序执行结果产生图15-3所示对话框。

例2:

voidmain()

{

Objectv=newDialog;

v.BindResource(182);

v.BindFunc(IDOK,0,"vvv");

v.BindFunc(1100,0,"xxx");

v.DoModal();

}

voidvvv()

{

Objectv=GetCurWnd();

Objectx=v.GetCtrl(208);

MsgBox(x.CurColor,MB_OK);

}

voidxxx()

{

Objectv=GetCurWnd();

MsgBox("xxx="+v.GetValue(1100),MB_OK);

例2程序执行结果产生图15-4所示对话框。

例3:

voidmain()

{

Objectv=newDialog;

v.Title="TestDialog";

v.InitFunc="xxx";

v.FinalFunc="yyy";

v.Label(NULL,3333,0,0,11,2,SS_ETCHEDFRAME);

v.AdjBorder(3333,4,4,4,4);

v.Label("input:

",0,0,0,3,1,0);

doublex=100.123;

v.EditBox(12,3,0,8,1,x);

Stringo[]=newString[2];

o[0]="ssdfsdf";

o[1]="trtyrty";

v.ComboBox(13,0,1,11,1,o);

v.Ocx("SEALBOX.CustomSealCtrl.1",33,0,3,4,1);

v.Button("OK",IDOK,8,3,3,1,"vvv");

v.DoModal();

}

voidvvv()

{

Objectv=GetCurWnd();

Objectc=v.GetCtrl(33);

Strings=c.Symbol;

MsgBox(s,MB_OK);

}

voidxxx()

{

MsgBox("InitDialog",MB_OK);

}

voidyyy()

{

MsgBox("FinalDialog",MB_OK);

}

例3程序执行结果产生图15-5所示对话框。

15.7使用“UsrHistogram”直方图对象

“UsrHistogram”直方图对象用于进行数据统计作出直方图。

下面默任做AC直方图的例子。

voidmain()

{

Objectmt=newUsrHistogram;

floatdep1,dep2;

dep1=Input("输入开始深度:

",500);

dep2=Input("输入结束深度:

",1400);

Objectdlg=GetSelDlg();

dlg.Premp="选择做直方图的曲线名称";

dlg.Var1="AC";

if(dlg.Sel()){

floatV1(dlg.Var1);

for(depth=dep1;depth

mt.SetData(V1);

}

mt.Name=dlg.Var1+"直方图";

mt.HistStartValue=210;

mt.HistNum=10;

mt.HistDlt=30;

mt.HistLog=False;

mt.StatisticData(FALSE);

mt.SetHistSpace(100,100);

mt.SetHistSize(600,600);

mt.SetFontTitle(60,RGB(0,127,0));

mt.SetHistNote(TRUE);

mt.Draw();

Objectwnd=newUsrWnd;

wnd.name="直方图";

wnd.AddMeta(mt);

wnd.AppendMenu("保存为图形文件...","vvv");

wnd.AppendMenu("拷贝...","Copy");

wnd.AppendSeparator();

wnd.AppendMenu("打印...","vvx");

wnd.AppendMenu("设置打印机...","vvz");

wnd.SetScale(2,1);

wnd.SetBk(RGB(255,255,220));

wnd.Track();

}

}

voidvvv()

{

Objectwnd=GetCurWnd();

wnd.SaveMeta("");

}

voidvvx()

{

Objectwnd=GetCurWnd();

wnd.Print();

}

voidvvz()

{

Objectwnd=GetCurWnd();

wnd.SetPrinter();

}

voidCopy()

{

Objectwnd=GetCurWnd();

wnd.Copy();

}

程序执行结果产生图15-6所示直方图。

15.8使用图对象

分析图对象包括图形名称、比例尺、顶界和底界深度、上下左右的边界、主要和次要刻度等内容,直接引用其属性,不用Object类型定义。

例如:

将图形标题设置为“y4测录井图”,比例尺设置为1:

500,主深度刻度设置为10m,次深度刻度设置为2m,左右空白设置为20mm,上下空白设置为15mm的例子:

voidmain()

{

Title="y4测录井图";

Scale=500;

MainGrad=10;

SubGrad=2;

LRMargin=200;

TBMargin=150;

}

15.9使用列对象(CLogColumn)

列对象(CLogColumn)是图对象的组成单元,图是由多个列组成的,列又由若干个道组成;列对象内容包括列的宽度、风格和相应的操作函数等。

下面是将测录井图中第1列宽度设置为30m,第2列宽度设置为8m的例子:

voidmain()

{

GetColumn(0).Width=300;

GetColumn

(1).Width=80;

}

15.10使用道对象(CLogTrace)

道对象(ClogTrace)是图对象的基本组成单元,若干个道组成列;道对象内容包括道的名称、风格、刻度和相应的操作函数等等;它又可分为以下几种类型:

1)CvrTrace("测井曲线"):

曲线道,放置各类曲线;

2)DepthTrace("深度"):

深度道,显示井深;

3)CLithoTrace("岩性柱"):

岩型道,显示各类岩性和它的含油性;

4)CDiscreteTrace("离散数据"):

离散数据道,放置录井数据、分析化验数据和其它离散数据等;

5)CTextTrace("文本"):

文本道,放置层段文本内容;

6)CPropLayTrace("分层"):

分层道,放置层的分层解释结果;

7)CPictureTrace("图片"):

图片道,放置位图(*.bmp文件)、Windows图元文件(*.wmf文件)、Windows增强图元文件(*.emf文件)等图形内容。

8)CSymbolTrace("符号"):

符号道,用于放置各种符号。

9)CSampleTrace("样品"):

样品道,用于放置各种样品数据。

10)CCoreTrace("取心"):

取心道,用于放置取心数据。

1.例1——综合录井图格式:

voidmain()

{

Objectv;

v=NewTrace(0,"CDiscreteTrace","ROP");

v.Title="钻时";

v.Left=0;

v.Right=150;

v.LineColor=RGB(128,0,0);

v.LineWidth=4;

v=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1