From 2ade61190b26795b269dc51377c5ca8bf88d0151 Mon Sep 17 00:00:00 2001 From: jiayulong Date: Sat, 9 May 2026 14:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E7=9A=84=E6=8C=89=E9=92=AE=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E9=92=88=E5=AF=B9=E6=B7=B1=E5=BA=A6=E3=80=81=E7=8E=AB?= =?UTF-8?q?=E7=91=B0=E5=9B=BE=E7=AD=89=EF=BC=8C=E4=B8=8E=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E6=9B=B2=E7=BA=BF=E9=80=BB=E8=BE=91=E4=B8=80=E8=87=B4=E3=80=82?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9C=A8=E6=8C=87=E5=AE=9A=E9=81=93=E9=87=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B7=B1=E5=BA=A6=E3=80=81=E7=8E=AB=E7=91=B0?= =?UTF-8?q?=E5=9B=BE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/CallManage.h | 3 + logPlus/formdraw.cpp | 18 +++ logPlus/formdraw.h | 2 + logPlus/mainwindowcurve.cpp | 234 ++++++++++++++++++++++++++++++++---- logPlus/mainwindowcurve.h | 1 + 5 files changed, 235 insertions(+), 23 deletions(-) diff --git a/logPlus/CallManage.h b/logPlus/CallManage.h index b4be646..7827687 100644 --- a/logPlus/CallManage.h +++ b/logPlus/CallManage.h @@ -55,6 +55,9 @@ signals: // 0.Uuid 1.WellName 2.SlfName 3.lineName 4.Type 5.W void sig_NewCol(QStringList listdt); + //在选中道绘制(深度、玫瑰图等) + void sig_setDrawData(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QStringList listdt); + void sig_NewTrack(QString strUuid, QString strWellName, QString strSlfName, QString strLineName, QString strType, int nW = 0);//新建道 void sig_NewTrack_No_Line(QString strUuid, QString strWellName, QString strTrackName);//新建空白道,没有曲线 void sig_NewTrack_No_Line(QString strUuid, QJsonObject topObj, QJsonObject infoObj);//新建空白道,没有曲线 diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 4a1cd2b..2314455 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -93,6 +93,9 @@ FormDraw::FormDraw(QWidget *parent, QString strSlfName, QString strWellName, QSt //改变曲线名 //气测/FMT/射孔/文本 connect(CallManage::getInstance(), SIGNAL(sig_changeJiegutextLine(QString, QString, QString, QString, QString, QString)), this, SLOT(s_changeJiegutextLine(QString, QString, QString, QString, QString, QString))); + //在选中道绘制(深度、玫瑰图等) + connect(CallManage::getInstance(), SIGNAL(sig_setDrawData(QString, QString, QString, QString, QStringList)), this, SLOT(s_setDrawData(QString, QString, QString, QString, QStringList))); + } FormDraw::~FormDraw() @@ -100,6 +103,21 @@ FormDraw::~FormDraw() delete ui; } +void FormDraw::s_setDrawData(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QStringList listdt) +{ + //井名&道名不一致 + if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName) + { + } + else + { + return; + } + + QJsonObject objInfo; + setDrawData(listdt, objInfo); +} + void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo) { QString strWellName = listdt.at(1); diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index 7c3a298..1a37e66 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -309,6 +309,8 @@ public slots: //改变曲线名 //气测/FMT/射孔/文本 void s_changeJiegutextLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strNewLineName); + //在选中道绘制(深度、玫瑰图等) + void s_setDrawData(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QStringList listdt); }; #endif // FORMDRAW_H diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index e332892..ab22612 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -556,7 +556,7 @@ void MainWindowCurve::initToolBar() connect(m_pinlvAc, &QAction::triggered, this, &MainWindowCurve::s_pinLvAc);//频率统计图 connect(m_ganzhuangtuAc, &QAction::triggered, this, &MainWindowCurve::s_NewGanZhuangTu);//杆状图 connect(m_roseAc, &QAction::triggered, this, &MainWindowCurve::s_roseAc);//玫瑰图 - connect(m_DCAAc, &QAction::triggered, this, &MainWindowCurve::s_dcaAc); + connect(m_DCAAc, &QAction::triggered, this, &MainWindowCurve::s_dcaAc);//裂缝DCA分析 connect(m_collapseAc, &QAction::triggered, this, &MainWindowCurve::s_Jykt);//井眼垮塌矢量图 connect(m_deviAc, &QAction::triggered, this, &MainWindowCurve::s_Denv);//井斜方位图 connect(m_electric_imagingAc, &QAction::triggered, this, &MainWindowCurve::s_DrawImage);//图像 @@ -2399,6 +2399,59 @@ QStringList MainWindowCurve::insertCol(double dW) return sret; } +QStringList MainWindowCurve::insertCol_New(double dW, QString strWellName, QString strSlfName) +{ + QStringList sret; + int column = -1; + + if(!m_listWell.contains(strWellName)) + { + //井没创建,创建井+道+曲线 + //新建井 + s_NewWell(strWellName, strSlfName); + //m_listWell.push_back(strWellName);//重复添加 + + column= 0; + } + + if(ui->tableWidget_2->columnCount()==0) + { + return sret; + } + + int iWidth = 0; + if(column < 0) + { + column = ui->tableWidget_2->currentColumn();//列编号从0开始 + iWidth = ui->tableWidget_2->columnWidth(column); + } + + if(column<0) + { + //当前没有选中井 + return sret; + } + + if(column%2==0) + { + } + else + { + //空白列 + return sret; + } + + WellHeader* pWheader = qobject_cast(ui->tableWidget_2->cellWidget(0, column)); + if (pWheader) + { + sret << pWheader->m_strWellName << pWheader->m_strSlfName; + } + + //设置列宽 + ui->tableWidget_2->setColumnWidth(column, iWidth+dW*g_dPixelPerCm); + return sret; +} + QStringList MainWindowCurve::getSelectWell_New() { QStringList sret; @@ -3647,11 +3700,33 @@ void MainWindowCurve::s_NewTrack() void MainWindowCurve::s_NewDepth() { - int column = -1; double dW = 1.2; - QStringList sret = this->insertCol(dW); - if (sret.length() <= 0) - return; + + //选中道 + if(m_SelectTableItem.m_iTableType==2) { + //新建 + QStringList dt; + dt << m_strUuid; + dt << m_SelectTableItem.m_strWellName; + dt << m_SelectTableItem.m_strSlfName; + dt << "深度"; + dt << "depthObject"; + dt << QString::number(dW); + + //在选中道绘制(深度、玫瑰图等) + emit CallManage::getInstance()->sig_setDrawData(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, dt); + return; + } + + QStringList sretSelect = this->getSelectWell_New(); + if(sretSelect.length() <= 0) + return; + +// int column = -1; + //double dW = 1.2; + QStringList sret = this->insertCol_New(dW, sretSelect.at(0), sretSelect.at(1)); + if (sret.length() <= 0) + return; QStringList dt; dt << m_strUuid; @@ -3849,8 +3924,8 @@ void MainWindowCurve::s_NewCrack() { //选中道 if(m_SelectTableItem.m_iTableType==2) { - //新建表格曲线 - emit CallManage::getInstance()->sig_AddTableLine(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, "IMAGE_DATA"); + //裂缝 + emit CallManage::getInstance()->sig_AddCrack(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, "FRAC_HOLE.TABLE"); return; } @@ -3880,13 +3955,37 @@ void MainWindowCurve::s_NewShowDip() NewWellAndTrack(sret.at(0), sret.at(1), "FRAC_HOLE.TABLE", "tableObject"); } +//频率 void MainWindowCurve::s_pinLvAc() { int nW = 4; + //选中道 + if(m_SelectTableItem.m_iTableType==2) { + //新建 + QStringList dt; + dt << m_strUuid; + dt << m_SelectTableItem.m_strWellName; + dt << m_SelectTableItem.m_strSlfName; + dt << ""; + dt << "plObject"; + dt << QString::number(nW); - QStringList sret = this->insertCol(nW); - if (sret.length() <= 0) - return; + //在选中道绘制(深度、玫瑰图等) + emit CallManage::getInstance()->sig_setDrawData(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, dt); + return; + } + + QStringList sretSelect = this->getSelectWell_New(); + if(sretSelect.length() <= 0) + return; + + QStringList sret = this->insertCol_New(nW, sretSelect.at(0), sretSelect.at(1)); + if (sret.length() <= 0) + return; + +// QStringList sret = this->insertCol(nW); +// if (sret.length() <= 0) +// return; QStringList dt; dt << m_strUuid; @@ -3917,12 +4016,37 @@ void MainWindowCurve::s_NewGanZhuangTu() NewWellAndTrack(sret.at(0), sret.at(1), "GANZHUANG.LINE", "ganzhuangtuObject"); } +//玫瑰图 void MainWindowCurve::s_roseAc() { int nW = 4; - QStringList sret = this->insertCol(nW); - if(sret.length() <= 0) + //选中道 + if(m_SelectTableItem.m_iTableType==2) { + //新建 + QStringList dt; + dt << m_strUuid; + dt << m_SelectTableItem.m_strWellName; + dt << m_SelectTableItem.m_strSlfName; + dt << ""; + dt << "roseObject"; + dt << QString::number(nW); + + //在选中道绘制(深度、玫瑰图等) + emit CallManage::getInstance()->sig_setDrawData(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, dt); return; + } + + QStringList sretSelect = this->getSelectWell_New(); + if(sretSelect.length() <= 0) + return; + + QStringList sret = this->insertCol_New(nW, sretSelect.at(0), sretSelect.at(1)); + if (sret.length() <= 0) + return; + +// QStringList sret = this->insertCol(nW); +// if(sret.length() <= 0) +// return; QStringList dt; dt << m_strUuid; @@ -3935,12 +4059,37 @@ void MainWindowCurve::s_roseAc() emit CallManage::getInstance()->sig_NewCol(dt); } +//裂缝DCA分析 void MainWindowCurve::s_dcaAc() { int nW = 4; - QStringList sret = this->insertCol(nW); - if(sret.length() <= 0) + //选中道 + if(m_SelectTableItem.m_iTableType==2) { + //新建 + QStringList dt; + dt << m_strUuid; + dt << m_SelectTableItem.m_strWellName; + dt << m_SelectTableItem.m_strSlfName; + dt << ""; + dt << "dcaObject"; + dt << QString::number(nW); + + //在选中道绘制(深度、玫瑰图等) + emit CallManage::getInstance()->sig_setDrawData(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, dt); return; + } + + QStringList sretSelect = this->getSelectWell_New(); + if(sretSelect.length() <= 0) + return; + + QStringList sret = this->insertCol_New(nW, sretSelect.at(0), sretSelect.at(1)); + if (sret.length() <= 0) + return; + +// QStringList sret = this->insertCol(nW); +// if(sret.length() <= 0) +// return; QStringList dt; dt << m_strUuid; @@ -3992,15 +4141,30 @@ void MainWindowCurve::s_Denv() void MainWindowCurve::s_DrawImage() { int nW = 4; - QStringList sret = this->insertCol(nW); - if (sret.length() <= 0) + //选中道 + if(m_SelectTableItem.m_iTableType==2) { + //图像 成图 + emit CallManage::getInstance()->sig_AddDrawImage(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, "DYNIMAGE"); return; - QString strWellName = sret.at(0); - //直接从选中的井获取,data记录slf路径 - QString strSlfName = sret.at(1); + } - //新建道 - emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "成像", "DrawImageObject", nW); + QStringList sret = this->getSelectWell_New(); + if(sret.length() <= 0) + return; + + //新建井+道+曲线(首条) + NewWellAndTrack(sret.at(0), sret.at(1), "DYNIMAGE", "DrawImageObject"); + +// QStringList sret = this->insertCol(nW); +// if (sret.length() <= 0) +// return; + +// QString strWellName = sret.at(0); +// //直接从选中的井获取,data记录slf路径 +// QString strSlfName = sret.at(1); + +// //新建道 +// emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "DYNIMAGE", "DrawImageObject", nW); } //地质层位道 @@ -4097,9 +4261,33 @@ void MainWindowCurve::s_NewTubingstring() void MainWindowCurve::s_NewTDT() { int nW = 10; - QStringList sret = this->insertCol(nW); - if(sret.length() <= 0) + //选中道 + if(m_SelectTableItem.m_iTableType==2) { + //新建 + QStringList dt; + dt << m_strUuid; + dt << m_SelectTableItem.m_strWellName; + dt << m_SelectTableItem.m_strSlfName; + dt << ""; + dt << "tdtObject"; + dt << QString::number(nW); + + //在选中道绘制(深度、玫瑰图等) + emit CallManage::getInstance()->sig_setDrawData(m_strUuid, m_SelectTableItem.m_strSlfName, m_SelectTableItem.m_strWellName, m_SelectTableItem.m_strTrackName, dt); return; + } + + QStringList sretSelect = this->getSelectWell_New(); + if(sretSelect.length() <= 0) + return; + + QStringList sret = this->insertCol_New(nW, sretSelect.at(0), sretSelect.at(1)); + if (sret.length() <= 0) + return; + +// QStringList sret = this->insertCol(nW); +// if(sret.length() <= 0) +// return; QStringList dt; dt << m_strUuid; diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index ba76456..9602dfb 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -119,6 +119,7 @@ public: // 返回 strWellName << strSlfName QStringList insertCol(double dW); + QStringList insertCol_New(double dW, QString strWellName, QString strSlfName); // 返回 strWellName << strSlfName QStringList getSelectWell();