岩心分析 属性

This commit is contained in:
crqiqi77 2026-03-31 09:31:15 +08:00
parent 4ca74326e8
commit 0ddd73f8bd
4 changed files with 453 additions and 683 deletions

View File

@ -472,7 +472,6 @@ void PropertyWidget::changedCorePhysicsProperty(QtProperty *qtProperty, const QV
else if("数值" == m_propertyData[qtProperty])
{
double temp = variant.toDouble();
// this->m_formInfo->m_cp_coreValue = temp;
this->m_tdCorePhysics->setCpCoreValue(temp);
this->m_tdCorePhysics->mPlot->saveToSLFCorePhysics();
}
@ -942,25 +941,11 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
else if("岩性" == m_propertyData[pProperty])
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetLithSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdLayer->setLith(newResult);
//
QCPRange currentRange = m_tdLayer->getRange();
m_tdLayer->setRange(currentRange.lower, currentRange.upper);
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if (m_strCurrentProperty == JieshiItem_Property)
{
@ -1036,15 +1021,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if(m_tdGujing)
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetGujingSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdGujing->setResult(newResult);
//
QCPRange currentRange = m_tdGujing->getRange();
@ -1052,11 +1028,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdGujing->mPlot->SaveToSLF_Gujing();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
}
else if (m_strCurrentProperty == ImageItem_Property) // 岩心图片
@ -1105,15 +1076,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if(m_tdSwallCore)
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetSymbolDir()+"取心岩性符号";
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdSwallCore->setLith(newResult);
//
QCPRange currentRange = m_tdSwallCore->getRange();
@ -1121,11 +1083,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdSwallCore->mPlot->SaveToSLF_SwallCore();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if("油气" == m_propertyData[pProperty])
{
@ -1133,15 +1090,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if(m_tdSwallCore)
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetGasSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdSwallCore->setOil(newResult);
//
QCPRange currentRange = m_tdSwallCore->getRange();
@ -1149,11 +1097,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdSwallCore->mPlot->SaveToSLF_SwallCore();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if("颜色" == m_propertyData[pProperty])
{
@ -1162,14 +1105,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
{
QString ColorImage = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetColorSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
ColorImage.replace("\\","/");
//
if(ColorImage.contains(strDefaultPath))
{
QString name = "";
int CoreColor = 0;
ColorImage.replace("\\","/");
@ -1189,11 +1124,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdSwallCore->mPlot->SaveToSLF_SwallCore();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if("起始位置" == m_propertyData[pProperty])
{
@ -1244,15 +1174,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if(m_tdGeoLith)
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetMudSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdGeoLith->setLith(newResult, m_tdGeoLith->m_Color);
//
QCPRange currentRange = m_tdGeoLith->getRange();
@ -1260,11 +1181,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdGeoLith->mPlot->SaveToSLF_GeoLith();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if("油气" == m_propertyData[pProperty])
{
@ -1272,15 +1188,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if(m_tdGeoLith)
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetGasSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdGeoLith->setOil(newResult);
//
QCPRange currentRange = m_tdGeoLith->getRange();
@ -1288,11 +1195,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdGeoLith->mPlot->SaveToSLF_GeoLith();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if("颜色" == m_propertyData[pProperty])
{
@ -1300,15 +1202,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if(m_tdGeoLith)
{
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetColorSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdGeoLith->setLith(m_tdGeoLith->m_Lith, newResult);
//
QCPRange currentRange = m_tdGeoLith->getRange();
@ -1316,11 +1209,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//保存
m_tdGeoLith->mPlot->SaveToSLF_GeoLith();
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
else if("含油占比(1~8)" == m_propertyData[pProperty])
{
@ -1787,15 +1675,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//--------------------------
QString newResult = variant.value<QString>();
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = GetSymbolDir()+"管柱组件";
//符号统一
strDefaultPath.replace("\\","/");
newResult.replace("\\","/");
//
if(newResult.contains(strDefaultPath))
{
m_tdGuan->setResult(newResult);
//
QCPRange currentRange = m_tdGuan->getRange();
@ -1811,11 +1690,6 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
m_tdGuan->mPlot->LoadFromSLF_ReDrawTubing(m_tdGuan->mPlot->m_strSlfName, m_tdGuan->mPlot->m_strLineName);
}
}
else {
QMessageBox::information(nullptr,"提示","所选目录不支持");
return;
}
}
}
}
else if (m_strCurrentProperty == Depth_Property) // 深度
@ -3251,51 +3125,9 @@ void PropertyWidget::initSwallCoreItemProperty(TransparentDraggableSwallCore* td
//
_CreateVariantPropertyItem("当前项", "深度", -Depth, QVariant::Double);
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetSymbolDir()+"取心岩性符号";
//符号统一
strDefaultPath.replace("\\","/");
LithologyImage.replace("\\","/");
//
if(LithologyImage.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "岩性", LithologyImage, VariantManager::filePathTypeId());
}
else{
_CreateVariantPropertyItem("当前项", "岩性", strDefaultPath, VariantManager::filePathTypeId());
}
//只能选择自己的符号,不能选择其他。
strDefaultPath = ::GetGasSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
OilGasImage.replace("\\","/");
//
if(OilGasImage.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "油气", OilGasImage, VariantManager::filePathTypeId());
}
else
{
_CreateVariantPropertyItem("当前项", "油气", strDefaultPath, VariantManager::filePathTypeId());
}
//只能选择自己的符号,不能选择其他。
strDefaultPath = ::GetColorSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
ColorImage.replace("\\","/");
//
if(ColorImage.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "颜色", ColorImage, VariantManager::filePathTypeId());
}
else
{
_CreateVariantPropertyItem("当前项", "颜色", strDefaultPath, VariantManager::filePathTypeId());
}
_CreateVariantPropertyItem("当前项", "起始位置", Sideleft, QVariant::Double);
//_CreateVariantPropertyItem("当前项", "宽度", -Depth, QVariant::Double);
}
@ -3462,22 +3294,8 @@ void PropertyWidget::initGujingItemProperty(TransparentDraggableGujing* tdGujing
//
_CreateVariantPropertyItem("当前项", "顶深(m)", -upper, QVariant::Double);
_CreateVariantPropertyItem("当前项", "底深(m)", -lower, QVariant::Double);
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetGujingSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
strResult.replace("\\","/");
//
if(strResult.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "固井结论", strResult, VariantManager::filePathTypeId());
}
else
{
_CreateVariantPropertyItem("当前项", "固井结论", strDefaultPath, VariantManager::filePathTypeId());
}
}
void PropertyWidget::initImageProperty(FormInfo *formInfo)
{
@ -3794,7 +3612,7 @@ void PropertyWidget::initTvdProperty(FormInfo *formInfo)
m_strCurrentProperty = Tvd_Property;
}
void PropertyWidget::initGeoLithItemProperty(TransparentDraggableGeoLith* tdGeoLith, double lower, double upper, QString myLith, QString myOil, QString myColor)
void PropertyWidget::initGeoLithItemProperty(TransparentDraggableGeoLith* tdGeoLith, double lower, double upper, const QString myLith, const QString myOil, const QString myColor)
{
//初始化,清空
InitCurrentViewInfo();
@ -3836,55 +3654,10 @@ void PropertyWidget::initGeoLithItemProperty(TransparentDraggableGeoLith* tdGeoL
//
_CreateVariantPropertyItem("当前项", "顶深(m)", -upper, QVariant::Double);
_CreateVariantPropertyItem("当前项", "底深(m)", -lower, QVariant::Double);
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = ::GetMudSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
myLith.replace("\\","/");
//
if(myLith.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "岩性", myLith, VariantManager::filePathTypeId());
}
else{
_CreateVariantPropertyItem("当前项", "岩性", strDefaultPath, VariantManager::filePathTypeId());
}
//只能选择自己的符号,不能选择其他。
strDefaultPath = ::GetGasSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
myOil.replace("\\","/");
//
if(myOil.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "油气", myOil, VariantManager::filePathTypeId());
}
else
{
_CreateVariantPropertyItem("当前项", "油气", strDefaultPath, VariantManager::filePathTypeId());
}
//只能选择自己的符号,不能选择其他。
strDefaultPath = ::GetColorSymbolDir();
//符号统一
strDefaultPath.replace("\\","/");
myColor.replace("\\","/");
//
if(myColor.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "颜色", myColor, VariantManager::filePathTypeId());
}
else
{
_CreateVariantPropertyItem("当前项", "颜色", strDefaultPath, VariantManager::filePathTypeId());
}
// _CreateVariantPropertyItem("当前项", "岩性", myLith, VariantManager::filePathTypeId());
// _CreateVariantPropertyItem("当前项", "油气", myOil, VariantManager::filePathTypeId());
// _CreateVariantPropertyItem("当前项", "颜色", myColor, VariantManager::filePathTypeId());
}
//气测/FMT/射孔/文本
void PropertyWidget::initJiegutextProperty(FormInfo *formInfo)
@ -4042,21 +3815,8 @@ void PropertyWidget::initTubingItemProperty(TransparentDraggableGuan* tdGuan, do
//
_CreateVariantPropertyItem("当前项", "深度(m)", -(upper+lower)/2.0, QVariant::Double);
//只能选择自己的符号,不能选择其他。
QString strDefaultPath = GetSymbolDir()+"管柱组件";
//符号统一
strDefaultPath.replace("\\","/");
strResult.replace("\\","/");
//
if(strResult.contains(strDefaultPath))
{
_CreateVariantPropertyItem("当前项", "组件类型", strResult, VariantManager::filePathTypeId());
}
else {
_CreateVariantPropertyItem("当前项", "组件类型", strDefaultPath, VariantManager::filePathTypeId());
}
}
void PropertyWidget::changedDepthProperty(QString strProperty, QVariant varVal)
{

View File

@ -130,6 +130,8 @@ void TransparentDraggableCorePhysics::update()
void TransparentDraggableCorePhysics::initRect()
{
// 连接鼠标事件
connect(mPlot, &QCustomPlot::mousePress, this, &TransparentDraggableCorePhysics::onMousePress);
connect(mPlot, &QCustomPlot::mouseMove, this, &TransparentDraggableCorePhysics::onMouseMove);
@ -197,17 +199,13 @@ void TransparentDraggableCorePhysics::onMousePress(QMouseEvent *event)
{
//之前的选中线段,恢复黑色
TransparentDraggableCorePhysics *tmpLine = (TransparentDraggableCorePhysics*)mPlot->m_SelectShiftLine;
QPen pen = tmpLine->qcpItemLine->pen();
// pen.setWidth(getCpLineWidth());
pen.setColor(this->getCpLineColor()); // 线宽
QPen pen = tmpLine->qcpItemLine->pen(); // 现在这里绝对安全
pen.setColor(this->getCpLineColor());
tmpLine->qcpItemLine->setPen(pen);
// tmpLine->qcpItemLine->setPen(QPen(Qt::black));
}
//重新设置选中线段
mPlot->m_SelectShiftLine = this;
QPen pen = qcpItemLine->pen();
// pen.setWidth(getCpLineWidth());
pen.setColor(Qt::red);
qcpItemLine->setPen(pen);
@ -544,17 +542,28 @@ bool TransparentDraggableCorePhysics::getCpLeftBoundary() const
void TransparentDraggableCorePhysics::setCpLeftBoundary(bool value)
{
this->m_cp_leftBoundary = value;
// 由于 X轴↔Y轴 互换,"水平翻转"变成关于 Y轴中心对称
double y_center = (this->mPlot->yAxis->range().lower + this->mPlot->yAxis->range().upper) / 2;
// 获取原坐标(注意:此时 coords() 返回的是互换后的坐标)
QPointF start = this->qcpItemLine->start->coords();
QPointF end = this->qcpItemLine->end->coords();
// 翻转Y轴不变实际是视觉上的X轴X轴镜像实际是视觉上的Y轴
// 但由于轴互换了,我们需要翻转的是 y 坐标
this->qcpItemLine->start->setCoords(start.x(), 2 * y_center - start.y());
this->qcpItemLine->end->setCoords(end.x(), 2 * y_center - end.y());
double y_min = mPlot->yAxis->range().lower;
double y_max = mPlot->yAxis->range().upper;
double y_center = (y_min + y_max) / 2;
QPointF start = qcpItemLine->start->coords();
QPointF end = qcpItemLine->end->coords();
double targetYStart, targetYEnd;
if (value) {
// ======================================
// ✅ TRUE = 强制回到左边(固定公式)
// ======================================
targetYStart = y_min + (y_max - start.y());
targetYEnd = y_min + (y_max - end.y());
} else {
// ======================================
// ✅ FALSE = 强制去到右边(固定公式)
// ======================================
targetYStart = 2 * y_center - start.y();
targetYEnd = 2 * y_center - end.y();
}
qcpItemLine->start->setCoords(start.x(), targetYStart);
qcpItemLine->end->setCoords(end.x(), targetYEnd);
}
bool TransparentDraggableCorePhysics::getCpSkipZeroInvalidValues() const
@ -680,12 +689,12 @@ void TransparentDraggableCorePhysics::setCpSymbolFillColor(QColor value)
}
}
int TransparentDraggableCorePhysics::getCpFieldName() const
{
return this->m_cp_fieldName;
}
//int TransparentDraggableCorePhysics::getCpFieldName() const
//{
// return this->m_cp_fieldName;
//}
void TransparentDraggableCorePhysics::setCpFieldName(const int &value)
{
this->m_cp_fieldName = value;
}
//void TransparentDraggableCorePhysics::setCpFieldName(const int &value)
//{
// this->m_cp_fieldName = value;
//}

View File

@ -114,8 +114,8 @@ public:
QColor getCpSymbolFillColor() const;
void setCpSymbolFillColor(QColor value);
int getCpFieldName() const;
void setCpFieldName(const int &value);
// int getCpFieldName() const;
// void setCpFieldName(const int &value);
signals:
void rangeChanged(QCPRange newRange);
@ -143,7 +143,7 @@ private:
QColor m_cp_symbolBorderColor; // 边框颜色
int m_cp_symbolSize; // 大小
QColor m_cp_symbolFillColor; // 填充颜色
int m_cp_fieldName; // 字段名称
// int m_cp_fieldName; // 字段名称
// 这四个是slf文件保存读取的
int m_cp_order; // 序号
double m_cp_depth; // 深度
@ -179,7 +179,6 @@ public:
double m_lY1 = 0;
// 添加最小宽度成员变量
double mMinWidth;
};
#endif // TRANSPARENTDRAGGABLECOREPHYSICS_H

View File

@ -1937,6 +1937,7 @@ void QMyCustomPlot::deleteItemsImage()
//保存
SaveToSLFImage();
m_mapDraggable_Image.clear();
//属性清空
PropertyService()->InitCurrentViewInfo();
}
@ -2006,10 +2007,12 @@ void QMyCustomPlot::deleteCorePhysics()
it++;
pDraggableRect->deleteRect();
}
m_SelectShiftLine = nullptr;
this->replot();
//保存
saveToSLFCorePhysics();
m_mapDraggable_CorePhysics.clear();
//属性清空
PropertyService()->InitCurrentViewInfo();
}
@ -5122,9 +5125,9 @@ void QMyCustomPlot::s_changeCorePhysicsProperty(QVariantMap variantMap)
// 左界
if(variantMap["leftBoundary"].isValid())
{
tdCorePhysics->setCpLeftBoundary(variantMap["leftBoundary"].toBool());
bool aa = variantMap["leftBoundary"].toBool();
tdCorePhysics->setCpLeftBoundary(aa);
}
// 不绘零等无效值
if(variantMap["skipZeroInvalidValues"].isValid())
{
@ -5171,7 +5174,6 @@ void QMyCustomPlot::s_changeCorePhysicsProperty(QVariantMap variantMap)
{
tdCorePhysics->setCpRightScale(variantMap["rightScale"].toDouble());
}
// 刻度类型
if(variantMap["scaleType"].isValid())
{