This commit is contained in:
crqiqi77 2026-04-08 16:42:37 +08:00
commit aee47ed25a
6 changed files with 206 additions and 258 deletions

View File

@ -894,7 +894,7 @@ void ParameterEditorModel::ChangeMXParam(float depth,float minX,float maxX,QStri
}
if(no<0||no>9) {
if(paramName=="SHFG") continue;
// AfxMessageBox("SHFG无对应曲线或对应曲线不唯一无法设置极值\n您可采用选中待改字段在曲线窗口用CCTRL+鼠标左击进行修正!");
// QMessageBox::information(NULL,"提示","SHFG无对应曲线或对应曲线不唯一无法设置极值\n您可采用选中待改字段在曲线窗口用CCTRL+鼠标左击进行修正!");
}
//else
{
@ -973,7 +973,7 @@ void ParameterEditorModel::AddDepth(float sdep,QString ID)
CCompositeParameterItem* Zones=pArrayItem;
int count=Zones->GetChildCount();
if(count<1) {
AfxMessageBox("初始参数缺失,不能生成层段!");
QMessageBox::information(NULL,"提示","初始参数缺失,不能生成层段!");
return;
}
for(int i=0;i<count;i++){
@ -987,14 +987,14 @@ void ParameterEditorModel::AddDepth(float sdep,QString ID)
QString val=pItem1->GetStringValue().c_str();
float val1=val.toFloat();
if(sdep==val1) {
AfxMessageBox("当前深度段已存在!");
QMessageBox::information(NULL,"提示","当前深度段已存在!");
return;
}
sdeps.push_back(val1);
val=pItem2->GetStringValue().c_str();
val1=val.toFloat();
if(sdep==val1) {
AfxMessageBox("当前深度段已存在!");
QMessageBox::information(NULL,"提示","当前深度段已存在!");
return;
}
edeps.push_back(val1);
@ -1220,7 +1220,7 @@ void ParameterEditorModel::DeleteDepth(float sdep,QString ID)
CCompositeParameterItem* Zones=pArrayItem;
int count=Zones->GetChildCount();
if(count<2) {
AfxMessageBox("当前层段数小于2段,不可以删除!");
QMessageBox::information(NULL,"提示","当前层段数小于2段,不可以删除!");
return;
}
for(int i=0;i<count;i++){
@ -1359,7 +1359,7 @@ void ParameterEditorModel::slotOnArrayItemButtonClicked(QAbstractButton * pButto
if(!pArrayCategory) return;
if(pArrayItem->GetChildCount()<2)
{
AfxMessageBox("层段数为1不可以删除!");
QMessageBox::information(NULL,"提示","层段数为1不可以删除!");
return;
}
ParameterProperty *pP1=ParameterPropertyFromIndex(m_currentindex);

View File

@ -16,6 +16,8 @@
#include "ParameterItem.h"
#include <QTextCodec>
#include <QAction>
#include <QMessageBox>
// void OSGFRAMEWORK_EXPORT AppendConsole(pai::log::Priority priority,const QString &output);
using namespace pai::module;
@ -134,7 +136,7 @@ float PELibraryModule::GetFloatParam(CModuleParameter * pModulePara,QString &par
QStringList strlst=str1.split("/");
int no=strlst.indexOf(val);
if(no<0) {
AfxMessageBox("设计错误:选择项"+val+"不存在!");
QMessageBox::information(NULL,"提示","设计错误:选择项"+val+"不存在!");
no=0;
}
str=QString::number(no);
@ -147,7 +149,7 @@ float PELibraryModule::GetFloatParam(CModuleParameter * pModulePara,QString &par
int no=strlst.indexOf(val);
if(no<0) {
str=val;
// AfxMessageBox("设计错误:选择项"+val+"不存在!");
// QMessageBox::information(NULL,"提示","设计错误:选择项"+val+"不存在!");
no=0;
}
else str=QString::number(no);
@ -170,7 +172,7 @@ float PELibraryModule::GetFloatParam(CModuleParameter * pModulePara,QString &par
QString name=paramName;
int i=paramName.lastIndexOf(".");
if(i>-1) name=paramName.mid(i+1);
// AfxMessageBox("参数"+name+"不存在!");
// QMessageBox::information(NULL,"提示","参数"+name+"不存在!");
str="0";
return 0.0;
}
@ -312,7 +314,7 @@ bool PELibraryModule::LoadParamFromLines(QStringList lines)
}
if(!flag)
{
AfxMessageBox("错误,参数卡为空或无效值!\n请修改参数卡保存后,执行刷新参数或重新打开处理模块!");
QMessageBox::information(NULL,"提示","错误,参数卡为空或无效值!\n请修改参数卡保存后,执行刷新参数或重新打开处理模块!");
}
return true;
}
@ -751,7 +753,7 @@ bool PELibraryModule::InitProcessMessage(struct INC_STRU *Inc,struct OUTC_STRU
QString anames=incnames.join(",");
QString errorMsg=QString::fromStdString(GetMetaData()->GetName())+m_libraryfilename+"_"+strDLLFun+":模块编写不正常,其输入曲线定义与数目不匹配:"+"\n";
errorMsg=errorMsg+"输入曲线名为:"+ anames +"\n" +"输入曲线数目为:"+QString::number(Inc->Noi);
AfxMessageBox(errorMsg);
QMessageBox::information(NULL,"提示",errorMsg);
// AppendConsole(pai::log::PAI_WARN,errorMsg);
return false;
}
@ -779,7 +781,7 @@ bool PELibraryModule::InitProcessMessage(struct INC_STRU *Inc,struct OUTC_STRU
QString errorMsg=QString::fromStdString(GetMetaData()->GetName())+m_libraryfilename+"_"+strDLLFun+":模块编写异常,其输出曲线定义与数目不匹配:"+"\n";
errorMsg=errorMsg+"输出曲线名为:"+ anames +"\n" +"输出曲线数为:"+QString::number(Outc->Noo);
// AppendConsole(pai::log::PAI_WARN,errorMsg);
AfxMessageBox(errorMsg);
QMessageBox::information(NULL,"提示",errorMsg);
return false;
}
if(Outc){
@ -977,7 +979,7 @@ UINT PELibraryModule::ProcessDLL1(LPVOID pPram,float sdep,float edep)//只用公
lpfnDllFunc = (LPFNDLLFUNC)(Methodlib.resolve(strDLLFun.toStdString().c_str()));//strDLLFun.toStdString().c_str())
if(!lpfnDllFunc)
{
AfxMessageBox("处理函数"+strDLLFun+"不存在,请检查配置文件!");
QMessageBox::information(NULL,"提示","处理函数"+strDLLFun+"不存在,请检查配置文件!");
m_pMemRdWt->Close();
return 0;
//入口函数不存在
@ -986,7 +988,7 @@ UINT PELibraryModule::ProcessDLL1(LPVOID pPram,float sdep,float edep)//只用公
m_pMemRdWt->ZoneSdep=sdep;
m_pMemRdWt->ZoneEdep=edep;
if(m_pMemRdWt->Const()<0) {
AfxMessageBox("参数卡有误,运行被停止!");
QMessageBox::information(NULL,"提示","参数卡有误,运行被停止!");
m_pMemRdWt->Close();
return 0;
}
@ -994,7 +996,7 @@ UINT PELibraryModule::ProcessDLL1(LPVOID pPram,float sdep,float edep)//只用公
if(errorinf) {
if(errorinf->ErrorNo<0)
{
AfxMessageBox(errorinf->ErrorStr);
QMessageBox::information(NULL,"提示",errorinf->ErrorStr);
m_pMemRdWt->Close();
return 0;
}
@ -1012,7 +1014,7 @@ UINT PELibraryModule::ProcessDLL1(LPVOID pPram,float sdep,float edep)//只用公
//mDP.CreatProgress(Hd->Stdep,Hd->Endep);
DepthProgress DepthProgress;
DepthProgress.CreatProgress(Hd->Stdep,Hd->Endep,"数据处理中....");
CString cs;
QString cs;
int flag=1;
while ( 1 )
{
@ -1023,7 +1025,8 @@ UINT PELibraryModule::ProcessDLL1(LPVOID pPram,float sdep,float edep)//只用公
{
if ( errorinf->ErrorNo <=0 )
{
cs.Format("提示 : %s ",errorinf->ErrorStr);
cs = QString("提示 : %s ").arg(errorinf->ErrorStr);
// cs.Format("提示 : %s ",errorinf->ErrorStr);
if(i<0)flag=i;
else flag=errorinf->ErrorNo;
break;
@ -1067,7 +1070,7 @@ UINT PELibraryModule::ProcessDLL1(LPVOID pPram,float sdep,float edep)//只用公
if(flag>=0) {
cs="处理完毕!";
}
else AfxMessageBox(cs);
else QMessageBox::information(NULL,"提示",cs);
return flag;
}
UINT PELibraryModule::ProcessDLL2(LPVOID pPram,float sdep,float edep)//自控模块DLL
@ -1077,7 +1080,7 @@ UINT PELibraryModule::ProcessDLL2(LPVOID pPram,float sdep,float edep)//自控模
lpfnDllFunc = (LPFNDLLFUNC)(Methodlib.resolve(strDLLFun.toStdString().c_str()));//strDLLFun.toStdString().c_str())
if(!lpfnDllFunc)
{
AfxMessageBox("处理函数"+strDLLFun+"不存在,请检查配置文件!");
QMessageBox::information(NULL,"提示","处理函数"+strDLLFun+"不存在,请检查配置文件!");
//入口函数不存在
m_pMemRdWt->Close();
return 0;
@ -1094,7 +1097,7 @@ UINT PELibraryModule::ProcessDLL2(LPVOID pPram,float sdep,float edep)//自控模
m_pMemRdWt->ZoneSdep=sdep;
m_pMemRdWt->ZoneEdep=edep;
if(m_pMemRdWt->Const()<0) {
AfxMessageBox("参数卡有误,运行被停止!");
QMessageBox::information(NULL,"提示","参数卡有误,运行被停止!");
m_pMemRdWt->Close();
return 0;
}
@ -1102,12 +1105,13 @@ UINT PELibraryModule::ProcessDLL2(LPVOID pPram,float sdep,float edep)//自控模
if(edep!=-99999) Hd->EndDep=edep;
int i = lpfnDllFunc();
CString cs;
QString cs;
if ( i < 0||(errorinf&&errorinf->ErrorNo<0) ) //运算出错
{
if ( errorinf&&errorinf->ErrorNo <=0 )
{
cs.Format("提示 : %s ",errorinf->ErrorStr);
cs = QString("提示 : %s ").arg(errorinf->ErrorStr);
// cs.Format("提示 : %s ",errorinf->ErrorStr);
if(i<0)flag=i;
else flag=errorinf->ErrorNo;
}
@ -1141,7 +1145,7 @@ UINT PELibraryModule::ProcessDLL2(LPVOID pPram,float sdep,float edep)//自控模
// }
if(flag>=0) {
}
else AfxMessageBox(cs);
else QMessageBox::information(NULL,"提示",cs);
return flag;
}
@ -1317,7 +1321,7 @@ bool PELibraryModule::InitModule(QWidget*pWidget)
m_pMemRdWt=NULL;
if(strlen(errorinf->ErrorStr))
{
AfxMessageBox(errorinf->ErrorStr);
QMessageBox::information(NULL,"提示",errorinf->ErrorStr);
}
Methodlib.unload();
iscreatemem=0;
@ -1383,7 +1387,7 @@ bool PELibraryModule::InitModule(QWidget*pWidget)
// 如果dll中的输出曲线条数和名称数对不上则退出
// 如果dll中的参数个数和名称数对不上则退出
if(!Conc) {
// AfxMessageBox("处理模块缺少参数名结构CONC_STRCT");
// QMessageBox::information(NULL,"提示","处理模块缺少参数名结构CONC_STRCT");
if(parDialog)
{
parDialog->setParent(NULL);
@ -1856,7 +1860,7 @@ QString PELibraryModule::GetINPParamCard(CMemRdWt *pMemrdWt,char *p,bool isSave
}
strcpy(tempcon.stryy,stryy.toStdString().c_str());
}
else AfxMessageBox("内部错误:井段"+QString(strPartIndex.c_str()));
else QMessageBox::information(NULL,"提示","内部错误:井段"+QString(strPartIndex.c_str()));
}
if(toTable){
char strTmp[5] = "EDEP";
@ -1868,7 +1872,7 @@ QString PELibraryModule::GetINPParamCard(CMemRdWt *pMemrdWt,char *p,bool isSave
if(zoneCount<1)
{
result="0 0\r\n";
if(Conc->Noc>0) AfxMessageBox("可视化参数为空!");
if(Conc->Noc>0) QMessageBox::information(NULL,"提示","可视化参数为空!");
}
result=result+"END\r\n";
if(isSaveToEdit&&pEdit) {
@ -2014,7 +2018,7 @@ bool PELibraryModule::GetPARAM_TAB()
}
if(!m_pMemRdWt->Open(GetSlfFileName().toStdString().c_str()))
{
//AfxMessageBox("您还没有选择井文件或井文件不存在!在您运行之前,请选择井文件!");
//QMessageBox::information(NULL,"提示","您还没有选择井文件或井文件不存在!在您运行之前,请选择井文件!");
return false;
}
QString parmacard=GetINPParamCard(NULL,NULL,false);
@ -2031,7 +2035,7 @@ bool PELibraryModule::InitMemRdWt(double sdep,double edep,char*Zone,bool isSaveC
}
if(!m_pMemRdWt->Open(GetSlfFileName().toStdString().c_str()))
{
//AfxMessageBox("您还没有选择井文件或井文件不存在!在您运行之前,请选择井文件!");
//QMessageBox::information(NULL,"提示","您还没有选择井文件或井文件不存在!在您运行之前,请选择井文件!");
return false;
}
@ -2118,7 +2122,7 @@ QString PELibraryModule::ReadParamCardFromSLF(CMemRdWt *pMemRdWt,char *pParamNam
QFile file( paramSettingFileName );
if(!file.exists()) {
// AfxMessageBox(paramSettingFileName+"常用参数配置文件不存在!");
// QMessageBox::information(NULL,"提示",paramSettingFileName+"常用参数配置文件不存在!");
}
if (file.exists()&& file.open( QIODevice::ReadOnly ) ) {
QTextStream stream( &file );

View File

@ -179,6 +179,7 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo)
}
else
{
curv->m_bX2Y = false;
//curv->initWave2(m_strSlfName, strLineName);
curv->changePropertyWaveUpdate();
}
@ -2992,6 +2993,7 @@ void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellNam
//绑定m_formTrack方便关联formInfo
curv->m_formTrack = m_formTrack;
curv->m_strUuid = m_strUuid;
curv->m_bX2Y = false;
//背景设置成透明色
curv->setBackground(Qt::transparent);
curv->setStyleSheet("background: transparent;");
@ -4855,19 +4857,22 @@ void FormDraw::initWave_3D(QMyCustomPlot *widget, QString strSlfName, QString st
widget->m_iY1 = m_iY1;
widget->m_iY2 = m_iY2;
//
widget->xAxis->setRange(vmin, vmax);
widget->yAxis->setRange(m_iY1, m_iY2);
widget->axisRect()->setupFullAxesBox();
//
widget->xAxis->ticker()->setTickCount(10);//x个主刻度
widget->yAxis->ticker()->setTickCount(60);//y个主刻度
//对调XY轴在最前面设置
QCPAxis *yAxis = widget->yAxis;
QCPAxis *xAxis = widget->xAxis;
widget->xAxis = yAxis;
widget->yAxis = xAxis;
if (!widget->m_bX2Y)
{
widget->xAxis->setRange(vmin, vmax);
widget->yAxis->setRange(m_iY1, m_iY2);
widget->axisRect()->setupFullAxesBox();
//
widget->xAxis->ticker()->setTickCount(10);//x个主刻度
widget->yAxis->ticker()->setTickCount(60);//y个主刻度
//对调XY轴在最前面设置
QCPAxis *yAxis = widget->yAxis;
QCPAxis *xAxis = widget->xAxis;
widget->xAxis = yAxis;
widget->yAxis = xAxis;
widget->m_bX2Y = true;
}
//
// 横向点数,全部绘制
int nPoint = _nSamples;
@ -5653,14 +5658,14 @@ void FormDraw::initResult(QMyCustomPlot *widget, QString strSlfName, QString str
m_LeftVal = 0;
m_RightVal = 90;
//隐藏刻度
widget->xAxis->setTicks(true);
widget->yAxis->setTicks(true);
widget->xAxis2->setTicks(true);
widget->yAxis2->setTicks(true);
widget->xAxis->setTickLabels(true);
widget->yAxis->setTickLabels(true);
widget->xAxis2->setTickLabels(true);
widget->xAxis2->setTickLabels(true);
widget->xAxis->setTicks(false);
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setTickLabels(false);
widget->yAxis->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
//
LoadFromSLF_Result(widget, strSlfName, strLineName);
@ -5930,15 +5935,14 @@ void FormDraw::initGujing(QMyCustomPlot *widget, QString strSlfName, QString str
void FormDraw::initDepth(QMyCustomPlot *curv)
{
// x轴隐藏
curv->xAxis->setTicks(false);
curv->xAxis->setSubTicks(false);
curv->xAxis->setTickLabels(false);
curv->yAxis->setTicks(true);
curv->yAxis->setTickLabels(true);
curv->yAxis->setTickLabelSide(QCPAxis::lsInside);
QFont font1("微软雅黑", 8);
curv->yAxis->setTickLabelFont(font1);
curv->yAxis->setRange(qAbs(m_iY1), m_iY2);
curv->yAxis->setRangeReversed(true);
curv->yAxis->setRange(m_iY1, m_iY2);
//curv->yAxis->setRangeReversed(true);
curv->axisRect()->setupFullAxesBox();
curv->yAxis->ticker()->setTickCount(60);//y个主刻度

View File

@ -146,7 +146,7 @@ public:
bool m_bShowScale; // 显示刻度
float m_fWaveBase = 0.0f; // 波列基值
int m_nWaveJg = 100; // 波形间隔
int m_nWaveJg = 10; // 波形间隔
float m_fWaveHei = 1; // 波形高度
int m_nColorNum = 256; // 调色板参数设置-变密度颜色级数

View File

@ -65,9 +65,14 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
yAxis->setTickLabels(false);
}
//
xAxis->setTickLabels(false);
xAxis2->setTickLabels(false);
yAxis2->setTickLabels(false);
xAxis->setTicks(false);
yAxis->setTicks(false);
xAxis2->setTicks(false);
yAxis2->setTicks(false);
xAxis->setTickLabels(false);
yAxis->setTickLabels(false);
xAxis2->setTickLabels(false);
xAxis2->setTickLabels(false);
//套管组件
zoneOrder_Tubing.clear();
@ -216,11 +221,13 @@ void QMyCustomPlot::changePropertyWaveUpdate()
else if (m_nDrawType == 2)
{
if (this->m_colorMap)
{
this->m_colorMap->setVisible(true);
this->m_colorMap->data()->clear();
}
clearGraphs();
clearItems();
this->m_bX2Y = true;
this->initWave(m_strSlfName, m_strLineName);
}
}
@ -242,12 +249,15 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
float _SDep, _EDep, _Rlev;
_SDep = _wave.StartDepth;
_EDep = _wave.EndDepth;
m_SDep = _SDep;
m_EDep = _EDep;
// _SDep = 0.0 - m_iY2;
// _EDep = 0.0 - m_iY1;
_Rlev = _wave.DepLevel;
int m_Record = (float)(fabs((_EDep - _SDep) / _Rlev + 0.5));
int _nSamples = _wave.TimeSamples;
m_nSamples = _nSamples;
if (m_fScaleV <= 0.0f)
m_fScaleV = _nSamples;
char *value = new char[(_nSamples + 1)*m_Record*_wave.CodeLen + 1];
@ -258,16 +268,33 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
bool bFistValue = false;
float vmax = -9999;//(float)_nSamples;
float vmin = -9999;
//
#define W_NEW
#ifdef W_NEW
float detp = _SDep;
float edepc = _EDep;
if (m_nWaveJg < 10)
m_nWaveJg = 10;
float m_r = _Rlev * m_nWaveJg;
float m_MoveDep = 0.0f;
QVector< QVector <double>> vecWave;
float yscale = 1;
if (m_nWaveHei > 1)
{
float DifBase = 1;
if (m_nDrawType == 2 || m_nDrawType == 6 || m_nDrawType == 10) {
DifBase = (m_MaxRange - m_Base) / m_nColorNum;
}
else {
DifBase = (m_MaxRange - m_Base) / 1;
}
if (fabs(DifBase) <= 1e-6) DifBase = 1;
yscale = m_nWaveHei + DifBase;
yscale = yscale / DifBase;
}
//QVector< QVector <double>> vecWave;
m_vecWaveData.clear();
for (float dep1 = detp - 10 * m_r; dep1 < edepc + m_MoveDep + 10 * m_r; dep1 += m_r)
{
int iIndex = Slf_Int(dep1 + m_MoveDep, _SDep, _Rlev);
@ -282,7 +309,8 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
for (int kk = 0; kk < _nSamples; kk++)
{
double val = GetData(_wave.RepCode, (char *)&value[iIndex * _nSamples*_wave.CodeLen + kk * _wave.CodeLen]);
ve[kk] = val;
//ve[kk] = val;
ve[kk] = (int)((val - m_Base)*yscale);
if (val == -9999)
{
continue;
@ -298,33 +326,9 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
if (vmax < val)vmax = val;
if (vmin > val)vmin = val;
}
vecWave << ve;
m_vecWaveData << ve;
}
#else
double** wavedata = widget->getWavedata(_nSamples, m_Record);
for (int i = 0; i < m_Record; i++)
{
for (int kk = 0; kk < _nSamples; kk++)
{
double val = GetData(_wave.RepCode, (char *)&value[(kk)*_wave.CodeLen + i * _nSamples*_wave.CodeLen]);
wavedata[kk][i] = val;
if (val == -9999)
{
continue;
}
if (bFistValue == false)
{
//最大值,最小值默认采用第一个有效值
bFistValue = true;
vmax = vmin = val;
}
//
if (vmax < val)vmax = val;
if (vmin > val)vmin = val;
}
}
#endif
delete[] value;
float f = 264 / 269.0f;
@ -334,24 +338,31 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
widget->m_iY1 = m_iY1;
widget->m_iY2 = m_iY2;
//
widget->xAxis->setRange(vmin, vmax);
widget->yAxis->setRange(m_iY1, m_iY2);
widget->axisRect()->setupFullAxesBox();
//
widget->xAxis->ticker()->setTickCount(10);//x个主刻度
widget->yAxis->ticker()->setTickCount(60);//y个主刻度
if (!widget->m_bX2Y)
{
widget->xAxis->setRange(vmin, vmax);
widget->yAxis->setRange(m_iY1, m_iY2);
widget->axisRect()->setupFullAxesBox();
//
widget->xAxis->ticker()->setTickCount(10);//x个主刻度
widget->yAxis->ticker()->setTickCount(60);//y个主刻度
widget->xAxis->setTicks(false);
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
//对调XY轴在最前面设置
QCPAxis *yAxis = widget->yAxis;
QCPAxis *xAxis = widget->xAxis;
widget->xAxis = yAxis;
widget->yAxis = xAxis;
widget->xAxis->setTicks(false);
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setTickLabels(false);
widget->yAxis->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
//对调XY轴在最前面设置
QCPAxis *yAxis = widget->yAxis;
QCPAxis *xAxis = widget->xAxis;
widget->xAxis = yAxis;
widget->yAxis = xAxis;
widget->m_bX2Y = true;
}
widget->m_fmin = vmin;
widget->m_fmax = vmax * f;
@ -362,53 +373,8 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
QCPColorMap *colorMap = new QCPColorMap(widget->xAxis, widget->yAxis);
widget->m_colorMap = colorMap;
int nx = m_Record;
int ny = _nSamples;
#ifdef W_NEW
nx = vecWave.size();
#endif
colorMap->data()->setSize(nx, ny); // 我们希望彩色地图有nx*ny的数据点
//colorMap->data()->setRange(QCPRange(m_iY1, m_iY2), QCPRange(vmin, vmax)); // 并在键x和值y维上跨越坐标范围-4..4
colorMap->data()->setRange(QCPRange(0 - _EDep, 0 - _SDep), QCPRange(vmin, widget->m_fmax));
#ifdef W_NEW
double x, y, z;
for (int xIndex = 0; xIndex < nx; ++xIndex)
{
for (int yIndex = 0; yIndex < ny; ++yIndex)
{
double dz = vecWave[xIndex][yIndex];
if (m_nMode == 0)
{
if (dz == -9999)
{
dz = m_fmax;
}
}
else if (m_nMode == 1)
{
if (dz == -9999)
{
dz = m_fmin;
}
}
else if (m_nMode == 2)
{
if (dz == -9999)
{
dz = m_fmax;
}
else
{
dz = m_fmin;
}
}
m_colorMap->data()->setCell(nx - xIndex - 1, yIndex, dz);
}
}
#else
// 现在我们通过访问颜色贴图的QCPColorMapData实例来分配一些数据
this->updateWave();
#endif // W_NEW
// 添加色标:
QCPColorScale *colorScale = new QCPColorScale(widget);
@ -445,11 +411,6 @@ void QMyCustomPlot::initWave2(QString strSlfName, QString strWaveName)
widget->xAxis->setRange(vmin, vmax);
widget->yAxis->setRange(m_iY1, m_iY2);
widget->axisRect()->setupFullAxesBox();
//
widget->xAxis->setTicks(false);
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
//注意不对调XY轴
widget->m_bX2Y = false;
@ -643,58 +604,36 @@ void QMyCustomPlot::setSchemeIndex(int nidx, int colorNum)
m_colorMap->setGradient(gradient);
}
double** QMyCustomPlot::getWavedata(int nrow, int ncol)
{
if (nrow > 0 && m_wavedata)
{
for (int i = 0; i < m_nRow; i++)
{
if (m_wavedata[i])
{
delete[] m_wavedata[i];
}
}
delete[] m_wavedata;
m_wavedata = NULL;
}
m_nRow = nrow;
m_nCol = ncol;
m_wavedata = new double*[nrow];
for (int kk = 0; kk < nrow; kk++) {
m_wavedata[kk] = new double[ncol];
}
return m_wavedata;
}
QCPColorMap * QMyCustomPlot::updateWave()
{
int nx = m_nCol;
int ny = m_nRow;
int nx = m_vecWaveData.size();
int ny = m_nSamples;
m_colorMap->data()->setSize(nx, ny); // 我们希望彩色地图有nx*ny的数据点
m_colorMap->data()->setRange(QCPRange(0 - m_EDep, 0 - m_SDep), QCPRange(this->m_fmin, this->m_fmax));
// 现在我们通过访问颜色贴图的QCPColorMapData实例来分配一些数据
double x, y, z;
for (int xIndex = 0; xIndex < nx; ++xIndex)
{
for (int yIndex = 0; yIndex < ny; ++yIndex)
{
double dz = m_wavedata[yIndex][xIndex];
double dz = m_vecWaveData[xIndex][yIndex];
if (m_nMode == 0)
{
if (m_wavedata[yIndex][xIndex] == -9999)
if (dz == -9999)
{
dz = m_fmax;
}
}
else if (m_nMode == 1)
{
if (m_wavedata[yIndex][xIndex] == -9999)
if (dz == -9999)
{
dz = m_fmin;
}
}
else if (m_nMode == 2)
{
if (m_wavedata[yIndex][xIndex] == -9999)
if (dz == -9999)
{
dz = m_fmax;
}

View File

@ -58,28 +58,27 @@ public:
{
}
void initGeometry(QString strUuid, int nscale, int nW);
void initGeometry(QString strUuid, int nscale, int nW);
void changePropertyWaveUpdate();
// 绘图类型-变密度(成像)
void initWave(QString strSlfName, QString strWaveName);
// 绘图类型-波形
void initWave2(QString strSlfName, QString strWaveName);
void initColorTable();
void setSchemeIndex(int nidx, int colorNum);
double** getWavedata(int nrow, int ncol);
QCPColorMap * updateWave();
void changePropertyWaveUpdate();
// 绘图类型-变密度(成像)
void initWave(QString strSlfName, QString strWaveName);
// 绘图类型-波形
void initWave2(QString strSlfName, QString strWaveName);
float getScaleV();
void initColorTable();
void setSchemeIndex(int nidx, int colorNum);
QCPColorMap * updateWave();
void groupBeginResult(float fEndDepth, float fStartDepth);
void groupEndResult();
float getScaleV();
// 设置解释结论属性
void setShowProperty(QVariant val, int ntag);
void setConclusionProportion(int nCopro);
void setShowPos(int nSPos);
void groupBeginResult(float fEndDepth, float fStartDepth);
void groupEndResult();
// 设置解释结论属性
void setShowProperty(QVariant val, int ntag);
void setConclusionProportion(int nCopro);
void setShowPos(int nSPos);
//道宽改变后,避免井壁取心等组件变形,需要重新刷新
void resetPosition();
@ -96,7 +95,7 @@ protected:
//virtual void mouseMoveEvent(QMouseEvent *event);
public:
// 井UUID
// 井UUID
QString m_strUuid;
QString m_strSlfName;
QString m_strWellName;
@ -108,8 +107,8 @@ public:
//
float m_iX1, m_iX2;
float m_iY1, m_iY2;
qint8 m_nLeftCross = 0; // 左跨道个数
qint8 m_nRightCross = 0; // 右跨道个数
qint8 m_nLeftCross = 0; // 左跨道个数
qint8 m_nRightCross = 0; // 右跨道个数
//填充曲线
QCPGraph *graph_Fill=nullptr;
@ -150,38 +149,38 @@ public:
bool singleDragMove = false;
float singleOldPosition = 0;
QCPColorMap *m_colorMap = NULL;
QCPColorScale * m_colorScale = NULL;
double** m_wavedata = NULL;
int m_nRow = 0;
int m_nCol = 0;
int m_nDrawType = 2; // 绘图类型
// 0.全周 1.正半周 2.负半周
int m_nMode = 1;
float m_fScaleV = 0.0f;
float m_fmin;
float m_fmax;
int m_nColorNum = 256;
int m_nSchemeIndex = 1;
bool m_bDrawDepth = false; // 绘制波深度
bool m_bDrawBase = false; // 绘制波基线
bool m_bOddEven = false; // 奇偶配色
float m_Base = 0.0f; // 波列基值
float m_MaxRange = 1023.0f;
int m_nWaveJg = 1;
int m_nWaveHei = 1;
QCPColorMap *m_colorMap = NULL;
QCPColorScale * m_colorScale = NULL;
QVector< QVector <double>> m_vecWaveData;
int m_nRow = 0;
int m_nCol = 0;
int m_nDrawType = 2; // 绘图类型
// 0.全周 1.正半周 2.负半周
int m_nMode = 1;
float m_fScaleV = 0.0f;
float m_fmin;
float m_fmax;
int m_nColorNum = 256;
int m_nSchemeIndex = 1;
bool m_bDrawDepth = false; // 绘制波深度
bool m_bDrawBase = false; // 绘制波基线
bool m_bOddEven = false; // 奇偶配色
float m_Base = 0.0f; // 波列基值
float m_MaxRange = 1023.0f;
int m_nWaveJg = 1;
int m_nWaveHei = 1;
// 深度 第三个轴
QCPAxis *m_yAxis2 = nullptr;
QCPAxis *m_yAxis3 = nullptr; // 保存指针
public:
bool m_bEditor = false; // 编辑状态
QCPItemStraightLine* m_pAddLine1 = NULL;
QCPItemStraightLine* m_pAddLine2 = NULL;
bool m_bEditor = false; // 编辑状态
QCPItemStraightLine* m_pAddLine1 = NULL;
QCPItemStraightLine* m_pAddLine2 = NULL;
QString m_strGroupUid = "";
// 解释结论终止深度
float m_fResultEndDepth = 0.0f;
QString m_strGroupUid = "";
// 解释结论终止深度
float m_fResultEndDepth = 0.0f;
QVector<double> m_x;
QVector<double> m_y;
int m_iCurNum=0;
@ -192,8 +191,8 @@ public:
bool m_bFirstTimeConnect=true; //初次绑定编辑曲线信号槽。
bool m_bPriviewRightList=false; //当前是否正在预览曲线。
// 组
QMap<QString, QObject*> m_mapDragGroup;
// 组
QMap<QString, QObject*> m_mapDragGroup;
QMap<QString, QObject*> m_mapDraggable_Rect; //文字结论
QMap<QString, QObject*> m_mapDraggable_Layer; //地质分层
@ -308,7 +307,7 @@ public:
QMap<QString,QString> zoneOrder_Tubing;
QString cclimgpath_Tubing="";
QList<Slf_JIEGUPOS> m_pResultList_Tubing;
QString m_strAddTubing="";
QString m_strAddTubing="";
QCPItemRect *mRect_Tubing=nullptr; //套管左侧图像
QCPItemRect *mRect2_Tubing=nullptr; //套管右侧图像
QCPItemPixmap *mPixmap_Tubing=nullptr; //管柱图像
@ -348,7 +347,7 @@ public:
void addLayerToPlot(double left_Low, double right_Hight, const QString strText, bool bRefresh=true, QColor crColor=QColor(255, 255, 255, 80));
//解释结论
TransparentGroupResult* addResultGroup(double left_Low, double right_Hight, QString &strUuid, QString strText = "");
TransparentGroupResult* addResultGroup(double left_Low, double right_Hight, QString &strUuid, QString strText = "");
void addResultToPlot(double left_Low, double right_Hight, QString myResult, QString &strUuid, QString strText="");
//录井剖面
@ -381,7 +380,7 @@ public:
void addRightListToPlot( QList<double> new_DepthList, QList<double> new_ValueList);
public slots:
void slotSelectionRectAccepted(const QRect &rect, QMouseEvent *event);
void slotSelectionRectAccepted(const QRect &rect, QMouseEvent *event);
void s_LineClicked(int index);
void onResetZoom();
@ -450,7 +449,7 @@ public slots:
void ClearSelectItems(); //取消选中
//右键--编辑固井
void onEditGujing();
void onEditGujing();
void addItems_Gujing(); //从剪切板文本数据粘贴
void DeleteItems_Gujing(); //全部清空
void RefreshItems_Gujing(); //刷新数据
@ -502,7 +501,7 @@ public slots:
void addItems_Jiegutext(); //从剪切板文本数据粘贴
void DeleteItems_Jiegutext(); //全部清空
void RefreshItems_Jiegutext(); //刷新数据
//右键--沉积相
void addItem_Fac(); //添加沉积相
void RefreshItems_Fac(bool bAdd=true); //刷新数据
@ -513,23 +512,23 @@ public slots:
void DeleteItems_Tubing();//全部清空
void RefreshItems_Tubing(); //刷新数据
//右键--解释结论
void onOpenEditResult();
void onCloseEditResult();
void DeleteItemGroup();
void updateGroupZone(); //更新层号
//右键--解释结论
void onOpenEditResult();
void onCloseEditResult();
void DeleteItemGroup();
void updateGroupZone(); //更新层号
bool SaveToSLF_Result();
bool SaveToSLF_Result();
TransparentGroupResult* getCurGroupResult(double x_val);
// 筛选出选中的Group 并且排序
QMap<double, TransparentGroupResult*> getSelectGroupResult();
void segmentationInnerLayer(); // 分割为层内层
void segmentationIndependentLayer(); // 分割为独立层
void splitIndependentLayer(); // 拆分复合层成独立层
void megResultLayer();// 合并
TransparentGroupResult* getCurGroupResult(double x_val);
// 筛选出选中的Group 并且排序
QMap<double, TransparentGroupResult*> getSelectGroupResult();
void segmentationInnerLayer(); // 分割为层内层
void segmentationIndependentLayer(); // 分割为独立层
void splitIndependentLayer(); // 拆分复合层成独立层
void megResultLayer();// 合并
bool getIsEditor();
bool getIsEditor();
//
void addItems_Core();
@ -548,7 +547,7 @@ public slots:
//Plot重新加载数据
void s_ReloadPlot(QString strUuid, QString strSlfName, QString strLineName);
void s_changeDrawProperty(QVariantList vlist);
void s_changeDrawProperty(QVariantList vlist);
// 深度
void s_changeDepthProperty(QVariantList vlist);
@ -593,10 +592,10 @@ public:
bool mKedou = false;
//
bool mMousePress = false;
double m_dPressX = 0;
double m_dPressX = 0;
QPoint mLastPos;
QCPSizeHandleManager *mSizeHandleManager;
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
@ -639,6 +638,8 @@ public:
QString m_qsWellName,m_qsTable;
QString m_qsDepth,m_qsDIP,m_qsDIR,m_qsID,m_qsProperty; // 控制曲线
float m_SDep,m_EDep,m_Rlev;
int m_nSamples = 0;
// 频率统计图 csCurveGrad曲线名 LeftVal3最小值 RightVal3最大值 nArc扇形 nR圆半径 crArc圆颜色 nArcLineWidth圆线宽度 bFill是否填充
void drawFgrq(bool bTableData, QString csCurveDDIR, QString csCurveDANG, QString csCurveGrad, double LeftVal3, double RightVal3, int nArc, double nR, QColor crArc, int nArcLineWidth, bool bFill, QColor crFill,
int lineNumber, double lineHeight, int lineThickness, QColor lineColor, bool drawAnnotation, bool drawHistogram,