第四部分 高级应用.docx
- 文档编号:3329828
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:163
- 大小:945.94KB
第四部分 高级应用.docx
《第四部分 高级应用.docx》由会员分享,可在线阅读,更多相关《第四部分 高级应用.docx(163页珍藏版)》请在冰豆网上搜索。
第四部分高级应用
第四部分高级应用
第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=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四部分 高级应用 第四 部分 高级 应用