diff --git a/CallManage/CallManage.h b/CallManage/CallManage.h index 0a4bd07..1b96c3f 100644 --- a/CallManage/CallManage.h +++ b/CallManage/CallManage.h @@ -200,6 +200,9 @@ signals: void sig_changePlObjectProperty(QVariantMap variantMap); // 改变玫瑰图属性 void sig_changeRoseProperty(QVariantMap variantMap); + // 改变裂缝DCA分析属性 + void sig_changeDcaProperty(QVariantMap variantMap); + //改变岩心分析 void sig_changeCorePhysicsProperty(QVariantMap variantMap); diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index cf62eba..2eeda2d 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -2392,6 +2392,14 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant // changedDenvProperty(m_propertyData[pProperty], variant); } + else if (m_strCurrentProperty == DCA_PROPERTY)//井斜方位图 + { + // 先处理通用属性 + CommonPropertyChanged(pProperty, variant); + changedDcaProperty(m_propertyData[pProperty], variant); + } + +// changedDcaProperty } void PropertyWidget::SlotPropertyChanged(QtProperty *property, const int &val, bool islinestyle) @@ -3278,7 +3286,11 @@ void PropertyWidget::initProperty(FormInfo *formInfo) // 裂缝 this->initCrackProperty(formInfo); } - + else if (formInfo->m_strType == "dcaObject") + { + // + this->initDcaProperty(formInfo); + } } void PropertyWidget::initWaveProperty(FormInfo *formInfo, int nType) @@ -5800,3 +5812,100 @@ void PropertyWidget::changedDenvProperty(QString strProperty, QVariant varVal) emit CallManage::getInstance()->sig_changeDenvProperty(m_formInfo->m_strUuid, m_formInfo->m_strSlfName, m_formInfo->m_strWellName, m_formInfo->m_strTrackName, m_formInfo->m_strLineName); } } + +void PropertyWidget::initDcaProperty(FormInfo *formInfo) +{ + // 数据 + _CreateVariantPropertyItem("数据", "井文件名称", m_strSlfName, QVariant::String); + _CreateVariantPropertyItem("数据", "名称", formInfo->m_strAliasName, QVariant::String); + _CreateVariantPropertyItem("数据", "异常方位曲线", formInfo->m_dca_azimuth_curve, QVariant::String); + _CreateVariantPropertyItem("数据", "异常幅度曲线", formInfo->m_dca_amplitude_curve, QVariant::String); + // 通常 + _CreateVariantPropertyItem("通常", "例区高度(cm)", formInfo->m_headHeight, QVariant::Int); + // 控制曲线 + _CreateVariantPropertyItem("控制曲线", "方位曲线左刻度", formInfo->m_dca_left_azimuth_curve, QVariant::Int); + _CreateVariantPropertyItem("控制曲线", "方位曲线右刻度", formInfo->m_dca_right_azimuth_curve, QVariant::Int); + _CreateVariantPropertyItem("控制曲线", "最大异常幅度", formInfo->m_dca_maximum_amplitude, QVariant::Int); + // 字体 + _CreateVariantPropertyItem("字体", "曲线字体", formInfo->m_strAliasNameFont, QVariant::Font); + _CreateVariantPropertyItem("字体", "单位字体", formInfo->m_strUnitFont, QVariant::Font); + + m_strCurrentProperty = DCA_PROPERTY; +} + +void PropertyWidget::changedDcaProperty(QString strProperty, QVariant varVal) +{ + bool flag = false; + // 数据 + if("名称" == strProperty) + { + QString newAliasName = varVal.value(); + m_formInfo->m_strAliasName = newAliasName; + m_formInfo->update(); + } + if ("异常方位曲线" == strProperty) + { + this->m_formInfo->m_dca_azimuth_curve = varVal.toString(); + flag = true; + } + else if ("异常幅度曲线" == strProperty) + { + this->m_formInfo->m_dca_amplitude_curve = varVal.toString(); + flag = true; + } + // 通常 + else if ("例区高度(cm)" == strProperty) + { + int temp = varVal.toInt(); + this->m_formInfo->m_headHeight = temp; + this->m_formInfo->setFixedHeight(temp); + this->m_formInfo->repaint(); + } + // 控制曲线 + else if ("方位曲线左刻度" == strProperty) + { + this->m_formInfo->m_dca_left_azimuth_curve = varVal.toInt(); + flag = true; + } + else if ("方位曲线右刻度" == strProperty) + { + this->m_formInfo->m_dca_right_azimuth_curve = varVal.toInt(); + flag = true; + } + else if ("最大异常幅度" == strProperty) + { + this->m_formInfo->m_dca_maximum_amplitude = varVal.toInt(); + flag = true; + } + // 字体 + else if ("曲线字体" == strProperty) + { + QFont newFont = varVal.value(); + this->m_formInfo->m_strAliasNameFont = newFont; + this->m_formInfo->repaint(); + } + else if ("单位字体" == strProperty) + { + QFont temp = varVal.value(); + this->m_formInfo->m_strUnitFont = temp; + this->m_formInfo->repaint(); + } + + if(flag) + { + QVariantMap variantMap; + // 必须用来判断当前道 + variantMap["m_strTrackName"] = this->m_formInfo->m_strTrackName; + // 数据 + variantMap["m_dca_azimuth_curve"] = this->m_formInfo->m_dca_azimuth_curve; + variantMap["m_dca_amplitude_curve"] = this->m_formInfo->m_dca_amplitude_curve; + // 控制曲线 + variantMap["m_dca_left_azimuth_curve"] = this->m_formInfo->m_dca_left_azimuth_curve; + variantMap["m_dca_right_azimuth_curve"] = this->m_formInfo->m_dca_right_azimuth_curve; + variantMap["m_dca_maximum_amplitude"] = this->m_formInfo->m_dca_maximum_amplitude; + + emit CallManage::getInstance()->sig_changeDcaProperty(variantMap); + } + +} + diff --git a/logPlus/PropertyWidget.h b/logPlus/PropertyWidget.h index 85daec9..87cb87c 100644 --- a/logPlus/PropertyWidget.h +++ b/logPlus/PropertyWidget.h @@ -54,6 +54,7 @@ #define CRACK_PROPERTY "CRACK_PROPERTY" // 裂缝 #define PL_OBJECT_PROPERTY "PL_OBJECT_PROPERTY" // 频率统计图 #define ROSE_OBJECT_PROPERTY "ROSE_OBJECT_PROPERTY" // 玫瑰图 +#define DCA_PROPERTY "DCA_PROPERTY" // 裂缝DCA分析 #define SwallCore_Property "SwallCore_Property" //井壁取心 #define SwallCoreItem_Property "SwallCoreItem_Property" //井壁取心item @@ -261,6 +262,10 @@ public: void initRoseProperty(FormInfo *formInfo); void changedRoseProperty(QString strProName, QVariant val); + // 裂缝DCA分析 + void initDcaProperty(FormInfo *formInfo); + void changedDcaProperty(QString strProperty, QVariant varVal); + //蝌蚪图 void initKedouProperty(FormInfo *formInfo); void changedKedouProperty(QString strProName, QVariant val); diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index f65b257..9f3079e 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -407,13 +407,14 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo) } else if("CrackObject" == strType) // 裂缝 { - qDebug() << "==================== number:" << pInfo; - pInfo; - curv; +// qDebug() << "==================== number:" << pInfo; +// pInfo; +// curv; } else if("dcaObject" == strType) { - initDCA(curv); +// m_dca_azimuth_curve异常方位曲线 m_dca_amplitude_curve异常幅度曲线 m_dca_left_azimuth_curve方位曲线左刻度 m_dca_right_azimuth_curve方位曲线右刻度 m_dca_maximum_amplitude最大异常幅度 + initDCA(curv, pInfo->m_dca_azimuth_curve, pInfo->m_dca_amplitude_curve, pInfo->m_dca_left_azimuth_curve, pInfo->m_dca_right_azimuth_curve, pInfo->m_dca_maximum_amplitude); } else if("tdtObject" == strType) { @@ -563,7 +564,7 @@ void FormDraw::DisplayLines(QJsonArray linesArray) DisplayTvd_One(lineObjInfo); } // 深度 频率统计图 玫瑰图 - else if (strType == "depthObject" || strType == "plObject" || strType == "roseObject" || strType == "CrackObject") + else if (strType == "depthObject" || strType == "plObject" || strType == "roseObject" || strType == "CrackObject" || strType == "dcaObject") { // 频率统计图 DisplayType_One(lineObjInfo); @@ -3949,7 +3950,7 @@ FormLine* FormDraw::s_addSantuyibiao(QString strUuid, QString strSlfName, QStrin return curv; } -//裂痕 +// 裂缝 void FormDraw::s_addCrack(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW) { //井名&道名不一致 @@ -6182,8 +6183,11 @@ void FormDraw::addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const Q pLine->setPoints(myPolygon); } -void FormDraw::initDCA(QMyCustomPlot *widget) +void FormDraw::initDCA(QMyCustomPlot *widget, QString m_csCurveFd, QString m_csCurveFw, int m_dca_left_azimuth_curve, int m_dca_right_azimuth_curve, int m_dca_maximum_amplitude) { + widget->clearGraphs(); + widget->clearItems(); + widget->setScaleX(0, 360); widget->setDepthY(m_iY1, m_iY2); @@ -6201,7 +6205,6 @@ void FormDraw::initDCA(QMyCustomPlot *widget) float m_flRlev2 = 0.0f; if ( mrw.Open(m_strSlfName.toStdString().c_str()) ) // 打开井文件 { - QString m_csCurveFd=("DCA"); // 方位/倾角 曲线名 int iIndex = mrw.OpenWave(m_csCurveFd.toStdString().c_str()); if (iIndex >= 0) { @@ -6223,7 +6226,6 @@ void FormDraw::initDCA(QMyCustomPlot *widget) //mFillMes->ItemNum=m_nSamples; //---------------------------- } - QString m_csCurveFw=("AZIX_DCA"); // 方位/倾角 曲线名 //AZIX_DCA iIndex = mrw.OpenWave(m_csCurveFw.toStdString().c_str()); if (iIndex >= 0) @@ -6258,9 +6260,9 @@ void FormDraw::initDCA(QMyCustomPlot *widget) float m_PlotSdep=sdepc; float m_PlotEdep=edepc; - m_LeftVal = 0; - m_RightVal = 360; - float m_Amp = 5000; + m_LeftVal = m_dca_left_azimuth_curve; + m_RightVal = m_dca_right_azimuth_curve; + float m_Amp = m_dca_maximum_amplitude; QColor m_crFill[4]; m_crFill[0] = QColor(qRgb(255,0,0)); diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index b085966..a23c3ac 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -240,7 +240,7 @@ public: void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen); // DCA检测 - void initDCA(QMyCustomPlot *widget); + void initDCA(QMyCustomPlot *widget, QString m_dca_azimuth_curve, QString m_dca_amplitude_curve, int m_dca_left_azimuth_curve, int m_dca_right_azimuth_curve, int m_dca_maximum_amplitude); float ComputeCurvePos(float flVal,float lsc,float rsc,float lps,float rps,int iType,float scale,float flMin=-99999,float flMax=99999); TDTResultItem* LoadTDTResult_SLF(QString strSlfName); @@ -269,7 +269,7 @@ public slots: void s_addDrawImage(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW); //斜井三图一表 FormLine* s_addSantuyibiao(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW); - //裂缝 + // 裂缝 void s_addCrack(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW); //气测/FMT/射孔/文本 diff --git a/logPlus/forminfo.cpp b/logPlus/forminfo.cpp index cf1614c..e90a992 100644 --- a/logPlus/forminfo.cpp +++ b/logPlus/forminfo.cpp @@ -537,8 +537,36 @@ void FormInfo::initProperty(QJsonObject obj) // 显示控制 this->m_crack_decimal_digits = obj["m_crack_decimal_digits"].toInt(); // 小数位数 } + else if ("dcaObject" == strType) + { + this->m_dca_azimuth_curve = obj["m_dca_azimuth_curve"].toString(); + this->m_dca_amplitude_curve = obj["m_dca_amplitude_curve"].toString(); + // 通常 + this->m_headHeight = obj["m_headHeight"].toInt(); // 例区高度 + // 控制曲线 + this->m_dca_left_azimuth_curve = obj["m_dca_left_azimuth_curve"].toInt(); // 方位曲线左刻度 + this->m_dca_right_azimuth_curve = obj["m_dca_right_azimuth_curve"].toInt(); + this->m_dca_maximum_amplitude = obj["m_dca_maximum_amplitude"].toInt(); + // 字体 + { + // 名称 + QStringList fontParts = obj["m_strAliasNameFont"].toString().split(","); // 按逗号拆分 + if (fontParts.size() >= 2) { + this->m_strAliasNameFont.setFamily(fontParts[0]); // 设置字体名称 + this->m_strAliasNameFont.setPointSize(fontParts[1].toInt()); // 设置字号 + } + } + { + // 单位 + QStringList fontParts = obj["m_strUnitFont"].toString().split(","); // 按逗号拆分 + if (fontParts.size() >= 2) { + this->m_strUnitFont.setFamily(fontParts[0]); // 设置字体名称 + this->m_strUnitFont.setPointSize(fontParts[1].toInt()); // 设置字号 + } + } + } - if ("plObject" == strType || ("roseObject" == strType) || "CrackObject" == strType) + if ("plObject" == strType || "roseObject" == strType || "CrackObject" == strType) { // 通常 this->m_headHeight = obj["m_headHeight"].toInt(); // 例区高度 @@ -994,6 +1022,27 @@ QJsonObject FormInfo::makeJson() // 显示控制 rootObj["m_crack_decimal_digits"] = this->m_crack_decimal_digits; // 小数位数 } + else if (m_strType == "CrackObject") + { + + } + else if (m_strType == "dcaObject") + { + // 数据 + // 井文件名称 + // 名称 + rootObj["m_dca_azimuth_curve"] = this->m_dca_azimuth_curve; + rootObj["m_dca_amplitude_curve"] = this->m_dca_amplitude_curve; + // 通常 + rootObj["m_headHeight"] = this->m_headHeight; // 例区高度 + // 控制曲线 + rootObj["m_dca_left_azimuth_curve"] = this->m_dca_left_azimuth_curve; // 方位曲线左刻度 + rootObj["m_dca_right_azimuth_curve"] = this->m_dca_right_azimuth_curve; + rootObj["m_dca_maximum_amplitude"] = this->m_dca_maximum_amplitude; + // 字体 + rootObj["m_strAliasNameFont"] = this->m_strAliasNameFont.toString(); // 名称 + rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位 + } if(m_strType == "CrackObject" || m_strType == "plObject" || m_strType == "roseObject") { @@ -1429,6 +1478,10 @@ void FormInfo::paintEvent(QPaintEvent* event) { QFont oldFont = painter.font(); painter.setFont(this->m_curveNameFont); + if(this->m_strType == "dcaObject") + { + rt.setY(rt.y() - 60); + } painter.drawText(rt, Qt::AlignCenter, text); painter.setFont(oldFont); } @@ -1782,6 +1835,36 @@ void FormInfo::paintEvent(QPaintEvent* event) this->paintClassify(painter, compassCenterY); } + if(this->m_strType == "dcaObject") + { + int w = rect.width() / 4; + QRect rt = rect; + rt.setX(rect.left()); + rt.setY(rect.top() + rect.height() / 3); + rt.setWidth(w); + rt.setHeight(rect.height() / 3); + painter.setBrush(QBrush(Qt::red, Qt::SolidPattern)); + painter.setPen(QPen(Qt::red, 1)); + painter.drawRect(rt); + + rt.setX(rt.x() + w); + rt.setWidth(w); + painter.setBrush(QBrush(Qt::green, Qt::SolidPattern)); + painter.setPen(QPen(Qt::green, 1)); + painter.drawRect(rt); + + rt.setX(rt.x() + w); + rt.setWidth(w); + painter.setBrush(QBrush(Qt::blue, Qt::SolidPattern)); + painter.setPen(QPen(Qt::blue, 1)); + painter.drawRect(rt); + + rt.setX(rt.x() + w); + rt.setWidth(w); + painter.setBrush(QBrush(Qt::black, Qt::SolidPattern)); + painter.setPen(QPen(Qt::black, 1)); + painter.drawRect(rt); + } QWidget::paintEvent(event); } diff --git a/logPlus/forminfo.h b/logPlus/forminfo.h index e928c14..4e51772 100644 --- a/logPlus/forminfo.h +++ b/logPlus/forminfo.h @@ -387,6 +387,25 @@ public: //井斜方位图 QString m_pl_deviCurve = "DEVI"; // 井斜曲线 + // 裂缝DCA分析 + // 数据 + // 井文件名称 + // 名称 + QString m_dca_azimuth_curve = "AZIX_DCA"; // 异常方位曲线 + QString m_dca_amplitude_curve = "DCA"; // 异常幅度曲线 + // 通常 + // 例区高度(cm) + // 控制曲线 + int m_dca_left_azimuth_curve = 0; // 方位曲线左刻度 + int m_dca_right_azimuth_curve = 360; // 方位曲线右刻度 + int m_dca_maximum_amplitude = 5000; // 最大异常幅度 + + + + + + + public: void setLineWidth(double dWidth); double getLineWidth(); diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index 189db44..fb28023 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -192,6 +192,11 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel // 玫瑰图属性修改 connect(CallManage::getInstance(), SIGNAL(sig_changeRoseProperty(QVariantMap)), this, SLOT(s_changeRoseProperty(QVariantMap))); + // 裂缝DCA分析属性修改 + connect(CallManage::getInstance(), SIGNAL(sig_changeDcaProperty(QVariantMap)), this, SLOT(s_changeDcaProperty(QVariantMap))); + + + connect(CallManage::getInstance(), SIGNAL(sig_changeDrawProperty(QVariantList)), this, SLOT(s_changeDrawProperty(QVariantList))); // 岩心分析 @@ -11765,6 +11770,25 @@ void QMyCustomPlot::drawRose(bool bTableData, QString csCurveDDIR, QString csCur this->replot(); } +void QMyCustomPlot::s_changeDcaProperty(QVariantMap variantMap) +{ + QString strTrackName = variantMap["m_strTrackName"].toString(); + if(this->m_strTrackName != strTrackName) + { + return; + } + // 数据 + QString m_dca_azimuth_curve = variantMap["m_dca_azimuth_curve"].toString(); + QString m_dca_amplitude_curve = variantMap["m_dca_amplitude_curve"].toString(); + // 控制曲线 + int m_dca_left_azimuth_curve = variantMap["m_dca_left_azimuth_curve"].toInt(); + int m_dca_right_azimuth_curve = variantMap["m_dca_right_azimuth_curve"].toInt(); + int m_dca_maximum_amplitude = variantMap["m_dca_maximum_amplitude"].toInt(); + + m_formDraw->initDCA(this, m_dca_azimuth_curve, m_dca_amplitude_curve, m_dca_left_azimuth_curve, m_dca_right_azimuth_curve, m_dca_maximum_amplitude); +} + + void QMyCustomPlot::addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen) { QPolygonF myPolygon; diff --git a/logPlus/qmycustomplot.h b/logPlus/qmycustomplot.h index 14d2598..e91df15 100644 --- a/logPlus/qmycustomplot.h +++ b/logPlus/qmycustomplot.h @@ -646,6 +646,9 @@ public slots: // 玫瑰图 void s_changeRoseProperty(QVariantMap variantMap); + // 裂缝DCA分析 + void s_changeDcaProperty(QVariantMap variantMap); + // 岩心分析 void s_changeCorePhysicsProperty(QVariantMap variantMap);