追加曲线拼接处理

This commit is contained in:
jiayulong 2026-01-30 09:47:13 +08:00
parent 9b7c8bbda1
commit cb9506dcc3
8 changed files with 433 additions and 28 deletions

View File

@ -125,7 +125,7 @@ signals:
void sig_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iTableType, QString strFormInfoType);
//修改曲线选择状态 iSelect=0未知1标准曲线2主校曲线3从校曲线
void sig_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect);
void sig_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect, bool bMerge);
//插件测试
void sig_testPlugin(QString strInfo);
@ -166,6 +166,10 @@ signals:
void sig_RuncorFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
void sig_Runcor_List(QString strUuid, QList<double> left_Low_List, QList<double> right_Hight_List);
//执行拼接
void sig_MergeFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
void sig_Merge_List(QString strUuid, QList<double> left_Low_List, QList<double> right_Hight_List);
//Plot重新加载数据
void sig_ReloadPlot(QString strUuid, QString strSlfName, QString strLineName);

View File

@ -57,7 +57,7 @@ FormInfo::FormInfo(QWidget *parent, QString strSlfName, QString strWellName, QSt
//修改曲线选择状态 iSelect=0未知1标准曲线2主曲线3从曲线
connect(CallManage::getInstance(), SIGNAL(sig_ChangeLineStatus(QString, QString, QString, QString, QString, int)), this, SLOT(s_ChangeLineStatus(QString, QString, QString, QString, QString, int)));
connect(CallManage::getInstance(), SIGNAL(sig_ChangeLineStatus(QString, QString, QString, QString, QString, int, bool)), this, SLOT(s_ChangeLineStatus(QString, QString, QString, QString, QString, int, bool)));
}
@ -221,15 +221,33 @@ void FormInfo::paintEvent(QPaintEvent* event)
}
else if(m_iSelect==1)
{
strAliasNameTmp = strAliasNameTmp + "-标";
if(m_bMerge)//是拼接状态
{
strAliasNameTmp = strAliasNameTmp + "-目";
}
else {
strAliasNameTmp = strAliasNameTmp + "-标";
}
}
else if(m_iSelect==2)
{
strAliasNameTmp = strAliasNameTmp + "-主校";
if(m_bMerge)//是拼接状态
{
strAliasNameTmp = strAliasNameTmp + "-源";
}
else {
strAliasNameTmp = strAliasNameTmp + "-主校";
}
}
else if(m_iSelect==3)
{
strAliasNameTmp = strAliasNameTmp + "-从校";
if(m_bMerge)//是拼接状态
{
strAliasNameTmp = strAliasNameTmp + "-从接";
}
else {
strAliasNameTmp = strAliasNameTmp + "-从校";
}
}
painter.drawText(rect.left(), rect.top(), rect.width(), rect.height()/3, Qt::AlignCenter, strAliasNameTmp);
}
@ -482,7 +500,7 @@ QColor FormInfo::getBackColor()
}
//修改曲线选择状态 iSelect=0未知1标准曲线2主曲线3从曲线
void FormInfo::s_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect)
void FormInfo::s_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect, bool bMerge)
{
if(m_strUuid == strUuid &&
m_strSlfName == strSlfName &&
@ -491,6 +509,7 @@ void FormInfo::s_ChangeLineStatus(QString strUuid, QString strSlfName, QString s
m_strLineName == strLineName)
{
m_iSelect = iSelect;
m_bMerge = bMerge;
update();
}
}

View File

@ -55,7 +55,7 @@ public slots:
float vMin, float vMax, QString strOtherScaleType, QColor frontColor, QColor backColor, QString newFillMode, bool bFillNow);
//修改曲线选择状态 iSelect=0未知1标准曲线2主曲线3从曲线
void s_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect);
void s_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect, bool bMerge);
public:
QString m_strUuid;
@ -67,6 +67,7 @@ public:
QString m_strUnit;//单位
int m_iSelect=0; //iSelect=0未知1标准曲线2主曲线3从曲线
bool m_bMerge = false;//是拼接状态,否代表校深状态。为了切换时做数据清理
QString m_strType;//类型curve, wave
//
double m_dWidth;//线宽

View File

@ -40,6 +40,7 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
// 设置工具栏的位置,此处设置为在左侧
addToolBar(Qt::LeftToolBarArea, ui->toolBar);
addToolBar(Qt::RightToolBarArea, ui->toolBar_2);
addToolBar(Qt::RightToolBarArea, ui->toolBar_3);
//初始化工具栏
initMainToolBar();
@ -47,6 +48,9 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
//校深
initToolBar_2();
ui->toolBar_2->hide();
//拼接
initToolBar_3();
ui->toolBar_3->hide();
//加载样式
loadStyle(":/qrc/qss/flatgray.css");
@ -128,6 +132,9 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
//执行校正
connect(CallManage::getInstance(), SIGNAL(sig_Runcor_List(QString, QList<double>, QList<double>)), this, SLOT(s_Runcor_List(QString, QList<double>, QList<double>)));
//执行拼接
connect(CallManage::getInstance(), SIGNAL(sig_Merge_List(QString, QList<double>, QList<double>)), this, SLOT(s_Merge_List(QString, QList<double>, QList<double>)));
//图头
m_dock1=new QDockWidget(tr(""),this);
m_dock1->setFeatures(QDockWidget::NoDockWidgetFeatures);//QDockWidget::DockWidgetMovable
@ -179,6 +186,7 @@ void MainWindowCurve::initMainToolBar()
QIcon currtempliteIcon(::GetImagePath()+"icon/currtemplite.png");
QIcon saveastemplateIcon(::GetImagePath()+"icon/saveastemplate.png");
QIcon executeDepthShiftIcon(::GetImagePath()+"icon/ExecuteDepthShift.png");
QIcon joindepthIcon(::GetImagePath()+"icon/joindepth.png");
QIcon ModuleOpenIcon(::GetImagePath()+"icon/ModuleOne.png");
QIcon openFileIcon(":/image/open.png");
QIcon runIcon(":/image/capacity.png");
@ -190,6 +198,7 @@ void MainWindowCurve::initMainToolBar()
QAction* m_currtempliteAc = nullptr; //加载图文件
QAction* m_saveastemplateAc = nullptr; //另存为图文件
QAction* m_executeDepthShiftAc = nullptr; //校深
QAction* m_joindepthAc = nullptr; //拼接
QAction* m_ModuleOpenAc = nullptr; //处理方法
//QAction* m_openAc = nullptr; //打开
// QAction* m_runAc = nullptr;//
@ -200,6 +209,7 @@ void MainWindowCurve::initMainToolBar()
m_currtempliteAc = new QAction(currtempliteIcon, "加载图文件", this);
m_saveastemplateAc = new QAction(saveastemplateIcon, "另存为图文件", this);
m_executeDepthShiftAc = new QAction(executeDepthShiftIcon, "校深", this);
m_joindepthAc = new QAction(joindepthIcon, "拼接", this);
m_ModuleOpenAc = new QAction(ModuleOpenIcon, "处理方法", this);
// m_runAc = new QAction(runIcon, "设置井", this);
// m_debugAc = new QAction(debugIcon, "撤销", this);
@ -213,6 +223,7 @@ void MainWindowCurve::initMainToolBar()
ui->mainToolBar->addAction(m_currtempliteAc);
ui->mainToolBar->addAction(m_saveastemplateAc);
ui->mainToolBar->addAction(m_executeDepthShiftAc);
ui->mainToolBar->addAction(m_joindepthAc);
ui->mainToolBar->addAction(m_ModuleOpenAc);
// ui->mainToolBar->addAction(m_runAc);
// ui->mainToolBar->addAction(m_debugAc);
@ -223,6 +234,7 @@ void MainWindowCurve::initMainToolBar()
connect(m_currtempliteAc, &QAction::triggered, this, &MainWindowCurve::s_currtemplite);
connect(m_saveastemplateAc, &QAction::triggered, this, &MainWindowCurve::s_Save);
connect(m_executeDepthShiftAc, &QAction::triggered, this, &MainWindowCurve::s_ExecuteDepthShift);
connect(m_joindepthAc, &QAction::triggered, this, &MainWindowCurve::s_ExecuteMerge);
connect(m_ModuleOpenAc, &QAction::triggered, this, &MainWindowCurve::s_ModuleOpen);
@ -482,11 +494,11 @@ void MainWindowCurve::initToolBar_2()
//add QAction to Widget.
ui->toolBar_2->addAction(m_ShiftAc);
ui->toolBar_2->addAction(m_MoveShiftAc);
ui->toolBar_2->addAction(m_DepthShiftAc);
//ui->toolBar_2->addAction(m_DepthShiftAc);
ui->toolBar_2->addSeparator();
ui->toolBar_2->addAction(m_StandardAc);
ui->toolBar_2->addAction(m_CorrectionAc);
ui->toolBar_2->addAction(m_ShiftotherAc);
//ui->toolBar_2->addAction(m_ShiftotherAc);
ui->toolBar_2->addSeparator();
ui->toolBar_2->addAction(m_autocorAc);
ui->toolBar_2->addAction(m_runcorAc);
@ -504,7 +516,68 @@ void MainWindowCurve::initToolBar_2()
connect(m_runcorAc, &QAction::triggered, this, &MainWindowCurve::s_runcor);
connect(m_ClearAllSetCurveAc, &QAction::triggered, this, &MainWindowCurve::s_ClearAllSetCurve);
connect(m_ClearSetCurveAc, &QAction::triggered, this, &MainWindowCurve::s_ClearSetCurve);
}
//初始化工具栏
void MainWindowCurve::initToolBar_3()
{
QSize toolIconSize(26, 26);
ui->toolBar_3->setIconSize(toolIconSize); //设置工具栏图标大小
QIcon StandardIcon(::GetImagePath()+"icon/Standard.png");
QIcon CorrectionIcon(::GetImagePath()+"icon/Correction.png");
QIcon ShiftotherIcon(::GetImagePath()+"icon/Shiftother.png");
QIcon PreMegIcon(::GetImagePath()+"icon/PreMeg.png");
QIcon mergeIcon(::GetImagePath()+"icon/merge.png");
QIcon ClearAllSetCurveIcon(::GetImagePath()+"icon/ClearAllSetCurve.png");
QIcon ClearSetCurveIcon(::GetImagePath()+"icon/ClearSetCurve.png");
//工具栏
QAction* m_StandardAc = nullptr;
QAction* m_CorrectionAc = nullptr;
QAction* m_ShiftotherAc = nullptr;
QAction* m_PreMegAc = nullptr;
QAction* m_mergeAc = nullptr;
QAction* m_ClearAllSetCurveAc = nullptr;
QAction* m_ClearSetCurveAc = nullptr;
m_StandardAc = new QAction(StandardIcon, "", this);
m_CorrectionAc = new QAction(CorrectionIcon, "", this);
m_ShiftotherAc = new QAction(ShiftotherIcon, "", this);
m_PreMegAc = new QAction(PreMegIcon, "", this);
m_mergeAc = new QAction(mergeIcon, "", this);
m_ClearAllSetCurveAc = new QAction(ClearAllSetCurveIcon, "", this);
m_ClearSetCurveAc = new QAction(ClearSetCurveIcon, "", this);
m_StandardAc->setToolTip("设置/取消目标拼接曲线");
m_CorrectionAc->setToolTip("设置/取消源拼接曲线");
m_ShiftotherAc->setToolTip("批量设置从拼接曲线");
m_PreMegAc->setToolTip("拼接效果预览");
m_mergeAc->setToolTip("执行拼接");
m_ClearAllSetCurveAc->setToolTip("清除全部曲线设置");
m_ClearSetCurveAc->setToolTip("清除全部从曲线设置");
//此种方式为文字显示在图标右侧
ui->toolBar_3->setToolButtonStyle(Qt::ToolButtonIconOnly);
//add QAction to Widget.
ui->toolBar_3->addAction(m_StandardAc);
ui->toolBar_3->addAction(m_CorrectionAc);
//ui->toolBar_3->addAction(m_ShiftotherAc);
ui->toolBar_3->addSeparator();
//ui->toolBar_3->addAction(m_PreMegAc);
ui->toolBar_3->addAction(m_mergeAc);
ui->toolBar_3->addSeparator();
ui->toolBar_3->addAction(m_ClearAllSetCurveAc);
ui->toolBar_3->addAction(m_ClearSetCurveAc);
connect(m_StandardAc, &QAction::triggered, this, &MainWindowCurve::s_Standard);
connect(m_CorrectionAc, &QAction::triggered, this, &MainWindowCurve::s_Correction);
//// connect(m_ShiftotherAc, &QAction::triggered, this, &MainWindowCurve::s_Shiftother);
// connect(m_autocorAc, &QAction::triggered, this, &MainWindowCurve::s_autocor);
connect(m_mergeAc, &QAction::triggered, this, &MainWindowCurve::s_merge);
connect(m_ClearAllSetCurveAc, &QAction::triggered, this, &MainWindowCurve::s_ClearAllSetCurve);
connect(m_ClearSetCurveAc, &QAction::triggered, this, &MainWindowCurve::s_ClearSetCurve);
}
QStringList MainWindowCurve::getLineList(QString strWellName, QString strTrackName)
@ -790,7 +863,7 @@ void MainWindowCurve::s_MoveShift()
}
}
//设置/取消标准曲线
//设置/取消标准(目标拼接)曲线
void MainWindowCurve::s_Standard()
{
if(m_SelectTableItem.m_iTableType==0) {
@ -813,7 +886,7 @@ void MainWindowCurve::s_Standard()
return;
}
//主校曲线中,去掉本条曲线
//主校(源拼接)曲线中,去掉本条曲线
if(m_RightCurve.m_strSlfName == m_SelectTableItem.m_strSlfName &&
m_RightCurve.m_strWellName == m_SelectTableItem.m_strWellName &&
m_RightCurve.m_strTrackName == m_SelectTableItem.m_strTrackName &&
@ -829,7 +902,7 @@ void MainWindowCurve::s_Standard()
m_RightCurve.m_strFormInfoType="";
}
//从校曲线中,去掉本条曲线
//从校(从拼接)曲线中,去掉本条曲线
for(int i=0; i<m_ShiftCurves.size(); i++)
{
SelectTableItem m_TempCurve = m_ShiftCurves[i];
@ -845,8 +918,8 @@ void MainWindowCurve::s_Standard()
}
}
//iSelect=0未知1标准曲线2主校曲线3从校曲线
//当前有标准曲线
//iSelect=0未知1标准(目标拼接)曲线2主校(源拼接)曲线3从校(从拼接)曲线
//当前有标准(目标拼接)曲线
if(m_LeftCurve.m_iTableType==3 && m_LeftCurve.m_strFormInfoType=="curveObject")
{
//当前已经选中为标准曲线
@ -856,7 +929,7 @@ void MainWindowCurve::s_Standard()
m_LeftCurve.m_strLineName == m_SelectTableItem.m_strLineName)
{
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 0, m_bMerge);
//标准曲线中,切换为不选择
m_LeftCurve.m_iTableType=0;
@ -870,10 +943,10 @@ void MainWindowCurve::s_Standard()
else
{
//修改原来的标准曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName, 0, m_bMerge);
//修改当前曲线选择状态 iSelect=1标准曲线
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 1);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 1, m_bMerge);
//设置标准曲线
m_LeftCurve = m_SelectTableItem;
@ -883,14 +956,14 @@ void MainWindowCurve::s_Standard()
{
//当前没有标准曲线
//修改当前曲线选择状态 iSelect=1标准曲线
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 1);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 1, m_bMerge);
//设置标准曲线
m_LeftCurve = m_SelectTableItem;
}
}
//设置/取消校正曲线
//设置/取消校正(源拼接)曲线
void MainWindowCurve::s_Correction()
{
if(m_SelectTableItem.m_iTableType==0) {
@ -945,7 +1018,7 @@ void MainWindowCurve::s_Correction()
m_TempCurve.m_strLineName == m_SelectTableItem.m_strLineName)
{
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 0, m_bMerge);
//删除从校曲线
m_ShiftCurves.removeAt(i);
@ -964,7 +1037,7 @@ void MainWindowCurve::s_Correction()
m_RightCurve.m_strLineName == m_SelectTableItem.m_strLineName)
{
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 0, m_bMerge);
//主校曲线中,切换为不选择
m_RightCurve.m_iTableType=0;
@ -978,7 +1051,7 @@ void MainWindowCurve::s_Correction()
else
{
//修改当前曲线选择状态 iSelect=3从校曲线
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 3);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 3, m_bMerge);
//设置从校曲线
m_ShiftCurves.append(m_SelectTableItem);
@ -988,7 +1061,7 @@ void MainWindowCurve::s_Correction()
{
//当前没有主校曲线
//修改当前曲线选择状态 iSelect=2主校曲线
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 2);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, m_SelectTableItem.m_strLineName, 2, m_bMerge);
//设置主校曲线
m_RightCurve = m_SelectTableItem;
@ -1293,7 +1366,6 @@ void MainWindowCurve::s_runcor()
//通知界面,执行校正
emit CallManage::getInstance()->sig_RuncorFromPlot(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName);
}
void MainWindowCurve::s_Runcor_List(QString strUuid, QList<double> left_Low_List, QList<double> right_Hight_List)
@ -1462,6 +1534,218 @@ void MainWindowCurve::s_Runcor_List(QString strUuid, QList<double> left_Low_List
}
}
//执行拼接
void MainWindowCurve::s_merge()
{
//当前有标准(目标)曲线
if(m_LeftCurve.m_iTableType==3 && m_LeftCurve.m_strFormInfoType=="curveObject")
{
}
else
{
QMessageBox::warning(this, "提示", "请先选择目标曲线!");
return;
}
//当前有主校(源拼接)曲线
if(m_RightCurve.m_iTableType==3 && m_RightCurve.m_strFormInfoType=="curveObject")
{
}
else
{
QMessageBox::warning(this, "提示", "请先选择源拼接曲线!");
return;
}
//通知界面,执行校正
emit CallManage::getInstance()->sig_MergeFromPlot(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName);
}
void MainWindowCurve::s_Merge_List(QString strUuid, QList<double> left_Low_List, QList<double> right_Hight_List)
{
if(strUuid != m_strUuid)
{
return;
}
//当前有标准(目标)曲线
if(m_LeftCurve.m_iTableType==3 && m_LeftCurve.m_strFormInfoType=="curveObject")
{
}
else
{
QMessageBox::warning(this, "提示", "无目标井!");
return;
}
//当前有主校(源拼接)曲线
if(m_RightCurve.m_iTableType==3 && m_RightCurve.m_strFormInfoType=="curveObject")
{
}
else
{
QMessageBox::warning(this, "提示", "缺少目标曲线或目标曲线无效!");
return;
}
m_mergeLineList.clear();
//
int pointnum =left_Low_List.size();
//
for(int i=0;i<pointnum;i++)
{
CurveLine * pLine = new CurveLine();
pLine->SetLeftDepth(left_Low_List[i]);
pLine->SetRightDepth(right_Hight_List[i]);
m_mergeLineList.append(pLine);
}
qsort(m_mergeLineList,0,m_mergeLineList.size()-1,0);
if(pointnum<1) {
QMessageBox::warning(this, "提示", "曲线拼接深度点不存在,无法拼接!\n请先设置拼接深度点。");
return;
}
if(pointnum>2) {
QMessageBox::warning(this, "提示", "曲线拼接深度点太多最多可设置2点\n请重新设置拼接深度点。");
return;
}
// float SourSdep=0;
// float SourEdep=0;
// float DectSdep=0;
// if(pointnum==1) {
// QMessageBox box(QMessageBox::Warning,"提示","拼接深度点仅有1个请您选择拼接部位");
// box.setStandardButtons (QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
// box.setButtonText(QMessageBox::Yes,QString("拼接上段"));
// box.setButtonText(QMessageBox::No,QString("拼接下段"));
// box.setButtonText(QMessageBox::Cancel,QString("放弃"));
// int flag=box.exec();//QMessageBox::information(NULL,"敬告",pwelllog->GetName()+mess,QMessageBox::Yes,QMessageBox::No,QMessageBox::Cancel);
// if(flag==QMessageBox::Yes) {
// SourSdep=m_RightCurve->GetTopDepth();
// SourEdep=m_mergeLineList[0]->GetLeftDepth();
// DectSdep=SourSdep;
// }
// else if(flag==QMessageBox::No) {
// DectSdep=m_mergeLineList[0]->GetLeftDepth();
// SourEdep=m_RightCurve->GetBottomDepth();
// SourSdep=m_mergeLineList[0]->GetRightDepth();
// }
// else return;
// }
// else if(pointnum==2) {
// SourSdep=m_mergeLineList[0]->GetLeftDepth()+m_RightCurve->GetShiftOffset();
// SourEdep=m_mergeLineList[1]->GetLeftDepth()+m_RightCurve->GetShiftOffset();
// DectSdep=m_mergeLineList[0]->GetLeftDepth();
// }
// QString name1=m_LeftCurve.m_strLineName;
// QString name2=m_RightCurve.m_strLineName;
// QList<SelectTableItem> ShiftCurvesAll;
// ShiftCurvesAll.append(m_RightCurve);
// ShiftCurvesAll.append(m_ShiftCurves);
// if(ShiftCurvesAll.size()<1) {
// AfxMessageBox("缺少目标曲线或目标曲线无效!");
// return;
// }
// int size=(SourEdep-SourSdep)/m_LeftCurve->m_Rlev+1.5;
// QString filename2=m_RightCurve.m_strSlfName;
// QString filename1=m_LeftCurve.m_strSlfName;
// CMemRdWt mrw1;
// CMemRdWt mrw2;
// struct INC_STRU Inc={0},Inc1={0};
// struct INP_STRU Inp,Inp1;
// struct HD_STRU Hd={99999.0,-99999.0,0};
// struct HD_STRU Hd1={99999.0,-99999.0,0};
// int flag=0;
// if(filename1==filename2) {
// CMemRdWt mrw4;
// if(mrw4.Open(filename1.toStdString().c_str())) {
// CMemRdWt mrw3;
// QDir aa;
// filename2=::GetLogdataPath()+"temp\\temp001";
// aa.remove(filename2);
// if(mrw3.Open(filename2.toStdString().c_str(),CMemRdWt::modeCreate,1024,1024,0,mrw4.IsWis)) {
// mrw3.CopyFromFile(mrw4,(char *)name2.toStdString().c_str());
// mrw3.Save();
// mrw3.Close();
// flag=1;
// }
// mrw1.Close();
// }
// }
// if (!mrw1.Open(filename1.toStdString().c_str())) {
// if(flag) {
// QDir aa;
// aa.remove(filename2);
// }
// return;
// }
// if (!mrw2.Open(filename2.toStdString().c_str())) {
// mrw1.Close();
// if(flag) {
// QDir aa;
// aa.remove(filename2);
// }
// return;
// }
// mrw1.SetStruct(&Inc,NULL,&Inp,NULL,NULL,NULL,&Hd,NULL);
// mrw2.SetStruct(&Inc1,NULL,&Inp1,NULL,NULL,NULL,&Hd1,NULL);
// QList<QString> names1,names2;
// names1.append(name1);
// names2.append(name2);
// for(int i=0;i<m_ShiftCurves.size();i++){
// names1.append(m_ShiftCurves.at(i).m_strLineName);
// names2.append(m_ShiftCurves.at(i).m_strLineName);
// }
// int ind1,ind2;
// QStringList ERRORS;
// int j=0;
// for(int i=0;i<names1.size();i++)
// {
// Slf_CHANNEL m_Channel1;
// Slf_CHANNEL m_Channel2;
// ind1=mrw1.OpenChannel(names1[i].toStdString().c_str());
// ind2=mrw2.OpenChannel(names2[i].toStdString().c_str());
// if(ind1<0||ind2<0) {
// CString cs;
// if(ind1<0) {
// ERRORS.append(names1[i]+" ");
// // cs.Format("源曲线不存在%s",name1.toStdString().c_str());
// }
// else if(ind2<0) {
// ERRORS.append(names2[i]+" ");
// // cs.Format("目标曲线不存在%s",name2.toStdString().c_str());
// }
// else {
// ERRORS.append(names1[i]+" "+names2[i]);
// // cs.Format("源曲线、目标曲线不存在!");
// }
// continue;
// }
// mrw1.GetChannelInfo(ind1,&m_Channel1);
// mrw2.GetChannelInfo(ind2,&m_Channel2);
// if(ind1&&SourEdep==0) SourEdep=m_Channel1.DimInfo[0].StartVal+m_Channel1.DimInfo[0].Samples*m_Channel1.DimInfo[0].Delta;
// mrw1.AddInCurve((char *)names1[i].toStdString().c_str());
// mrw2.AddInCurve((char *)names2[i].toStdString().c_str());
// mrw1.CopyCurve(mrw2,SourSdep,SourEdep,DectSdep,j,j);
// j++;
// }
// mrw2.Close();
// mrw1.Save();
// mrw1.Close();
// if(flag) {
// QDir aa;
// aa.remove(filename2);
// }
}
//清除全部曲线设置
void MainWindowCurve::s_ClearAllSetCurve()
{
@ -1470,7 +1754,7 @@ void MainWindowCurve::s_ClearAllSetCurve()
if(m_LeftCurve.m_iTableType==3 && m_LeftCurve.m_strFormInfoType=="curveObject")
{
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName, 0, m_bMerge);
//标准曲线中,切换为不选择
m_LeftCurve.m_iTableType=0;
@ -1487,7 +1771,7 @@ void MainWindowCurve::s_ClearAllSetCurve()
if(m_RightCurve.m_iTableType==3 && m_RightCurve.m_strFormInfoType=="curveObject")
{
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_RightCurve.m_strSlfName, m_RightCurve.m_strWellName, m_RightCurve.m_strTrackName, m_RightCurve.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_RightCurve.m_strSlfName, m_RightCurve.m_strWellName, m_RightCurve.m_strTrackName, m_RightCurve.m_strLineName, 0, m_bMerge);
//主校曲线中,切换为不选择
m_RightCurve.m_iTableType=0;
@ -1504,7 +1788,7 @@ void MainWindowCurve::s_ClearAllSetCurve()
{
SelectTableItem m_TempCurve = m_ShiftCurves[i];
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_TempCurve.m_strSlfName, m_TempCurve.m_strWellName, m_TempCurve.m_strTrackName, m_TempCurve.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_TempCurve.m_strSlfName, m_TempCurve.m_strWellName, m_TempCurve.m_strTrackName, m_TempCurve.m_strLineName, 0, m_bMerge);
//删除从校曲线
m_ShiftCurves.removeAt(i);
@ -1519,7 +1803,7 @@ void MainWindowCurve::s_ClearSetCurve()
{
SelectTableItem m_TempCurve = m_ShiftCurves[i];
//修改当前曲线选择状态 iSelect=0未知
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_TempCurve.m_strSlfName, m_TempCurve.m_strWellName, m_TempCurve.m_strTrackName, m_TempCurve.m_strLineName, 0);
emit CallManage::getInstance()->sig_ChangeLineStatus(m_strUuid, m_TempCurve.m_strSlfName, m_TempCurve.m_strWellName, m_TempCurve.m_strTrackName, m_TempCurve.m_strLineName, 0, m_bMerge);
//删除从校曲线
m_ShiftCurves.removeAt(i);
@ -1686,6 +1970,16 @@ void MainWindowCurve::s_Save()
//校深
void MainWindowCurve::s_ExecuteDepthShift()
{
//当前正在拼接处理
if(m_bMerge)
{
//清理拼接线段
s_ClearAllSetCurve();
}
m_bMerge = false;
ui->toolBar_3->hide();
//
if(ui->toolBar_2->isHidden())
{
ui->toolBar_2->show();
@ -1696,6 +1990,29 @@ void MainWindowCurve::s_ExecuteDepthShift()
}
}
//拼接
void MainWindowCurve::s_ExecuteMerge()
{
//当前正在校深处理
if(!m_bMerge)
{
//清理校深线段
s_ClearAllSetCurve();
}
m_bMerge = true;
ui->toolBar_2->hide();
//
if(ui->toolBar_3->isHidden())
{
ui->toolBar_3->show();
}
else
{
ui->toolBar_3->hide();
}
}
void MainWindowCurve::s_ModuleOpen()
{
QString strSlfName = "";

View File

@ -110,6 +110,8 @@ public:
void initMainToolBar();
void initToolBar();
void initToolBar_2();
void initToolBar_3();
bool m_bMerge = false;//是否拼接状态,否代表校深状态。为了切换时做数据清理
// 返回 strWellName << strSlfName
QStringList insertCol(int nW);
@ -211,11 +213,16 @@ public slots:
//清除全部从曲线设置
void s_ClearSetCurve();
//执行拼接
void s_merge();
void s_Merge_List(QString strUuid, QList<double> left_Low_List, QList<double> right_Hight_List);
//
void s_showHeadTable(); //显示/隐藏图头
void s_currtemplite(); //加载图文件
void s_Save(); //保存图文件
void s_ExecuteDepthShift(); //校深
void s_ExecuteMerge(); //拼接
void s_ModuleOpen(); //处理算法
//void s_Open(QString fileFull);//打开

View File

@ -74,6 +74,17 @@
<bool>false</bool>
</attribute>
</widget>
<widget class="QToolBar" name="toolBar_3">
<property name="windowTitle">
<string>toolBar_3</string>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
</widget>
<resources/>
<connections/>

View File

@ -86,6 +86,8 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
//执行校正
connect(CallManage::getInstance(), SIGNAL(sig_RuncorFromPlot(QString, QString, QString, QString, QString)), this, SLOT(s_RuncorFromPlot(QString, QString, QString, QString, QString)));
//执行拼接
connect(CallManage::getInstance(), SIGNAL(sig_MergeFromPlot(QString, QString, QString, QString, QString)), this, SLOT(s_MergeFromPlot(QString, QString, QString, QString, QString)));
//Plot重新加载数据
connect(CallManage::getInstance(), SIGNAL(sig_ReloadPlot(QString, QString, QString)), this, SLOT(s_ReloadPlot(QString, QString, QString)));
@ -527,6 +529,47 @@ void QMyCustomPlot::s_RuncorFromPlot(QString strUuid, QString strSlfName, QStrin
emit CallManage::getInstance()->sig_Runcor_List(m_strUuid, left_Low_List, right_Hight_List);
}
//执行拼接
void QMyCustomPlot::s_MergeFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName)
{
if(m_strUuid == strUuid &&
m_strSlfName == strSlfName &&
m_strWellName == strWellName &&
m_strTrackName == strTrackName &&
m_strLineName == strLineName)
{
}
else
{
return;
}
QList<double> left_Low_List;
QList<double> right_Hight_List;
TransparentDraggableLine *pDraggableLine =NULL;
QMap<QString,QObject *>::Iterator it = m_mapDraggable_Line.begin();
while( it != m_mapDraggable_Line.end() )
{
pDraggableLine = (TransparentDraggableLine*)it.value();
left_Low_List.append(0-pDraggableLine->m_left_Low);
right_Hight_List.append(0-pDraggableLine->m_right_Hight);
//
it++;
}
if(left_Low_List.size()<=0)
{
QMessageBox::warning(this, "提示", "曲线拼接深度点不存在,无法拼接!\n请先设置拼接深度点。");
return;
}
//执行拼接
emit CallManage::getInstance()->sig_Merge_List(m_strUuid, left_Low_List, right_Hight_List);
}
//Plot重新加载数据
void QMyCustomPlot::s_ReloadPlot(QString strUuid, QString strSlfName, QString strLineName)
{

View File

@ -161,6 +161,9 @@ public slots:
//执行校正
void s_RuncorFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//执行拼接
void s_MergeFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//Plot重新加载数据
void s_ReloadPlot(QString strUuid, QString strSlfName, QString strLineName);