可视解释,追加“刷新数据”菜单

This commit is contained in:
jiayulong 2026-07-02 16:20:36 +08:00
parent fb44005027
commit 6821a8e1f9
7 changed files with 103 additions and 60 deletions

View File

@ -956,11 +956,15 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
{
double upper = variant.value<double>();
m_tdJieshi->setDragRect(2, -upper);
//保存更新
m_tdJieshi->mPlot->SaveToSLF_Result();
}
else if ("底深(m)" == m_propertyData[pProperty])
{
double lower = variant.value<double>();
m_tdJieshi->setDragRect(1, -lower);
//保存更新
m_tdJieshi->mPlot->SaveToSLF_Result();
}
else
{

View File

@ -422,6 +422,8 @@ void TransparentGroupResult::setDragResult(int nidx, QString strResult)
return;
pDrag->setResult(strResult);
pDrag->setShowProperty(m_nConclusionProportion, m_nShowPos, true);
//
mPlot->SaveToSLF_Result();
}
void TransparentGroupResult::setDragDepth(int nidx, double dDepth)

View File

@ -115,7 +115,7 @@ private slots:
double getMyLower();
double getMyUpper();
private:
public:
QMyCustomPlot *mPlot;
QCPItemRect *mRect;
QCPItemRect *mLeftHandle;

View File

@ -5892,7 +5892,7 @@ void FormDraw::initResult(QMyCustomPlot *widget, QString strSlfName, QString str
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
LoadFromSLF_Result(widget, strSlfName, strLineName);
widget->LoadFromSLF_Result(strSlfName, strLineName);
QString strAliasName = "";
QString strUnit = "";
@ -5904,59 +5904,6 @@ void FormDraw::initResult(QMyCustomPlot *widget, QString strSlfName, QString str
}
bool FormDraw::LoadFromSLF_Result(QMyCustomPlot *widget, QString strSlfName, QString strLineName)
{
static bool isrun=false;
CMemRdWt *logio=new CMemRdWt();
if(!logio->Open(strSlfName.toStdString().c_str(), CSlfIO::modeRead))
{
delete logio;
isrun=false;
return false;
}
int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
if(iIndex>-1) {
int len = logio->GetTableRecordLength(iIndex);
int sl = sizeof(LAYER_DATA);
if(sl>len) len=sl;
LAYER_DATA *m_Result,*m_Result1;
int count=logio->GetTableRecordCount(iIndex);
char *pstr=new char[len*count+1];
memset(pstr,0,len*count);
int zone=1;
for(int i=0;i<count;i++) {
m_Result=(LAYER_DATA *)(pstr+i*len);
logio->ReadTable(iIndex,i+1,m_Result);
if(!i) zone=atoi(m_Result->Zone);
}
QString strGroupUuid = "";
for(int i=0;i<count;i++)
{
m_Result=(LAYER_DATA *)(pstr+i*len);
if(m_Result->StartDepth==m_Result->EndDepth) continue;
QString strZone = QString::number(atoi(m_Result->Zone));
// 设置解释结论终止深度
TransparentGroupResult* pGroup = widget->addResultGroup(-m_Result->EndDepth, -m_Result->StartDepth, strGroupUuid, strZone);
pGroup->addAllResultToPlot(m_Result);
}
//最后统一刷新
widget->replot();
logio->CloseTable(iIndex);
delete pstr;
}
delete logio;
isrun=false;
return true;
}
//录井剖面
void FormDraw::initGeoLith(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName, QColor newlineColor, QStringList listOtherProperty)
{

View File

@ -230,7 +230,6 @@ public:
//解释结论
void initResult(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
bool LoadFromSLF_Result(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
//录井剖面
void initGeoLith(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "录井剖面", QColor newlineColor=QColor(0,0,0), QStringList listOtherProperty={});

View File

@ -1146,11 +1146,11 @@ void QMyCustomPlot::contextMenuEvent(QContextMenuEvent *event)
mLastPos = event->pos();
qDebug() << "mLastPos:" << mLastPos;
menu.addAction(QIcon(::GetImagePath() + "curve.png"), "关闭编辑解释结论", this, &QMyCustomPlot::onCloseEditResult);
menu.addAction(QIcon(::GetImagePath() + "icon/CopyCoreTxt.png"), "从剪切板文本数据粘贴", this, &QMyCustomPlot::addItems_Layer);
// menu.addAction(QIcon(::GetImagePath() + "icon/CopyCoreTxt.png"), "从剪切板文本数据粘贴", this, &QMyCustomPlot::addItems_Layer);
menu.addAction(QIcon(::GetImagePath() + "icon/ClearSelectCore.png"), "取消选中", this, &QMyCustomPlot::ClearSelectItems);
menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "删除选中对象", this, &QMyCustomPlot::DeleteItemGroup);
menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "全部清空", this, &QMyCustomPlot::DeleteItems_Layer);
menu.addAction(QIcon(::GetImagePath() + "icon/load.png"), "刷新数据", this, &QMyCustomPlot::RefreshItems_Layer);
// menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "全部清空", this, &QMyCustomPlot::DeleteItems_Layer);
menu.addAction(QIcon(::GetImagePath() + "icon/load.png"), "刷新数据", this, &QMyCustomPlot::RefreshResult);
menu.addAction(QIcon(::GetImagePath() + "icon/SetZone.png"), "更新层号", this, &QMyCustomPlot::updateGroupZone);
menu.addAction(QIcon(::GetImagePath() + "icon/Split.png"), "分割为层内层", this, &QMyCustomPlot::segmentationInnerLayer);
@ -4451,6 +4451,60 @@ void QMyCustomPlot::onCloseEditImage()
this->setCursor(Qt::ArrowCursor);
}
//加载解释结论slf数据
bool QMyCustomPlot::LoadFromSLF_Result(QString strSlfName, QString strLineName)
{
static bool isrun=false;
CMemRdWt *logio=new CMemRdWt();
if(!logio->Open(strSlfName.toStdString().c_str(), CSlfIO::modeRead))
{
delete logio;
isrun=false;
return false;
}
int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
if(iIndex>-1) {
int len = logio->GetTableRecordLength(iIndex);
int sl = sizeof(LAYER_DATA);
if(sl>len) len=sl;
LAYER_DATA *m_Result,*m_Result1;
int count=logio->GetTableRecordCount(iIndex);
char *pstr=new char[len*count+1];
memset(pstr,0,len*count);
int zone=1;
for(int i=0;i<count;i++) {
m_Result=(LAYER_DATA *)(pstr+i*len);
logio->ReadTable(iIndex,i+1,m_Result);
if(!i) zone=atoi(m_Result->Zone);
}
QString strGroupUuid = "";
for(int i=0;i<count;i++)
{
m_Result=(LAYER_DATA *)(pstr+i*len);
if(m_Result->StartDepth==m_Result->EndDepth) continue;
QString strZone = QString::number(atoi(m_Result->Zone));
// 设置解释结论终止深度
TransparentGroupResult* pGroup = addResultGroup(-m_Result->EndDepth, -m_Result->StartDepth, strGroupUuid, strZone);
pGroup->addAllResultToPlot(m_Result);
}
//最后统一刷新
replot();
logio->CloseTable(iIndex);
delete pstr;
}
delete logio;
isrun=false;
return true;
}
//加载固井slf数据
bool QMyCustomPlot::LoadFromSLF_Gujing(QString strSlfName, QString strLineName)
{
@ -5350,7 +5404,7 @@ void QMyCustomPlot::s_Refresh_All(QString strUuid, QString strSlfName, QString s
else if (m_strLineName == "RESULT")
{
// 解释结论
//RefreshItems_Layer();
RefreshResult();
}
else if (m_strLineName == "IMAGE_DATA")
{
@ -9014,10 +9068,43 @@ void QMyCustomPlot::DeleteItemGroup()
continue;
pGroup->removeAllResult();
}
this->replot();
SaveToSLF_Result();
}
}
//刷新
void QMyCustomPlot::RefreshResult()
{
if (m_strLineName == "RESULT")
{
QStringList listRemove;
//删除对象
TransparentGroupResult *pDraggableRect =NULL;
QMap<QString,QObject *>::Iterator it = m_mapDragGroup.begin();
while( it != m_mapDragGroup.end() )
{
pDraggableRect = (TransparentGroupResult*)it.value();
listRemove << it.key();
//
it++;
}
for (int i = 0; i < listRemove.size(); i++)
{
TransparentGroupResult *pGroup = qobject_cast<TransparentGroupResult *>(m_mapDragGroup.value(listRemove.at(i)));
if (pGroup == nullptr)
continue;
pGroup->removeAllResult();
}
//加载
this->LoadFromSLF_Result(m_strSlfName, m_strLineName);
//属性清空
PropertyService()->InitCurrentViewInfo();
}
}
void QMyCustomPlot::updateGroupZone()
{
QMap<double, QString> mapSort;

View File

@ -275,6 +275,9 @@ public:
QObject* m_SelectRect=nullptr;//当前选中的曲线编辑框
QObject* m_selectItem = nullptr;
//解释结论
bool LoadFromSLF_Result(QString strSlfName, QString strLineName);
//固井
QMap<QString,QString> zoneOrder_Gujing;
bool SaveToSLF_Gujing();
@ -619,6 +622,7 @@ public slots:
void onCloseEditResult();
void DeleteItemGroup();
void updateGroupZone(); //更新层号
void RefreshResult();//刷新
bool SaveToSLF_Result();