岩心图片岩心分析 属性保存json

This commit is contained in:
crqiqi77 2026-03-30 09:03:57 +08:00
parent 2cdfbe0c6d
commit d9da6ed49a
7 changed files with 445 additions and 38 deletions

View File

@ -299,7 +299,7 @@ void PropertyWidget::changedCorePhysicsProperty(QtProperty *qtProperty, const QV
this->m_tdCorePhysics->setCpLineWidth(temp);
QVariantList listCond;
emit CallManage::getInstance()->sig_changeCorePhysicsProperty(listCond);
// emit CallManage::getInstance()->sig_changeCorePhysicsProperty(listCond);
}
else if("颜色" == m_propertyData[qtProperty])
{
@ -420,28 +420,28 @@ void PropertyWidget::changedCorePhysicsProperty(QtProperty *qtProperty, const QV
else if("序号" == m_propertyData[qtProperty])
{
int temp = variant.toInt();
this->m_formInfo->m_cp_order = temp;
// this->m_formInfo->m_cp_order = temp;
this->m_tdCorePhysics->setCpOrder(temp);
this->m_tdCorePhysics->mPlot->saveToSLFCorePhysics();
}
else if("深度" == m_propertyData[qtProperty])
{
double temp = variant.toDouble();
this->m_formInfo->m_cp_depth = temp;
// this->m_formInfo->m_cp_depth = temp;
this->m_tdCorePhysics->setCpDepth(temp);
this->m_tdCorePhysics->mPlot->saveToSLFCorePhysics();
}
else if("校正深度" == m_propertyData[qtProperty])
{
double temp = variant.toDouble();
this->m_formInfo->m_cp_corrDepth = temp;
// this->m_formInfo->m_cp_corrDepth = temp;
this->m_tdCorePhysics->setRange(temp,temp,this->m_tdCorePhysics->getCpCoreValue());
this->m_tdCorePhysics->mPlot->saveToSLFCorePhysics();
}
else if("数值" == m_propertyData[qtProperty])
{
double temp = variant.toDouble();
this->m_formInfo->m_cp_coreValue = temp;
// this->m_formInfo->m_cp_coreValue = temp;
this->m_tdCorePhysics->setCpCoreValue(temp);
this->m_tdCorePhysics->mPlot->saveToSLFCorePhysics();
}

View File

@ -438,6 +438,11 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
// 岩心分析
displayCorePhysics(lineObjInfo);
}
else if (strLineName == "IMAGE_DATA")
{
// 岩心照片
displayImageData(lineObjInfo);
}
}
else if (strType == "JiegutextObject")
{
@ -568,10 +573,257 @@ void FormDraw::displayCorePhysics(QJsonObject jsonObject)
int value = jsonObject.value("lineStyle").toInt();
listOtherProperty.append(QString::number(value));
}
// 左刻度
if (jsonObject.contains("leftScale"))
{
int value = jsonObject.value("leftScale").toInt();
listOtherProperty.append(QString::number(value));
}
// 右刻度
if (jsonObject.contains("rightScale"))
{
int value = jsonObject.value("rightScale").toInt();
listOtherProperty.append(QString::number(value));
}
// 等分刻度数或自定序列
if (jsonObject.contains("scaleDivisionsOrCustom"))
{
int value = jsonObject.value("scaleDivisionsOrCustom").toInt();
listOtherProperty.append(QString::number(value));
}
// 刻度类型
if (jsonObject.contains("scaleType"))
{
int value = jsonObject.value("scaleType").toInt();
listOtherProperty.append(QString::number(value));
}
// 显示单位
if (jsonObject.contains("Unit"))
{
QJsonValue value = jsonObject.value("Unit");
listOtherProperty.append(value.toString());
}
// 字体
if (jsonObject.contains("curveNameFont"))
{
QJsonValue value = jsonObject.value("curveNameFont");
listOtherProperty.append(value.toString());
}
// 曲线单位
if (jsonObject.contains("strUnitFont"))
{
QJsonValue value = jsonObject.value("strUnitFont");
listOtherProperty.append(value.toString());
}
// 曲线刻度
if (jsonObject.contains("curveScale"))
{
QJsonValue value = jsonObject.value("curveScale");
listOtherProperty.append(value.toString());
}
// 杆状
if (jsonObject.contains("drawAsBar"))
{
bool value = jsonObject.value("drawAsBar").toBool();
if(value)
{
listOtherProperty.append("1");
}
else
{
listOtherProperty.append("0");
}
}
// 左界
if (jsonObject.contains("leftBoundary"))
{
bool value = jsonObject.value("leftBoundary").toBool();
if(value)
{
listOtherProperty.append("1");
}
else
{
listOtherProperty.append("0");
}
}
// 不绘零等无效值
if (jsonObject.contains("skipZeroInvalidValues"))
{
bool value = jsonObject.value("skipZeroInvalidValues").toBool();
if(value)
{
listOtherProperty.append("1");
}
else
{
listOtherProperty.append("0");
}
}
// 绘制包络线
if (jsonObject.contains("drawEnvelope"))
{
bool value = jsonObject.value("drawEnvelope").toBool();
if(value)
{
listOtherProperty.append("1");
}
else
{
listOtherProperty.append("0");
}
}
// 点状
if (jsonObject.contains("drawAsDot"))
{
bool value = jsonObject.value("drawAsDot").toBool();
if(value)
{
listOtherProperty.append("1");
}
else
{
listOtherProperty.append("0");
}
}
// 符号类型
if (jsonObject.contains("symbolType"))
{
int value = jsonObject.value("symbolType").toInt();
listOtherProperty.append(QString::number(value));
}
// 边框颜色
if (jsonObject.contains("symbolBorderColor"))
{
QJsonValue value = jsonObject.value("symbolBorderColor");
listOtherProperty.append(value.toString());
}
// 大小
if (jsonObject.contains("symbolSize"))
{
int value = jsonObject.value("symbolSize").toInt();
listOtherProperty.append(QString::number(value));
}
// 填充颜色
if (jsonObject.contains("symbolFillColor"))
{
QJsonValue value = jsonObject.value("symbolFillColor");
listOtherProperty.append(value.toString());
}
// 字段名称
if (jsonObject.contains("fieldName"))
{
int value = jsonObject.value("fieldName").toInt();
listOtherProperty.append(QString::number(value));
}
this->addTableLine(m_strUuid, m_strSlfName, m_strWellName, m_strTrackName, strLineName, listOtherProperty);
}
void FormDraw::displayImageData(QJsonObject lineObjInfo)
{
QString strSlfName = "";
QString strWellName = "";
QString strLineName = "";
QString strAliasName = "";//显示名称
QFont curveNameFont("微软雅黑", 10); // 名称字体
QColor lineColor = QColor(0, 0, 0);//颜色
if (lineObjInfo.contains("SlfName"))
{
QJsonValue value = lineObjInfo.value("SlfName");
if (value.isString()) {
strSlfName = value.toString();
//qDebug() << "SlfName:" << strSlfName;
//
QString slffilename = QString("");
int ind = strSlfName.lastIndexOf('\\');
int ind2 = strSlfName.lastIndexOf('/');
if (ind2 > ind) ind = ind2;
if (ind > -1) {
slffilename = strSlfName.mid(ind + 1);
strSlfName = slffilename;
}
}
}
if (lineObjInfo.contains("WellName"))
{
QJsonValue value = lineObjInfo.value("WellName");
if (value.isString()) {
strWellName = value.toString();
//qDebug() << "WellName:" << strWellName;
}
}
if (lineObjInfo.contains("LineName"))
{
QJsonValue value = lineObjInfo.value("LineName");
if (value.isString()) {
strLineName = value.toString();
//qDebug() << "LineName:" << strLineName;
}
}
if (lineObjInfo.contains("AliasName"))
{
QJsonValue value = lineObjInfo.value("AliasName");
if (value.isString()) {
strAliasName = value.toString();
//qDebug() << "strAliasName:" << strAliasName;
}
}
//字体
if (lineObjInfo.contains("curveNameFont"))
{
QJsonValue value = lineObjInfo.value("curveNameFont");
if (value.isString()) {
curveNameFont.fromString(value.toString());
//qDebug() << "strUnit:" << strUnit;
}
}
//
if (lineObjInfo.contains("lineColor"))
{
lineColor.setNamedColor(lineObjInfo.value("lineColor").toString());
}
//垂向绘制
bool bVerticaDrawing = false;
if (lineObjInfo.contains("VerticaDrawing"))
{
QJsonValue value = lineObjInfo.value("VerticaDrawing");
if (value.isBool()) {
bVerticaDrawing = value.toBool();
}
}
// 旋转角度
int nRotationAngle = 0;
if (lineObjInfo.contains("RotationAngle"))
{
QJsonValue value = lineObjInfo.value("RotationAngle");
if (value.isDouble()) {
nRotationAngle = value.toInt();
}
}
QString folderPath = GetLogdataPath();
folderPath = folderPath + g_prjname;
strSlfName = folderPath + "/" + "#" + strWellName + "/" + strSlfName;
QStringList listOtherProperty;
listOtherProperty.append(strAliasName);//别名
listOtherProperty.append(lineColor.name());//名称颜色
listOtherProperty.append(curveNameFont.toString());//名称字体
if(bVerticaDrawing)//垂向绘制
{
listOtherProperty.append("VerticaDrawing");
}
else{
listOtherProperty.append("0");
}
listOtherProperty.append(QString::number(nRotationAngle));//旋转角度
this->addTableLine(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, listOtherProperty);
}
//表格:固井结论等
void FormDraw::DisplayTable_One(QJsonObject lineObjInfo)
{
@ -5249,7 +5501,8 @@ void FormDraw::initIMAGE_DATA(QMyCustomPlot *widget, QString strSlfName, QString
double width=2;
QString strScaleType = "";
//道-对象
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "tableObject");//yanxinImageObject
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width,
m_RightVal, m_LeftVal, strScaleType, "tableObject", stringList);//yanxinImageObject
}
bool FormDraw::LoadFromIMAGE_SLF(QMyCustomPlot *widget, QString strSlfName, QString strLineName)

View File

@ -64,6 +64,9 @@ public:
void DisplayDepth_One(QJsonObject lineObjInfo);
// 岩心分析
void displayCorePhysics(QJsonObject lineObjInfo);
// 岩心照片
void displayImageData(QJsonObject lineObjInfo);
//表格:固井结论等
void DisplayTable_One(QJsonObject lineObjInfo);

View File

@ -331,34 +331,42 @@ QJsonObject FormInfo::makeJson()
rootObj["sdMinorTickLineLength"] = m_sdMinorTickLineLength; // 次刻度线长度
rootObj["sdMinorTickLineWidth"] = m_sdMinorTickLineWidth; // 次刻度线宽度
}
else if (m_strType == "tableObject" && m_strLineName == "CORE_PHYSICS")
else if (m_strLineName == "CORE_PHYSICS")
{
rootObj["headHeight"] = m_headHeight; // 例区高度
rootObj["lineWidth"] = m_cp_lineWidth; // 线宽
rootObj["lineColor"] = m_cp_lineColor.name(); // 线条颜色
rootObj["lineStyle"] = m_cp_lineStyle; // 线型
rootObj["drawAsBar"] = m_cp_drawAsBar = true; // 杆状
rootObj["leftBoundary"] = m_cp_leftBoundary = true; // 左界
rootObj["skipZeroInvalidValues"] = m_cp_skipZeroInvalidValues = false; // 不绘零等无效值
rootObj["drawEnvelope"] = m_cp_drawEnvelope = false; // 绘制包络线
rootObj["drawAsDot"] = m_cp_drawAsDot = false; // 点状
rootObj["symbolType"] = m_cp_symbolType = 0; // 符号类型
rootObj["symbolBorderColor"] = m_cp_symbolBorderColor.name(); // 边框颜色
rootObj["symbolSize"] = m_cp_symbolSize = 3; // 大小
rootObj["symbolFillColor"] = m_cp_symbolFillColor.name(); // 填充颜色
rootObj["order"] = m_cp_order; // 序号
rootObj["depth"] = m_cp_depth; // 深度
rootObj["corrDepth"] = m_cp_corrDepth; // 校正深度
rootObj["coreValue"] = m_cp_coreValue; // 数值
rootObj["leftScale"] = m_cp_leftScale = 0; // 左刻度
rootObj["rightScale"] = m_cp_rightScale = 100; // 右刻度
rootObj["scaleDivisionsOrCustom"] = m_cp_scaleDivisionsOrCustom = 2; // 等分刻度数或自定序列
rootObj["scaleType"] = m_cp_scaleType = 0; // 刻度类型
rootObj["curveUnit"] = m_cp_curveUnit.toString(); // 曲线单位
rootObj["leftScale"] = m_cp_leftScale; // 左刻度
rootObj["rightScale"] = m_cp_rightScale; // 右刻度
rootObj["scaleDivisionsOrCustom"] = m_cp_scaleDivisionsOrCustom; // 等分刻度数或自定序列
rootObj["scaleType"] = m_cp_scaleType; // 刻度类型
rootObj["curveNameFont"] = m_curveNameFont.toString(); // 字体
rootObj["strUnitFont"] = m_strUnitFont.toString(); // 曲线单位
rootObj["curveScale"] = m_cp_curveScale.toString(); // 曲线刻度
rootObj["drawAsBar"] = m_cp_drawAsBar; // 杆状
rootObj["leftBoundary"] = m_cp_leftBoundary; // 左界
rootObj["skipZeroInvalidValues"] = m_cp_skipZeroInvalidValues; // 不绘零等无效值
rootObj["drawEnvelope"] = m_cp_drawEnvelope; // 绘制包络线
rootObj["drawAsDot"] = m_cp_drawAsDot; // 点状
rootObj["symbolType"] = m_cp_symbolType; // 符号类型
rootObj["symbolBorderColor"] = m_cp_symbolBorderColor.name(); // 边框颜色
rootObj["symbolSize"] = m_cp_symbolSize; // 大小
rootObj["symbolFillColor"] = m_cp_symbolFillColor.name(); // 填充颜色
rootObj["fieldName"] = m_cp_fieldName; // 字段名称
}
else if (m_strLineName == "IMAGE_DATA")
{
rootObj["headHeight"] = m_headHeight; // 例区高度
// 标注字体
rootObj["yxzpLabelFont"] = m_yxzpLabelFont.toString();
// 标注旋转
rootObj["yxzpLabelFont"] = m_yxzpLabelRotation;
// 两端绘制
rootObj["yxzpLabelFont"] = m_yxzpTwoEndDrawing;
// 绘制颜色
rootObj["yxzpLabelFont"] = m_yxzpDrawColor;
}
return rootObj;
}

View File

@ -238,11 +238,7 @@ public:
QColor m_cp_symbolBorderColor; // 边框颜色
int m_cp_symbolSize = 3; // 大小
QColor m_cp_symbolFillColor; // 填充颜色
int m_cp_order; // 序号
double m_cp_depth; // 深度
double m_cp_corrDepth; // 校正深度
double m_cp_coreValue; // 数值
QString m_cp_fieldName; // 字段名称
int m_cp_fieldName = 0; // 字段名称
int cpLineWidth() const;
void setCpLineWidth(int cpLineWidth);

View File

@ -577,7 +577,7 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
if(strLineName == "GUJING1_RESULT" || strLineName == "GUJING2_RESULT" || strLineName == "GUJING3_RESULT"
|| strLineName == "GEO_LITH" || strLineName == "SWALL_CORE"
|| strLineName == "WORDS_RELUST"
|| strLineName == "LAYER_DATA" )
|| strLineName == "LAYER_DATA" || strLineName == "IMAGE_DATA" || strLineName == "CORE_PHYSICS" )
{
//固井结论 / 井壁取心 / 录井剖面 /文字结论 /地质分层
if(listOtherProperty.size()>=5)
@ -663,7 +663,8 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
}
}
else if(strLineName == "CORE_PHYSICS")
if(strLineName == "CORE_PHYSICS")
{
if(listOtherProperty.size() >= 1)
{
@ -677,8 +678,11 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
formInfo->m_strAliasName = listOtherProperty[3];
// 线宽
formInfo->m_cp_lineWidth = listOtherProperty[4].toInt();
QVariantList listCond;
listCond.append(listOtherProperty[4].toInt());
// 线条颜色
formInfo->m_cp_lineColor = listOtherProperty[5];
listCond.append(listOtherProperty[5]);
// 线型
Qt::PenStyle newStyle = Qt::SolidLine;
int iStyle = listOtherProperty[6].toInt();
@ -712,11 +716,87 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
break;
}
formInfo->m_cp_lineStyle = newStyle;
QVariantList listCond;
listCond.append(listOtherProperty[6].toInt());
// 左刻度
formInfo->m_cp_leftScale = listOtherProperty[7].toInt();
formInfo->m_vmin = listOtherProperty[7].toInt();
// 右刻度
formInfo->m_cp_rightScale = listOtherProperty[8].toInt();
formInfo->m_vmax = listOtherProperty[8].toInt();
// 等分刻度数或自定序列
formInfo->m_cp_scaleDivisionsOrCustom = listOtherProperty[9].toInt();
// 刻度类型
formInfo->m_cp_scaleType = listOtherProperty[10].toInt();
// 显示单位
formInfo->m_strUnit = listOtherProperty[11];
// 字体
{
QStringList parts = listOtherProperty[12].split(',');
QString family = parts[0]; // 字体名
int pointSize = parts[1].toInt(); // 字号(pt)
QFont font;
font.setFamily(family);
font.setPointSize(pointSize);
formInfo->m_curveNameFont = font;
}
// 曲线单位
{
QStringList parts = listOtherProperty[13].split(',');
QString family = parts[0]; // 字体名
int pointSize = parts[1].toInt(); // 字号(pt)
QFont font;
font.setFamily(family);
font.setPointSize(pointSize);
formInfo->m_strUnitFont = font;
}
// 曲线刻度
{
QStringList parts = listOtherProperty[14].split(',');
QString family = parts[0]; // 字体名
int pointSize = parts[1].toInt(); // 字号(pt)
QFont font;
font.setFamily(family);
font.setPointSize(pointSize);
formInfo->m_cp_curveScale = font;
}
// 杆状
formInfo->m_cp_drawAsBar = (listOtherProperty[15] == "1");
listCond.append(formInfo->m_cp_drawAsBar);
// 左界
formInfo->m_cp_leftBoundary = (listOtherProperty[16] == "1");
listCond.append(formInfo->m_cp_leftBoundary);
// 不绘零等无效值
formInfo->m_cp_skipZeroInvalidValues = (listOtherProperty[17] == "1");
listCond.append(formInfo->m_cp_skipZeroInvalidValues);
// 绘制包络线
formInfo->m_cp_drawEnvelope = (listOtherProperty[18] == "1");
listCond.append(formInfo->m_cp_drawEnvelope);
// 点状
formInfo->m_cp_drawAsDot = (listOtherProperty[19] == "1");
listCond.append(formInfo->m_cp_drawAsDot);
// 符号类型
formInfo->m_cp_symbolType = listOtherProperty[20].toInt();
listCond.append(formInfo->m_cp_symbolType);
// 边框颜色
formInfo->m_cp_symbolBorderColor = listOtherProperty[21];
listCond.append(formInfo->m_cp_symbolBorderColor);
// 大小
formInfo->m_cp_symbolSize = listOtherProperty[22].toInt();
listCond.append(formInfo->m_cp_symbolSize);
// 填充颜色
formInfo->m_cp_symbolFillColor = listOtherProperty[23];
listCond.append(formInfo->m_cp_symbolFillColor);
// 字段名称
formInfo->m_cp_fieldName = listOtherProperty[24].toInt();
listCond.append(formInfo->m_cp_fieldName);
emit CallManage::getInstance()->sig_changeCorePhysicsProperty(listCond);
}
}
if(strLineName == "IMAGE_DATA")
{
\
}
//设置高度
ui->tableWidget->setRowHeight(row, 100);

View File

@ -4840,10 +4840,77 @@ void QMyCustomPlot::s_changeDepthProperty(QVariantList vlist)
}
}
// 岩心分析
void QMyCustomPlot::s_changeCorePhysicsProperty(QVariantList vlist)
{
qDebug() << "removeSelectedGraph name=";
// m_mapDraggable_CorePhysics
int lineWidth = vlist.at(0).toInt();
QColor lineColor = vlist[1].value<QColor>();
int iStyle = vlist.at(2).toInt();
Qt::PenStyle newStyle = Qt::SolidLine;
switch(iStyle)
{
case 0:
//无
newStyle = Qt::NoPen;
break;
case 1:
//实线
newStyle = Qt::SolidLine;
break;
case 2:
//虚线
newStyle = Qt::DashLine;
break;
case 3:
//点线
newStyle = Qt::DotLine;
break;
case 4:
//虚点线
newStyle = Qt::DashDotLine;
break;
case 5:
//虚点点线
newStyle = Qt::DashDotDotLine;
break;
default:
break;
}
// 杆状
bool drawAsBar = vlist.at(3).toBool();
// 左界
bool leftBoundary = vlist.at(4).toBool();
// 不绘零等无效值
bool skipZeroInvalidValues = vlist.at(5).toBool();
// 绘制包络线
bool drawEnvelope = vlist.at(6).toBool();
// 点状
bool drawAsDot = vlist.at(7).toBool();
// 符号类型
int symbolType = vlist.at(8).toInt();
// 边框颜色
QColor symbolBorderColor = vlist[9].value<QColor>();
// 大小
int symbolSize = vlist.at(10).toInt();
// 填充颜色
QColor symbolFillColor = vlist[11].value<QColor>();
TransparentDraggableCorePhysics *pDraggableRect =NULL;
for (QMap<QString,QObject *>::Iterator iter = m_mapDraggable_CorePhysics.begin(); iter != m_mapDraggable_CorePhysics.end(); iter++)
{
pDraggableRect = (TransparentDraggableCorePhysics*)iter.value();
pDraggableRect->setCpLineWidth(lineWidth);
pDraggableRect->setCpLineColor(lineColor);
pDraggableRect->setCpLineStyle(newStyle);
pDraggableRect->setCpDrawAsBar(drawAsBar);
pDraggableRect->setCpLeftBoundary(leftBoundary);
pDraggableRect->setCpDrawAsDot(drawAsDot);
pDraggableRect->setCpSymbolType(symbolType);
pDraggableRect->setCpSymbolBorderColor(symbolBorderColor);
pDraggableRect->setCpSymbolSize(symbolSize);
pDraggableRect->setCpSymbolFillColor(symbolFillColor);
}
this->replot();
}
//校深线段