@ -801,24 +801,24 @@ void CDataManagger::DataStatistics(int Type,
// //whp add 2020.4.9 for 波列曲线预览
// void CDataManagger::DisplayWave(const QString& FileName,const QString& WaveName)
// {
// CLogIO *logio=new CLogIO();
// if(!logio->Open(FileName.toStdString().c_str(),CSlfIO::modeRead))
// {
// delete logio;
// QMessageBox::warning(NULL,"提示","打开文件"+FileName+"错误");
// return ;
// }
// int index=logio->OpenWave(WaveName.toStdString().c_str());
// if(index<0){
// delete logio;
// return;
// }
// logio->CloseWave(index);
// delete logio;
// ShowWave *pDlg=new ShowWave();
// pDlg->FileName=FileName,pDlg->WaveName=WaveName;
// pDlg->init();
// pDlg->show();
// CLogIO *logio=new CLogIO();
// if(!logio->Open(FileName.toStdString().c_str(),CSlfIO::modeRead))
// {
// delete logio;
// QMessageBox::warning(NULL,"提示","打开文件"+FileName+"错误");
// return ;
// }
// int index=logio->OpenWave(WaveName.toStdString().c_str());
// if(index<0){
// delete logio;
// return;
// }
// logio->CloseWave(index);
// delete logio;
// ShowWave *pDlg=new ShowWave();
// pDlg->FileName=FileName,pDlg->WaveName=WaveName;
// pDlg->init();
// pDlg->show();
// }
// //whp add 2020.5.12 for 常规曲线预览
// void CDataManagger::DisplayCurve(const QString& FileName,const QString& CurveName)
@ -1462,239 +1462,241 @@ void CDataManagger::accept2()
}
void CDataManagger : : accept1 ( )
{
// QDialog*pd=(QDialog*)sender();
// int sdep=m_edit1->text().toFloat();
// int edep=m_edit2->text().toFloat();
// if(sdep>edep)
// {
// QMessageBox::information(pd,"提示","起始深度不能大于终止深度!",QMessageBox::Yes);
// return;
// }
// QString newCurve;
// CMemRdWt *mrw=new CMemRdWt();
// if(!mrw->Open(m_FileName.toStdString().c_str(),CSlfIO::modeReadWrite)) {
// delete mrw;
// return;
// }
// QString m_Function=m_edit3->text();
// m_Function.toUpper();
// m_Function.replace("\"DEPTH\"","CURRENT_HD.DEP");
// bool OutCurveExist=1;
// float CurveValue,rlev;
// Function fun;
// int noi=fun.GetExpress(m_Function);
// if(noi<0)
// {
// delete mrw;
// return ; //输入公式中没有“=”号,或含有不能处理的字符
// }
// //检查公式合理性
// for(int j=0;j<noi;j++)
// {
// fun.val[j]=j+1;
// }
// fun.prog=fun.TempProg;
// int re=fun.get_exp(&CurveValue);
// if(re>0)
// {
// static char *e[]={
// "语法错误", //"syntax error.",
// "不对称的括号", //"unbalanced parentheses",
// "非法运算符" //"no expression present"
// };
// QMessageBox::warning(pd,"提示",QString(QLatin1String(e[re-1]))+m_Function);
// delete mrw;
// return ;
// }
// char name[20];
// strcpy(name,fun.csOutName.toStdString().c_str());
// int in=mrw->FindObjectIndex(name);
// if(in>=0)
// {
// short objectType=mrw->GetObjectType(in);
// short Attribute,SubAttribute;
// mrw->GetObjectAttribute(in,&Attribute,&SubAttribute);
// if(mrw->GetObjectStatus(in)!=0) //删除状态
// {
// QMessageBox::warning(m_pDialog,"提示",fun.csOutName+" 曲线已存在,但该曲线处于删除状态,无法进行计算 !!!");
// delete mrw;
// return ;
// }
// if(objectType >CARD_OBJECT||objectType==0||objectType==CURVE_OBJECT)
// {
QDialog * pd = ( QDialog * ) sender ( ) ;
int sdep = m_edit1 - > text ( ) . toFloat ( ) ;
int edep = m_edit2 - > text ( ) . toFloat ( ) ;
if ( sdep > edep )
{
QMessageBox : : information ( pd , " 提示 " , " 起始深度不能大于终止深度! " , QMessageBox : : Yes ) ;
return ;
}
QString newCurve ;
CMemRdWt * mrw = new CMemRdWt ( ) ;
if ( ! mrw - > Open ( m_FileName . toStdString ( ) . c_str ( ) , CSlfIO : : modeReadWrite ) ) {
delete mrw ;
return ;
}
QString m_Function = m_edit3 - > text ( ) ;
m_Function . toUpper ( ) ;
m_Function . replace ( " \" DEPTH \" " , " CURRENT_HD.DEP " ) ;
bool OutCurveExist = 1 ;
float CurveValue , rlev ;
Function fun ;
int noi = fun . GetExpress ( m_Function ) ;
if ( noi < 0 )
{
delete mrw ;
return ; //输入公式中没有“=”号,或含有不能处理的字符
}
//检查公式合理性
for ( int j = 0 ; j < noi ; j + + )
{
fun . val [ j ] = j + 1 ;
}
fun . prog = fun . TempProg ;
int re = fun . get_exp ( & CurveValue ) ;
if ( re > 0 )
{
static const char * e [ ] = {
" 语法错误 " , //"syntax error.",
" 不对称的括号 " , //"unbalanced parentheses",
" 非法运算符 " //"no expression present"
} ;
QMessageBox : : warning ( pd , " 提示 " , QString ( QLatin1String ( e [ re - 1 ] ) ) + m_Function ) ;
delete mrw ;
return ;
}
char name [ 20 ] ;
strcpy ( name , fun . csOutName . toStdString ( ) . c_str ( ) ) ;
int in = mrw - > FindObjectIndex ( name ) ;
if ( in > = 0 )
{
short objectType = mrw - > GetObjectType ( in ) ;
short Attribute , SubAttribute ;
mrw - > GetObjectAttribute ( in , & Attribute , & SubAttribute ) ;
if ( mrw - > GetObjectStatus ( in ) ! = 0 ) //删除状态
{
QMessageBox : : warning ( m_pDialog , " 提示 " , fun . csOutName + " 曲线已存在,但该曲线处于删除状态,无法进行计算 !!! " ) ;
delete mrw ;
return ;
}
if ( objectType > CARD_OBJECT | | objectType = = 0 | | objectType = = CURVE_OBJECT )
{
// }
// else
// {
// QMessageBox::warning(m_pDialog,"提示",fun.csOutName+"对象已存在,但其属性不是曲线 !!!");
// delete mrw;
// return ;
// }
// }
// else
// { // 导入曲线不存在
// QString ss="目标曲线"+fun.csOutName+"不存在 \n 是否生成 ? \n";
// int flag = QMessageBox::warning(m_pDialog,tr("提示"),ss,QMessageBox::Yes,QMessageBox::No);
// if(flag != QMessageBox::Yes){
// delete mrw;
// return ;
// }
// OutCurveExist=0;
// }
// int index[20],indexout;
// float MinRlev=9999;
// DWORD CurveSample[20];
// float CurveRlev[20];
// Slf_CURVE info;
// for(int i=0;i<noi;i++)
// {
// if(fun.csName[i]=="CURRENT_HD.DEP")continue;
// if(mrw->GetObjectType(fun.csName[i].toStdString().c_str())!=CURVE_OBJECT)
// {
// QMessageBox::warning(m_pDialog,"提示","输入曲线"+fun.csName[i]+"不是曲线类型,不能进行计算!!!\r\n 请参考常规曲线计算规则,输入正确的计算公式");
// delete mrw;
// return ;
// }
// index[i]=mrw->OpenCurve(fun.csName[i].toStdString().c_str());
// if(index[i]<0)
// {
// delete mrw;
// QMessageBox::warning(m_pDialog,"提示","打开曲线"+fun.csName[i]+"出错,不能进行计算!!!");
// return ;
// }
// mrw->GetCurveInfo(index[i],&info);
// if(MinRlev>info.DepLevel)MinRlev=info.DepLevel;
// CurveRlev[i]=info.DepLevel;
// }
// if(MinRlev==9999)MinRlev=0.125; //表达式中没有实际曲线, 只有CURRENT_HD.DEP“深度”标识
// //生成导入曲线
}
else
{
QMessageBox : : warning ( m_pDialog , " 提示 " , fun . csOutName + " 对象已存在,但其属性不是曲线 !!! " ) ;
delete mrw ;
return ;
}
}
else
{ // 导入曲线不存在
QString ss = " 目标曲线 " + fun . csOutName + " 不存在 \n 是否生成 ? \n " ;
int flag = QMessageBox : : warning ( m_pDialog , tr ( " 提示 " ) , ss , QMessageBox : : Yes , QMessageBox : : No ) ;
if ( flag ! = QMessageBox : : Yes ) {
delete mrw ;
return ;
}
OutCurveExist = 0 ;
}
int index [ 20 ] , indexout ;
float MinRlev = 9999 ;
DWORD CurveSample [ 20 ] ;
float CurveRlev [ 20 ] ;
Slf_CURVE info ;
for ( int i = 0 ; i < noi ; i + + )
{
if ( fun . csName [ i ] = = " CURRENT_HD.DEP " ) continue ;
if ( mrw - > GetObjectType ( fun . csName [ i ] . toStdString ( ) . c_str ( ) ) ! = CURVE_OBJECT )
{
QMessageBox : : warning ( m_pDialog , " 提示 " , " 输入曲线 " + fun . csName [ i ] + " 不是曲线类型,不能进行计算!!! \r \n 请参考常规曲线计算规则,输入正确的计算公式 " ) ;
delete mrw ;
return ;
}
index [ i ] = mrw - > OpenCurve ( fun . csName [ i ] . toStdString ( ) . c_str ( ) ) ;
if ( index [ i ] < 0 )
{
delete mrw ;
QMessageBox : : warning ( m_pDialog , " 提示 " , " 打开曲线 " + fun . csName [ i ] + " 出错,不能进行计算!!! " ) ;
return ;
}
mrw - > GetCurveInfo ( index [ i ] , & info ) ;
if ( MinRlev > info . DepLevel ) MinRlev = info . DepLevel ;
CurveRlev [ i ] = info . DepLevel ;
}
if ( MinRlev = = 9999 ) MinRlev = 0.125 ; //表达式中没有实际曲线, 只有CURRENT_HD.DEP“深度”标识
//生成导入曲线
// if(OutCurveExist==0)
// {
// indexout=-1;
// for(int i=0;i<noi;i++)
// {
// if(fun.csName[i]=="CURRENT_HD.DEP")continue;
// mrw->GetCurveInfo(index[i],&info);
// sprintf(info.AliasName,"%s",fun.csOutName.toStdString().c_str());
// sprintf(info.Name,"%s",fun.csOutName.toStdString().c_str());
// info.StartDepth=m_edit1->text().toFloat();
// info.EndDepth=m_edit2->text().toFloat();
// indexout=mrw->OpenCurve(&info);
// break;
// }
// if(indexout==-1) //表达式中没有实际曲线, 只有CURRENT_HD.DEP“深度”标识
// {
// newCurve=fun.csOutName;
// sprintf(info.AliasName,"%s",fun.csOutName.toStdString().c_str());
// sprintf(info.Name,"%s",fun.csOutName.toStdString().c_str());
// info.StartDepth=m_edit1->text().toFloat();
// info.EndDepth=m_edit2->text().toFloat();
// info.DepLevel=0.125;
// info.CodeLen=4;
// info.RepCode=4;
// info.DefVal=-999.25;
// info.MaxValue=100;
// info.MinValue=0;
// strcpy(info.DepthHZUnit,"米");
// strcpy(info.DepthUnit,"m");
// strcpy(info.Unit,"");
// strcpy(info.AliasUnit,"");
// indexout=mrw->OpenCurve(&info);
// }
// }
// else
// {
// indexout=mrw->OpenCurve(fun.csOutName.toStdString().c_str());
// if(indexout>-1)mrw->GetCurveInfo(indexout,&info);
// }
// if(indexout<0)
// {
// delete mrw;
// QMessageBox::warning(m_pDialog,"提示"," 导入曲线不存在,而且输入曲线中没有可参考的常规曲线,无法进行曲线计算\r\n请参考常规曲线计算规则, 输入正确的计算公式");
// return ;
// }
// //检查导入曲线深度
// rlev = info.DepLevel;
// sdep = info.StartDepth;
// edep = info.EndDepth ;
// if(MinRlev>rlev)MinRlev=rlev;
// if ( m_edit1->text().toFloat() < sdep-rlev || m_edit2->text().toFloat() > edep+rlev)
// {
// int flag=QMessageBox::warning(m_pDialog,"提示","导入曲线的深度范围("+m_edit1->text()+"--"+m_edit2->text()+")超出输入曲线("+QString::number(sdep)+"--"+QString::number(edep)+"\n继续计算吗?",QMessageBox::Yes,QMessageBox::No);
// if(flag != QMessageBox::Yes){
// delete mrw;
// return ;
// }
// }
// int sample=(int)((m_edit2->text().toFloat()-m_edit1->text().toFloat())/rlev+1.5); //0.5);
// int sampleIn=(int)((m_edit2->text().toFloat()-m_edit1->text().toFloat())/MinRlev+1.5); //0.5);
// float **indata,*outdata;
// indata=new float*[noi];
// outdata=new float[sample+10];
// float *tDep,*aDep;
// tDep=new float[sample];
// for(int k=0; k<sample; k++) tDep[k]=sdep+k*rlev;
// for(int j=0;j<noi;j++)
// {
// if(fun.csName[j]=="CURRENT_HD.DEP")continue;
// indata[j]=new float[sampleIn];
// //whp change 2018.10.15 保证读写一致
// CurveSample[j]=(m_edit2->text().toFloat()-m_edit1->text().toFloat())/CurveRlev[j]+1.5; //0.5;
// mrw->ReadCurve(index[j],m_edit1->text().toFloat(),CurveSample[j],&indata[j][0]);
// if(fabs(CurveRlev[j]-rlev)/rlev>0.1)
// {
// aDep=new float[CurveSample[j]];
// for(int k=0; k<CurveSample[j]; k++) aDep[k]=sdep+k*CurveRlev[j];
// Resample::ReSampling(&indata[j][0],CurveSample[j],1,aDep,tDep,sample);
// delete []aDep;
// }
// }
// for (int i=0; i<sample; i++)
// {
// //sdep = sdeps + rlev * i;
// for(int j=0;j<noi;j++)
// {
// if(fun.csName[j]=="CURRENT_HD.DEP")fun.val[j]=m_edit1->text().toFloat()+i*rlev;
// else fun.val[j]=indata[j][i];
// }
// fun.prog=fun.TempProg;
// fun.get_exp(&CurveValue);
// outdata[i]=CurveValue;
// //2013.11.20 whp add for 为曲线计算添加数值类型选项: 常规, 不控制数值大小; 方位: 控制到0-360
if ( OutCurveExist = = 0 )
{
indexout = - 1 ;
for ( int i = 0 ; i < noi ; i + + )
{
if ( fun . csName [ i ] = = " CURRENT_HD.DEP " ) continue ;
mrw - > GetCurveInfo ( index [ i ] , & info ) ;
sprintf ( info . AliasName , " %s " , fun . csOutName . toStdString ( ) . c_str ( ) ) ;
sprintf ( info . Name , " %s " , fun . csOutName . toStdString ( ) . c_str ( ) ) ;
info . StartDepth = m_edit1 - > text ( ) . toFloat ( ) ;
info . EndDepth = m_edit2 - > text ( ) . toFloat ( ) ;
indexout = mrw - > OpenCurve ( & info ) ;
break ;
}
if ( indexout = = - 1 ) //表达式中没有实际曲线, 只有CURRENT_HD.DEP“深度”标识
{
newCurve = fun . csOutName ;
sprintf ( info . AliasName , " %s " , fun . csOutName . toStdString ( ) . c_str ( ) ) ;
sprintf ( info . Name , " %s " , fun . csOutName . toStdString ( ) . c_str ( ) ) ;
info . StartDepth = m_edit1 - > text ( ) . toFloat ( ) ;
info . EndDepth = m_edit2 - > text ( ) . toFloat ( ) ;
info . DepLevel = 0.125 ;
info . CodeLen = 4 ;
info . RepCode = 4 ;
info . DefVal = - 999.25 ;
info . MaxValue = 100 ;
info . MinValue = 0 ;
strcpy ( info . DepthHZUnit , " 米 " ) ;
strcpy ( info . DepthUnit , " m " ) ;
strcpy ( info . Unit , " " ) ;
strcpy ( info . AliasUnit , " " ) ;
indexout = mrw - > OpenCurve ( & info ) ;
}
}
else
{
indexout = mrw - > OpenCurve ( fun . csOutName . toStdString ( ) . c_str ( ) ) ;
if ( indexout > - 1 ) mrw - > GetCurveInfo ( indexout , & info ) ;
}
if ( indexout < 0 )
{
delete mrw ;
QMessageBox : : warning ( m_pDialog , " 提示 " , " 导入曲线不存在,而且输入曲线中没有可参考的常规曲线,无法进行曲线计算 \r \n 请参考常规曲线计算规则,输入正确的计算公式 " ) ;
return ;
}
//检查导入曲线深度
rlev = info . DepLevel ;
sdep = info . StartDepth ;
edep = info . EndDepth ;
if ( MinRlev > rlev ) MinRlev = rlev ;
if ( m_edit1 - > text ( ) . toFloat ( ) < sdep - rlev | | m_edit2 - > text ( ) . toFloat ( ) > edep + rlev )
{
int flag = QMessageBox : : warning ( m_pDialog , " 提示 " , " 导入曲线的深度范围( " + m_edit1 - > text ( ) + " -- " + m_edit2 - > text ( ) + " )超出输入曲线( " + QString : : number ( sdep ) + " -- " + QString : : number ( edep ) + " \n 继续计算吗? " , QMessageBox : : Yes , QMessageBox : : No ) ;
if ( flag ! = QMessageBox : : Yes ) {
delete mrw ;
return ;
}
}
int sample = ( int ) ( ( m_edit2 - > text ( ) . toFloat ( ) - m_edit1 - > text ( ) . toFloat ( ) ) / rlev + 1.5 ) ; //0.5);
int sampleIn = ( int ) ( ( m_edit2 - > text ( ) . toFloat ( ) - m_edit1 - > text ( ) . toFloat ( ) ) / MinRlev + 1.5 ) ; //0.5);
float * * indata , * outdata ;
indata = new float * [ noi ] ;
outdata = new float [ sample + 10 ] ;
float * tDep , * aDep ;
tDep = new float [ sample ] ;
for ( int k = 0 ; k < sample ; k + + ) tDep [ k ] = sdep + k * rlev ;
for ( int j = 0 ; j < noi ; j + + )
{
if ( fun . csName [ j ] = = " CURRENT_HD.DEP " ) continue ;
indata [ j ] = new float [ sampleIn ] ;
//whp change 2018.10.15 保证读写一致
CurveSample [ j ] = ( m_edit2 - > text ( ) . toFloat ( ) - m_edit1 - > text ( ) . toFloat ( ) ) / CurveRlev [ j ] + 1.5 ; //0.5;
mrw - > ReadCurve ( index [ j ] , m_edit1 - > text ( ) . toFloat ( ) , CurveSample [ j ] , & indata [ j ] [ 0 ] ) ;
if ( fabs ( CurveRlev [ j ] - rlev ) / rlev > 0.1 )
{
aDep = new float [ CurveSample [ j ] ] ;
for ( int k = 0 ; k < CurveSample [ j ] ; k + + ) aDep [ k ] = sdep + k * CurveRlev [ j ] ;
Resample : : ReSampling ( & indata [ j ] [ 0 ] , CurveSample [ j ] , 1 , aDep , tDep , sample ) ;
delete [ ] aDep ;
}
}
for ( int i = 0 ; i < sample ; i + + )
{
//sdep = sdeps + rlev * i;
for ( int j = 0 ; j < noi ; j + + )
{
if ( fun . csName [ j ] = = " CURRENT_HD.DEP " ) fun . val [ j ] = m_edit1 - > text ( ) . toFloat ( ) + i * rlev ;
else fun . val [ j ] = indata [ j ] [ i ] ;
}
fun . prog = fun . TempProg ;
fun . get_exp ( & CurveValue ) ;
outdata [ i ] = CurveValue ;
//2013.11.20 whp add for 为曲线计算添加数值类型选项: 常规, 不控制数值大小; 方位: 控制到0-360
// }
// mrw->WriteCurve(indexout,m_edit1->text().toFloat(),sample,&outdata[0]);
// delete []tDep;
}
mrw - > WriteCurve ( indexout , m_edit1 - > text ( ) . toFloat ( ) , sample , & outdata [ 0 ] ) ;
delete [ ] tDep ;
// for (int i=0; i<noi;i++)
// {
// if(fun.csName[i]=="CURRENT_HD.DEP")continue;
// mrw->CloseCurve(index[i]);
// }
// mrw->CloseCurve(indexout);
for ( int i = 0 ; i < noi ; i + + )
{
if ( fun . csName [ i ] = = " CURRENT_HD.DEP " ) continue ;
mrw - > CloseCurve ( index [ i ] ) ;
}
mrw - > CloseCurve ( indexout ) ;
// for(int j=0;j<noi;j++)
// {
// if(fun.csName[j]=="CURRENT_HD.DEP")continue;
// delete indata[j];
// }
// delete []indata;
// delete []outdata;
// Slf_FILE_MESSAGE msag;
// mrw->GetFileMessage(msag);
// delete mrw;
// GetObjectEvent().OnDeAttchData(m_FileName,fun.csOutName);
// GetObjectEvent().OnRefreshData(m_FileName,fun.csOutName,this);
for ( int j = 0 ; j < noi ; j + + )
{
if ( fun . csName [ j ] = = " CURRENT_HD.DEP " ) continue ;
delete indata [ j ] ;
}
delete [ ] indata ;
delete [ ] outdata ;
Slf_FILE_MESSAGE msag ;
mrw - > GetFileMessage ( msag ) ;
delete mrw ;
// GetObjectEvent().OnDeAttchData(m_FileName,fun.csOutName);
// GetObjectEvent().OnRefreshData(m_FileName,fun.csOutName,this);
// QStringList CurveNames;
// CurveNames.push_back(msag.WellName);
// CurveNames.push_back(m_FileName);
// CurveNames.push_back(fun.csOutName);
// if(!newCurve.isEmpty())CurveNames.push_back(newCurve);
// PaiObject::m_EventAgent.ObjectPropertyChanged(GetProject(),"Compute",CurveNames);
// QMessageBox::information(m_pDialog,"提示","计算完毕!",QMessageBox::Ok);
QStringList CurveNames ;
CurveNames . push_back ( msag . WellName ) ;
CurveNames . push_back ( m_FileName ) ;
CurveNames . push_back ( fun . csOutName ) ;
if ( ! newCurve . isEmpty ( ) ) CurveNames . push_back ( newCurve ) ;
// PaiObject::m_EventAgent.ObjectPropertyChanged(GetProject(),"Compute",CurveNames);
QStringList CurveNames1 ;
CurveNames1 . append ( fun . csOutName ) ;
emit CallGlobalManage : : getInstance ( ) - > sig_Notice_Changed ( " DataMgr " , m_FileName , CurveNames1 ) ;
QMessageBox : : information ( m_pDialog , " 提示 " , " 计算完毕! " , QMessageBox : : Ok ) ;
}
//曲线计算
// void CDataManagger::CurveCompute(QList<CObjWellLog*>objs,int no)
@ -1783,101 +1785,101 @@ void CDataManagger::accept1()
// }
// }
// void CDataManagger::CurveCompute(const QString& FileName,const QStringList& CurveNameList)
// {
// m_CurveNameList=CurveNameList;
// if(CurveNameList.count()==1)
// {
// QDialog dialog(NULL);
// dialog.setModal(false);
// m_pDialog=&dialog;
// Qt::WindowFlags flags = dialog.windowFlags();
// flags |= Qt::WindowStaysOnTopHint;
// flags &= ~Qt::WindowContextHelpButtonHint;
// dialog.setWindowFlags(flags);
// dialog.setWindowTitle(QString("曲线计算"));
// QFormLayout form(&dialog);
// QString CurveName=CurveNameList[0];
void CDataManagger : : CurveCompute ( const QString & FileName , const QStringList & CurveNameList )
{
m_CurveNameList = CurveNameList ;
if ( CurveNameList . count ( ) = = 1 )
{
QDialog dialog ( NULL ) ;
dialog . setModal ( false ) ;
m_pDialog = & dialog ;
Qt : : WindowFlags flags = dialog . windowFlags ( ) ;
flags | = Qt : : WindowStaysOnTopHint ;
flags & = ~ Qt : : WindowContextHelpButtonHint ;
dialog . setWindowFlags ( flags ) ;
dialog . setWindowTitle ( QString ( " 曲线计算 " ) ) ;
QFormLayout form ( & dialog ) ;
QString CurveName = CurveNameList [ 0 ] ;
// m_CurveName=CurveNameList[0];
// m_FileName=FileName;
// CMemRdWt *mrw=new CMemRdWt();
// if(!mrw->Open(FileName.toStdString().c_str(),CSlfIO::modeReadWrite)) {
// delete mrw;
// return;
// }
// int index=mrw->OpenCurve(CurveName.toStdString().c_str());
// if(index<0) {
// delete mrw;
// return;
// }
// Slf_CURVE pInfo;
// mrw->GetCurveInfo(index,&pInfo);
// Slf_FILE_MESSAGE msag;
// mrw->GetFileMessage(msag);
// delete mrw;
// // 开始深度
// QString value1 = QString("开始深度: ");
// QLineEdit *edit1 = new QLineEdit(&dialog);
// m_edit1=edit1;
// form.addRow(value1, edit1);
// edit1->setText(QString::number(pInfo.StartDepth));
// edit1->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
m_CurveName = CurveNameList [ 0 ] ;
m_FileName = FileName ;
CMemRdWt * mrw = new CMemRdWt ( ) ;
if ( ! mrw - > Open ( FileName . toStdString ( ) . c_str ( ) , CSlfIO : : modeReadWrite ) ) {
delete mrw ;
return ;
}
int index = mrw - > OpenCurve ( CurveName . toStdString ( ) . c_str ( ) ) ;
if ( index < 0 ) {
delete mrw ;
return ;
}
Slf_CURVE pInfo ;
mrw - > GetCurveInfo ( index , & pInfo ) ;
Slf_FILE_MESSAGE msag ;
mrw - > GetFileMessage ( msag ) ;
delete mrw ;
// 开始深度
QString value1 = QString ( " 开始深度: " ) ;
QLineEdit * edit1 = new QLineEdit ( & dialog ) ;
m_edit1 = edit1 ;
form . addRow ( value1 , edit1 ) ;
edit1 - > setText ( QString : : number ( pInfo . StartDepth ) ) ;
edit1 - > setValidator ( new QDoubleValidator ( - 9999999 , 9999999 , 6 , this ) ) ;
// // 终止深度
// QString value2 = QString("终止深度: ");
// QLineEdit *edit2 = new QLineEdit(&dialog);
// edit2->setValidator(new QDoubleValidator(-9999999,9999999,6,this));
// m_edit2=edit2;
// form.addRow(value2, edit2);
// edit2->setText(QString::number(pInfo.EndDepth));
// //计算公式
// QString value3 = QString("计算公式: ");
// QLineEdit *edit3 = new QLineEdit(&dialog);
// form.addRow(value3, edit3);
// QString ss=CurveName+"=1.0*"+CurveName+"+0.0";
// edit3->setText(ss);
// m_edit2=edit2;
// m_edit3=edit3;
// QString value4 = QString("\n常用数学运算符:\n 加:+,减:-,乘:*,除:/,取余:%,乘方:^,对数:!\n")+
// QString(" 如: PAR =SP/CAL+RT^2.5-10!AC\n 10!表示取以10为底的对数,1! 表示取自然对数");
// QString value5 = QString("\n规则及约定:\n 1、输入对象必须是常规曲线名、深度标识或常量\n")+
// QString(" 如:GR=2*GR+5; GR2=45; TEMP=18+0.038*\"DEPTH\"\n")+
// QString(" 其中:\"DEPTH\"表示深度;\n")+
// QString(" 2、当导入曲线不存在时:\n 如果有输入曲线存在,程序自动根据第一条输入曲线的属性产生导入曲线;\n")+
// QString(" 否则, 程序自动产生一条浮点类型的导入曲线, 采样间隔为0.125。");
// form.addRow(new QLabel(value4));
// form.addRow(new QLabel(value5));
// // Add Cancel and OK button
// QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
// Qt::Horizontal, &dialog);
// form.addRow(&buttonBox);
// QObject::connect(&buttonBox, SIGNAL(accepted()), this, SLOT(accept1()));
// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
// // Process when OK button is clicked
// dialog.show();
// if (dialog.exec() == QDialog::Accepted)
// {
// }
// pai::graphics::CDataImport::ChangetoSlf(FileName,NULL);
// }
// else
// {
// CCurveComputerDlg *pDlg=new CCurveComputerDlg();
// pDlg->FileName=FileName;
// pDlg->CurveNameList=CurveNameList;
// pDlg->init(); //FileName, CurveNameList);
// pDlg->setModal(false);
// Qt::WindowFlags flags = pDlg->windowFlags();
// flags |= Qt::WindowStaysOnTopHint;
// pDlg->setWindowFlags(flags);
// pDlg->exec();
// delete pDlg;
// pDlg=NULL;
// pai::graphics::CDataImport::ChangetoSlf(FileName,NULL);
// QMessageBox::information(NULL,"提示","计算完毕!",QMessageBox::Ok);
// }
// }
// 终止深度
QString value2 = QString ( " 终止深度: " ) ;
QLineEdit * edit2 = new QLineEdit ( & dialog ) ;
edit2 - > setValidator ( new QDoubleValidator ( - 9999999 , 9999999 , 6 , this ) ) ;
m_edit2 = edit2 ;
form . addRow ( value2 , edit2 ) ;
edit2 - > setText ( QString : : number ( pInfo . EndDepth ) ) ;
//计算公式
QString value3 = QString ( " 计算公式: " ) ;
QLineEdit * edit3 = new QLineEdit ( & dialog ) ;
form . addRow ( value3 , edit3 ) ;
QString ss = CurveName + " =1.0* " + CurveName + " +0.0 " ;
edit3 - > setText ( ss ) ;
m_edit2 = edit2 ;
m_edit3 = edit3 ;
QString value4 = QString ( " \n 常用数学运算符: \n 加:+,减:-,乘:*,除:/,取余:%,乘方:^,对数:! \n " ) +
QString ( " 如: PAR =SP/CAL+RT^2.5-10!AC \n 10!表示取以10为底的对数,1! 表示取自然对数 " ) ;
QString value5 = QString ( " \n 规则及约定: \n 1、输入对象必须是常规曲线名、深度标识或常量 \n " ) +
QString ( " 如:GR=2*GR+5; GR2=45; TEMP=18+0.038* \" DEPTH \" \n " ) +
QString ( " 其中: \" DEPTH \" 表示深度; \n " ) +
QString ( " 2、当导入曲线不存在时: \n 如果有输入曲线存在,程序自动根据第一条输入曲线的属性产生导入曲线; \n " ) +
QString ( " 否则, 程序自动产生一条浮点类型的导入曲线, 采样间隔为0.125。 " ) ;
form . addRow ( new QLabel ( value4 ) ) ;
form . addRow ( new QLabel ( value5 ) ) ;
// Add Cancel and OK button
QDialogButtonBox buttonBox ( QDialogButtonBox : : Ok | QDialogButtonBox : : Cancel ,
Qt : : Horizontal , & dialog ) ;
form . addRow ( & buttonBox ) ;
QObject : : connect ( & buttonBox , SIGNAL ( accepted ( ) ) , this , SLOT ( accept1 ( ) ) ) ;
QObject : : connect ( & buttonBox , SIGNAL ( rejected ( ) ) , & dialog , SLOT ( reject ( ) ) ) ;
// Process when OK button is clicked
dialog . show ( ) ;
if ( dialog . exec ( ) = = QDialog : : Accepted )
{
}
CDataImport : : ChangetoSlf ( FileName , NULL ) ;
}
else
{
CCurveComputerDlg * pDlg = new CCurveComputerDlg ( ) ;
pDlg - > FileName = FileName ;
pDlg - > CurveNameList = CurveNameList ;
pDlg - > init ( ) ; //FileName, CurveNameList);
pDlg - > setModal ( false ) ;
Qt : : WindowFlags flags = pDlg - > windowFlags ( ) ;
flags | = Qt : : WindowStaysOnTopHint ;
pDlg - > setWindowFlags ( flags ) ;
pDlg - > exec ( ) ;
delete pDlg ;
pDlg = NULL ;
CDataImport : : ChangetoSlf ( FileName , NULL ) ;
QMessageBox : : information ( NULL , " 提示 " , " 计算完毕! " , QMessageBox : : Ok ) ;
}
}
void CDataManagger : : CallDisplayWaveOrCurve ( int Type , const QString & FileName ,
const QString & CurveName , QWidget * parent )