添加多臂井径json模板

This commit is contained in:
jiayulong 2026-04-23 18:42:59 +08:00
parent 763a628b64
commit 84092edf7d
12 changed files with 487 additions and 150 deletions

View File

@ -10,14 +10,14 @@
extern double GetData(int RepCode,char *buffer); extern double GetData(int RepCode,char *buffer);
CDrawNrad::CDrawNrad(QMyCustomPlot *myCustomPlot, QString strSlfName, QString csCurve) CDrawNrad::CDrawNrad(QMyCustomPlot *myCustomPlot)
{ {
m_myCustomPlot = myCustomPlot; m_myCustomPlot = myCustomPlot;
// //
m_PointNum=0; m_PointNum=0;
m_LeftVal=30; m_LeftVal=30;//最小井径
m_RightVal=65; m_RightVal=65;//最大井径
m_crHorzLine=qRgb(0,0,0); m_crHorzLine=qRgb(0,0,0);
m_crVertLine=qRgb(0,0,0); m_crVertLine=qRgb(0,0,0);
@ -25,8 +25,10 @@ CDrawNrad::CDrawNrad(QMyCustomPlot *myCustomPlot, QString strSlfName, QString cs
m_nVertLineWidth = 1; m_nVertLineWidth = 1;
m_nHorzGrid = 0; m_nHorzGrid = 0;
m_nArm = 36; m_nArm = 36;
m_iStartArmPos=1;
m_iEndArmPos=11; m_iStartArmPos=1;//左边井径序号
m_iEndArmPos=11; //右边井径序号
m_nFrac = 0; m_nFrac = 0;
m_D3Angle = 10; m_D3Angle = 10;
@ -40,8 +42,8 @@ CDrawNrad::CDrawNrad(QMyCustomPlot *myCustomPlot, QString strSlfName, QString cs
m_flVFactor = 0.8; //椭圆纵向半径占横向半径比例 m_flVFactor = 0.8; //椭圆纵向半径占横向半径比例
m_nVertGrid = 20; //纵向网格间隔 m_nVertGrid = 20; //纵向网格间隔
ReadData(strSlfName, csCurve); // ReadData(strSlfName, csCurve);
DrawNrad(strSlfName, csCurve); // DrawNrad(strSlfName, csCurve);
} }
CDrawNrad::~CDrawNrad(void) CDrawNrad::~CDrawNrad(void)

View File

@ -10,7 +10,7 @@ class CDrawNrad:public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
CDrawNrad(QMyCustomPlot *myCustomPlot, QString strSlfName, QString csCurve); CDrawNrad(QMyCustomPlot *myCustomPlot);
virtual ~CDrawNrad(void); virtual ~CDrawNrad(void);
public: public:
@ -22,8 +22,8 @@ public:
float m_flVFactor; // 椭圆纵向半径占横向半径比例 float m_flVFactor; // 椭圆纵向半径占横向半径比例
float m_flWjMaxFactor; //外径最大位置占道的比例 float m_flWjMaxFactor; //外径最大位置占道的比例
float m_flWjMinFactor; //外径最小位置占道的比例 float m_flWjMinFactor; //外径最小位置占道的比例
float m_nVertGrid; // 深度方向每隔多少个采样点绘制一个网格 float m_nVertGrid; // 纵向网格间隔 深度方向每隔多少个采样点绘制一个网格
int m_nHorzStep; // 旋转增量,最小0最大:20 int m_nHorzStep; // 旋转井径增量,最小0最大:20
int m_nHorzGrid; // 井径曲线间网格数 int m_nHorzGrid; // 井径曲线间网格数
QColor m_crHorzLine, m_crVertLine; // 网格纵、横线颜色 QColor m_crHorzLine, m_crVertLine; // 网格纵、横线颜色
int m_nHorzLineWidth, m_nVertLineWidth;// 网格纵、横线宽度 int m_nHorzLineWidth, m_nVertLineWidth;// 网格纵、横线宽度
@ -39,8 +39,8 @@ public:
float m_flRlev2; //二维曲线采样间隔 float m_flRlev2; //二维曲线采样间隔
int m_nSamples; int m_nSamples;
int m_PointNum; int m_PointNum;
float m_LeftVal; //左刻度 float m_LeftVal; //最小井径
float m_RightVal; //右刻度 float m_RightVal; //最大井径
Slf_WAVE WaveInfo; //波列基本信息 Slf_WAVE WaveInfo; //波列基本信息
float m_SDep,m_EDep,m_Rlev; float m_SDep,m_EDep,m_Rlev;
}; };

View File

@ -3217,26 +3217,26 @@ void PropertyWidget::initProperty(FormInfo *formInfo)
//蝌蚪图 //蝌蚪图
this->initKedouProperty(formInfo); this->initKedouProperty(formInfo);
} }
else if (m_strLineName == "GANZHUANG.LINE")
{
//杆状图
this->initGanzhuangProperty(formInfo);
}
else if (m_strLineName == "JINGYANKUATA.LINE")
{
//井眼垮塌矢量图
this->initJyktProperty(formInfo);
}
else if (m_strLineName == "XIEFANGWEI.LINE")
{
//井斜方位图
this->initDenvProperty(formInfo);
}
else else
{ {
this->initTableProperty(formInfo); this->initTableProperty(formInfo);
} }
} }
else if (formInfo->m_strType == "ganzhuangtuObject")
{
//杆状图
this->initGanzhuangProperty(formInfo);
}
else if (formInfo->m_strType == "JyktObject")
{
//井眼垮塌矢量图
this->initJyktProperty(formInfo);
}
else if (formInfo->m_strType == "DenvObject")
{
//井斜方位图
this->initDenvProperty(formInfo);
}
else if (formInfo->m_strType == "depthObject") else if (formInfo->m_strType == "depthObject")
{ {
this->initDepthProperty(formInfo); this->initDepthProperty(formInfo);

View File

@ -10,7 +10,6 @@
#include <QtMath> #include <QtMath>
#include "Gradient.h" #include "Gradient.h"
#include "PickFrac.h" #include "PickFrac.h"
#include "DrawNrad.h"
#include "formline.h" #include "formline.h"
#include "PropertyWidget.h" #include "PropertyWidget.h"
#include "DrawTvd.h" #include "DrawTvd.h"
@ -536,12 +535,18 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
// 岩心照片 // 岩心照片
displayImageData(lineObjInfo); displayImageData(lineObjInfo);
} }
else if (strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE" || strLineName == "XIEFANGWEI.LINE") else if (strLineName == "FRAC_HOLE.TABLE")
{ {
// 蝌蚪图、杆状图、井眼垮塌矢量图、井斜方位图 // 蝌蚪图
DisplayKedouAndOthers_One(lineObjInfo); DisplayKedouAndOthers_One(lineObjInfo);
} }
} }
else if (strType == "ganzhuangtuObject"
|| strType == "JyktObject" || strType == "DenvObject")
{
// 杆状图、井眼垮塌矢量图、井斜方位图
DisplayKedouAndOthers_One(lineObjInfo);
}
else if (strType == "JiegutextObject") else if (strType == "JiegutextObject")
{ {
//气测/FMT/射孔/文本 //气测/FMT/射孔/文本
@ -568,6 +573,11 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
// 频率统计图 // 频率统计图
DisplayType_One(lineObjInfo); DisplayType_One(lineObjInfo);
} }
else if (strType == "MCalsObject")
{
// 多臂井径属性
DisplayMCals_One(lineObjInfo);
}
else else
{ {
DisplayType_One(lineObjInfo); DisplayType_One(lineObjInfo);
@ -1199,6 +1209,79 @@ void FormDraw::DisplayKedouAndOthers_One(QJsonObject lineObjInfo)
} }
} }
//多臂井径
void FormDraw::DisplayMCals_One(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;
}
}
QString folderPath = GetLogdataPath();
folderPath = folderPath + g_prjname;
strSlfName = folderPath + "/" + "#" + strWellName + "/" + strSlfName;
if (strLineName != "")
{
//多臂井径
this->addMCals(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, lineObjInfo);
}
}
//气测/FMT/射孔/文本 //气测/FMT/射孔/文本
void FormDraw::DisplayJiegutext_One(QJsonObject lineObjInfo) void FormDraw::DisplayJiegutext_One(QJsonObject lineObjInfo)
{ {
@ -3122,6 +3205,50 @@ QMyCustomPlot* FormDraw::addKedouAndOthers(QString strUuid, QString strSlfName,
return curv; return curv;
} }
QMyCustomPlot* FormDraw::addMCals(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QJsonObject listOtherProperty)
{
//井名&道名不一致
if (strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName)
{
}
else
{
return NULL;
}
if (m_listLineName.contains(strLineName))
{
qDebug() << "FormDraw strLineName already exist! " << strLineName;
return NULL;
}
//
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName);
//绑定m_formTrack方便关联formInfo
curv->m_formTrack = m_formTrack;
curv->setDepthY(m_iY1, m_iY2);
curv->initGeometry(m_strUuid, m_iScale, m_nTrackW);
curv->show();
QString strAliasName = "多臂井径";
QColor newlineColor=QColor(0,0,0);
// 显示名称
if (listOtherProperty.contains("AliasName"))
{
QJsonValue value = listOtherProperty.value("AliasName");
if (value.isString()) {
strAliasName = value.toString();
}
}
//
initMCals(curv, strSlfName, strLineName, strAliasName, newlineColor, listOtherProperty);
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
//
m_listLineName.push_back(strLineName);
return curv;
}
void FormDraw::s_addLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) void FormDraw::s_addLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName)
{ {
//井名&道名不一致 //井名&道名不一致
@ -4248,47 +4375,70 @@ void FormDraw::s_addMCals(QString strUuid, QString strSlfName, QString strWellNa
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName); QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName);
//绑定m_formTrack方便关联formInfo //绑定m_formTrack方便关联formInfo
curv->m_formTrack = m_formTrack; curv->m_formTrack = m_formTrack;
curv->show(); curv->m_strUuid = m_strUuid;
//-------------------
int iMyWidth = curv->axisRect(0)->width();
m_LeftVal = 0;
m_RightVal = iMyWidth;
float vmax = iMyWidth;
float vmin = 0;
curv->setScaleX(vmin, vmax);
curv->setDepthY(m_iY1, m_iY2); curv->setDepthY(m_iY1, m_iY2);
curv->initGeometry(m_strUuid, m_iScale, g_iOneWidth); curv->initGeometry(m_strUuid, m_iScale, g_iOneWidth);
curv->axisRect()->setupFullAxesBox(); curv->show();
//
curv->xAxis->ticker()->setTickCount(10);//x个主刻度
curv->yAxis->ticker()->setTickCount(60);//y个主刻度
//对调XY轴在最前面设置
QCPAxis *yAxis = curv->yAxis;
QCPAxis *xAxis = curv->xAxis;
curv->xAxis = yAxis;
curv->yAxis = xAxis;
//多臂井径 //多臂井径
QString strWaveName = "FCA2"; initMCals(curv, strSlfName, strLineName);
CDrawNrad *drawNrad = new CDrawNrad(curv, strSlfName, strWaveName);
// //
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*))); connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
// //
m_listLineName.push_back(strLineName); m_listLineName.push_back(strLineName);
}
QString strAliasName = "多臂井径"; //多臂井径
void FormDraw::initMCals(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName, QColor newlineColor, QJsonObject listOtherProperty)
{
//隐藏网格
widget->xAxis->grid()->setVisible(false);
widget->yAxis->grid()->setVisible(false);
//
widget->m_bRowGridVisible = false;
widget->m_bColGridVisible = false;
//-------------------
int iMyWidth = widget->axisRect(0)->width();
m_LeftVal = 0;
m_RightVal = iMyWidth;
float vmax = iMyWidth;
float vmin = 0;
widget->setScaleX(vmin, vmax);
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->xAxis->setTicks(false);
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//-----------------------------------
QString strUnit = ""; QString strUnit = "";
QColor newlineColor=QColor(0,0,0);
double width=2; double width=2;
QString strScaleType = ""; QString strScaleType = "";
//道-对象 //道-对象
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strWaveName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "MCalsObject"); FormInfo* pInfo = m_formTrack->AddMCals(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "MCalsObject", listOtherProperty);
//多臂井径
widget->Draw_MCals();
} }
//套管组件 //套管组件
@ -5171,7 +5321,7 @@ void FormDraw::initGanzhuang(QMyCustomPlot *widget, QString strSlfName, QString
strUnit = listOtherProperty["Unit"].toString(); // 单位 strUnit = listOtherProperty["Unit"].toString(); // 单位
} }
//道-对象 //道-对象
FormInfo* pInfo = m_formTrack->AddKedouAndOthers(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "tableObject", listOtherProperty); FormInfo* pInfo = m_formTrack->AddKedouAndOthers(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "ganzhuangtuObject", listOtherProperty);
//杆状图 //杆状图
widget->Draw_Ganzhuang(); widget->Draw_Ganzhuang();
@ -5229,7 +5379,7 @@ void FormDraw::initJykt(QMyCustomPlot *widget, QString strSlfName, QString strLi
strUnit = listOtherProperty["Unit"].toString(); // 单位 strUnit = listOtherProperty["Unit"].toString(); // 单位
} }
//道-对象 //道-对象
FormInfo* pInfo = m_formTrack->AddKedouAndOthers(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "tableObject", listOtherProperty); FormInfo* pInfo = m_formTrack->AddKedouAndOthers(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "JyktObject", listOtherProperty);
//杆状图 //杆状图
widget->Draw_Jykt(); widget->Draw_Jykt();
@ -5287,7 +5437,7 @@ void FormDraw::initDenv(QMyCustomPlot *widget, QString strSlfName, QString strLi
strUnit = listOtherProperty["Unit"].toString(); // 单位 strUnit = listOtherProperty["Unit"].toString(); // 单位
} }
//道-对象 //道-对象
FormInfo* pInfo = m_formTrack->AddKedouAndOthers(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "tableObject", listOtherProperty); FormInfo* pInfo = m_formTrack->AddKedouAndOthers(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "DenvObject", listOtherProperty);
//杆状图 //杆状图
widget->Draw_Denv(); widget->Draw_Denv();

View File

@ -48,6 +48,8 @@ public:
void DisplayTable_One(QJsonObject lineObjInfo); void DisplayTable_One(QJsonObject lineObjInfo);
//蝌蚪图 //蝌蚪图
void DisplayKedouAndOthers_One(QJsonObject lineObjInfo); void DisplayKedouAndOthers_One(QJsonObject lineObjInfo);
//多臂井径
void DisplayMCals_One(QJsonObject lineObjInfo);
//气测/FMT/射孔/文本 //气测/FMT/射孔/文本
void DisplayJiegutext_One(QJsonObject lineObjInfo); void DisplayJiegutext_One(QJsonObject lineObjInfo);
@ -94,6 +96,10 @@ protected:
QMyCustomPlot* addKedouAndOthers(QString strUuid, QString strSlfName, QString strWellName, QMyCustomPlot* addKedouAndOthers(QString strUuid, QString strSlfName, QString strWellName,
QString strTrackName, QString strLineName, QJsonObject listOtherProperty={}); QString strTrackName, QString strLineName, QJsonObject listOtherProperty={});
//多臂井径
QMyCustomPlot* addMCals(QString strUuid, QString strSlfName, QString strWellName,
QString strTrackName, QString strLineName, QJsonObject listOtherProperty={});
public slots: public slots:
void dragEnterEvent(QDragEnterEvent* event); void dragEnterEvent(QDragEnterEvent* event);
void dragMoveEvent(QDragMoveEvent* event); void dragMoveEvent(QDragMoveEvent* event);
@ -157,6 +163,9 @@ public:
//井斜方位图 //井斜方位图
void initDenv(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "井斜方位图", QColor newlineColor=QColor(0,0,0), QJsonObject listOtherProperty={}); void initDenv(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "井斜方位图", QColor newlineColor=QColor(0,0,0), QJsonObject listOtherProperty={});
//多臂井径
void initMCals(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "多臂井径", QColor newlineColor=QColor(0,0,0), QJsonObject listOtherProperty={});
void ReadFracDef(); void ReadFracDef();
void ReadData(QString strSlfName, QString strLineName);//表格 void ReadData(QString strSlfName, QString strLineName);//表格
void ReadData(QString strSlfName, QString strLineName, int iCurve, Slf_CURVE *curve);//曲线 void ReadData(QString strSlfName, QString strLineName, int iCurve, Slf_CURVE *curve);//曲线

View File

@ -239,7 +239,7 @@ void FormInfo::initProperty_Ganzhuang(QJsonObject obj)
else else
{ {
QString strType = obj.value("Type").toString(); QString strType = obj.value("Type").toString();
if ("tableObject" == strType) if ("ganzhuangtuObject" == strType)
{ {
// 字体 // 字体
// 名称 // 名称
@ -295,7 +295,7 @@ void FormInfo::initProperty_Jykt(QJsonObject obj)
else else
{ {
QString strType = obj.value("Type").toString(); QString strType = obj.value("Type").toString();
if ("tableObject" == strType) if ("JyktObject" == strType)
{ {
// 字体 // 字体
// 名称 // 名称
@ -356,7 +356,7 @@ void FormInfo::initProperty_Denv(QJsonObject obj)
else else
{ {
QString strType = obj.value("Type").toString(); QString strType = obj.value("Type").toString();
if ("tableObject" == strType) if ("DenvObject" == strType)
{ {
// 字体 // 字体
// 名称 // 名称
@ -389,6 +389,56 @@ void FormInfo::initProperty_Denv(QJsonObject obj)
} }
} }
void FormInfo::initProperty_MCals(QJsonObject obj)
{
if(obj.isEmpty())
{
m_MinVal = 30;//最小井径
m_MaxVal = 65;//最大井径
m_iStartArmPos = 0; //左边井径序号
m_iEndArmPos = 20;//右边井径序号
m_MinRatio = 0.5; //最小外径占道比例
m_MaxRatio = 0.6;//最大外径占道比例
m_nVertGrid = 20; //纵向网格间隔
m_nHorzGrid = 0;//井径曲线间网格
m_nHorzStep = 5;//旋转井径增量
m_flVFactor = 0.8; //井柱椭圆纵横半径比
m_nHLineWidth =1;
m_nVLineWidth =1;
}
else
{
QString strType = obj.value("Type").toString();
if ("waveObject" == strType)
{
// 字体
// 名称
this->m_curveNameFont.fromString(obj["curveNameFont"].toString());
// 单位
this->m_strUnitFont.fromString(obj["m_strUnitFont"].toString());
// 刻度
this->m_pl_fontScale.fromString(obj["m_pl_fontScale"].toString());
m_MinVal = obj["m_MinVal"].toDouble();//最小井径
m_MaxVal = obj["m_MaxVal"].toDouble();//最大井径
m_iStartArmPos = obj["m_iStartArmPos"].toInt(); //左边井径序号
m_iEndArmPos = obj["m_iEndArmPos"].toInt(); //右边井径序号
m_MinRatio =obj["m_MinRatio"].toDouble(); //最小外径占道比例
m_MaxRatio = obj["m_MaxRatio"].toDouble();//最大外径占道比例
m_nVertGrid = obj["m_nVertGrid"].toInt(); //纵向网格间隔
m_nHorzGrid = obj["m_nHorzGrid"].toInt();//井径曲线间网格
m_nHorzStep = obj["m_nHorzStep"].toInt();//旋转井径增量
m_flVFactor = obj["m_flVFactor"].toDouble(); //井柱椭圆纵横半径比
m_nHLineWidth = obj["m_nHLineWidth"].toInt();
m_HLineColor.setNamedColor(obj["m_HLineColor"].toString());
m_nVLineWidth = obj["m_nVLineWidth"].toInt();
m_VLineColor.setNamedColor(obj["m_VLineColor"].toString());
}
}
}
void FormInfo::initProperty(QJsonObject obj) void FormInfo::initProperty(QJsonObject obj)
{ {
m_vmin = obj.value("vmin").toDouble(); m_vmin = obj.value("vmin").toDouble();
@ -706,81 +756,6 @@ QJsonObject FormInfo::makeJson()
rootObj["m_pl_custom2"] = this->m_pl_custom2; // 自定义2 rootObj["m_pl_custom2"] = this->m_pl_custom2; // 自定义2
return rootObj; return rootObj;
} }
else if (m_strLineName == "GANZHUANG.LINE")
{
//杆状图
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 曲线选择
rootObj["m_pl_azimuthCurve"] = this->m_pl_azimuthCurve; // 方位曲线
rootObj["m_pl_inclinationCurve"] = this->m_pl_inclinationCurve; // 倾角曲线
rootObj["m_pl_GradCurve"] = this->m_pl_GradCurve; // 可信度曲线
//杆
rootObj["m_nTailLen"] = this->m_nTailLen; // 尾线长度
rootObj["m_nTailWidth"] = this->m_nTailWidth; // 尾线宽度
rootObj["m_crTail"] = this->m_crTail.name(); // 尾线颜色
// 显示控制
rootObj["m_pl_minInclination"] = this->m_pl_minInclination; // 最小倾角
rootObj["m_pl_maxInclination"] = this->m_pl_maxInclination; // 最大倾角
rootObj["m_flGrad1"] = this->m_flGrad1; // 可信度1
rootObj["m_flGrad2"] = this->m_flGrad2; // 可信度2
//单位
rootObj["Unit"] = m_strUnit;
rootObj["m_flStep"] = m_flStep;//深度间隔
return rootObj;
}
else if (m_strLineName == "JINGYANKUATA.LINE")
{
//井眼垮塌矢量图
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 曲线选择
rootObj["m_pl_azimuthCurve"] = this->m_pl_azimuthCurve; // 方位曲线
rootObj["m_pl_deltaCurve"] = this->m_pl_deltaCurve; // 井径差曲线
//蝌蚪符号
rootObj["m_nRadius"] = this->m_nRadius; // 圆半径
rootObj["m_nCircleWidth"] = this->m_nCircleWidth; // 圆线宽度
rootObj["m_nTailLen"] = this->m_nTailLen; // 尾线长度
rootObj["m_nTailWidth"] = this->m_nTailWidth; // 尾线宽度
rootObj["m_crCircle"] = this->m_crCircle.name(); // 圆线颜色
rootObj["m_crTail"] = this->m_crTail.name(); // 尾线颜色
rootObj["m_crPointFill"] = this->m_crPointFill.name(); // 圆填充色
//
rootObj["vmax"] = m_vmax;//右刻度
rootObj["vmin"] = m_vmin;//左刻度
rootObj["m_flStep"] = m_flStep;//深度间隔
rootObj["m_nOffset"] = m_nOffset;//角度偏移
//单位
rootObj["Unit"] = m_strUnit;
return rootObj;
}
else if (m_strLineName == "XIEFANGWEI.LINE")
{
//井斜方位图
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 曲线选择
rootObj["m_pl_azimuthCurve"] = this->m_pl_azimuthCurve; // 方位曲线
rootObj["m_pl_deviCurve"] = this->m_pl_deviCurve; // 井斜曲线
//蝌蚪符号
rootObj["m_nRadius"] = this->m_nRadius; // 圆半径
rootObj["m_nCircleWidth"] = this->m_nCircleWidth; // 圆线宽度
rootObj["m_nTailLen"] = this->m_nTailLen; // 尾线长度
rootObj["m_nTailWidth"] = this->m_nTailWidth; // 尾线宽度
rootObj["m_crCircle"] = this->m_crCircle.name(); // 圆线颜色
rootObj["m_crTail"] = this->m_crTail.name(); // 尾线颜色
rootObj["m_crPointFill"] = this->m_crPointFill.name(); // 圆填充色
//
rootObj["vmax"] = m_vmax;//右刻度
rootObj["vmin"] = m_vmin;//左刻度
rootObj["m_flStep"] = m_flStep;//深度间隔
//单位
rootObj["Unit"] = m_strUnit;
return rootObj;
}
} }
else if (m_strType == "JiegutextObject") else if (m_strType == "JiegutextObject")
{ {
@ -820,6 +795,105 @@ QJsonObject FormInfo::makeJson()
//item属性写入slf文件不需要此次记录 //item属性写入slf文件不需要此次记录
return rootObj; return rootObj;
} }
else if (m_strType == "ganzhuangtuObject")
{
//杆状图
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 曲线选择
rootObj["m_pl_azimuthCurve"] = this->m_pl_azimuthCurve; // 方位曲线
rootObj["m_pl_inclinationCurve"] = this->m_pl_inclinationCurve; // 倾角曲线
rootObj["m_pl_GradCurve"] = this->m_pl_GradCurve; // 可信度曲线
//杆
rootObj["m_nTailLen"] = this->m_nTailLen; // 尾线长度
rootObj["m_nTailWidth"] = this->m_nTailWidth; // 尾线宽度
rootObj["m_crTail"] = this->m_crTail.name(); // 尾线颜色
// 显示控制
rootObj["m_pl_minInclination"] = this->m_pl_minInclination; // 最小倾角
rootObj["m_pl_maxInclination"] = this->m_pl_maxInclination; // 最大倾角
rootObj["m_flGrad1"] = this->m_flGrad1; // 可信度1
rootObj["m_flGrad2"] = this->m_flGrad2; // 可信度2
//单位
rootObj["Unit"] = m_strUnit;
rootObj["m_flStep"] = m_flStep;//深度间隔
return rootObj;
}
else if (m_strType == "JyktObject")
{
//井眼垮塌矢量图
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 曲线选择
rootObj["m_pl_azimuthCurve"] = this->m_pl_azimuthCurve; // 方位曲线
rootObj["m_pl_deltaCurve"] = this->m_pl_deltaCurve; // 井径差曲线
//蝌蚪符号
rootObj["m_nRadius"] = this->m_nRadius; // 圆半径
rootObj["m_nCircleWidth"] = this->m_nCircleWidth; // 圆线宽度
rootObj["m_nTailLen"] = this->m_nTailLen; // 尾线长度
rootObj["m_nTailWidth"] = this->m_nTailWidth; // 尾线宽度
rootObj["m_crCircle"] = this->m_crCircle.name(); // 圆线颜色
rootObj["m_crTail"] = this->m_crTail.name(); // 尾线颜色
rootObj["m_crPointFill"] = this->m_crPointFill.name(); // 圆填充色
//
rootObj["vmax"] = m_vmax;//右刻度
rootObj["vmin"] = m_vmin;//左刻度
rootObj["m_flStep"] = m_flStep;//深度间隔
rootObj["m_nOffset"] = m_nOffset;//角度偏移
//单位
rootObj["Unit"] = m_strUnit;
return rootObj;
}
else if (m_strType == "DenvObject")
{
//井斜方位图
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 曲线选择
rootObj["m_pl_azimuthCurve"] = this->m_pl_azimuthCurve; // 方位曲线
rootObj["m_pl_deviCurve"] = this->m_pl_deviCurve; // 井斜曲线
//蝌蚪符号
rootObj["m_nRadius"] = this->m_nRadius; // 圆半径
rootObj["m_nCircleWidth"] = this->m_nCircleWidth; // 圆线宽度
rootObj["m_nTailLen"] = this->m_nTailLen; // 尾线长度
rootObj["m_nTailWidth"] = this->m_nTailWidth; // 尾线宽度
rootObj["m_crCircle"] = this->m_crCircle.name(); // 圆线颜色
rootObj["m_crTail"] = this->m_crTail.name(); // 尾线颜色
rootObj["m_crPointFill"] = this->m_crPointFill.name(); // 圆填充色
//
rootObj["vmax"] = m_vmax;//右刻度
rootObj["vmin"] = m_vmin;//左刻度
rootObj["m_flStep"] = m_flStep;//深度间隔
//单位
rootObj["Unit"] = m_strUnit;
return rootObj;
}
else if (m_strType == "MCalsObject")
{
//多臂井径
// 字体
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
rootObj["m_MinVal"] = m_MinVal;//最小井径
rootObj["m_MaxVal"] = m_MaxVal;//最大井径
rootObj["m_iStartArmPos"] = m_iStartArmPos; //左边井径序号
rootObj["m_iEndArmPos"] = m_iEndArmPos; //右边井径序号
rootObj["m_MinRatio"] = m_MinRatio; //最小外径占道比例
rootObj["m_MaxRatio"] = m_MaxRatio;//最大外径占道比例
rootObj["m_nVertGrid"] = m_nVertGrid; //纵向网格间隔
rootObj["m_nHorzGrid"] = m_nHorzGrid;//井径曲线间网格
rootObj["m_nHorzStep"] = m_nHorzStep;//旋转井径增量
rootObj["m_flVFactor"] = m_flVFactor; //井柱椭圆纵横半径比
rootObj["m_nHLineWidth"] = m_nHLineWidth;
rootObj["m_HLineColor"] = m_HLineColor.name();
rootObj["m_nVLineWidth"] = m_nVLineWidth;
rootObj["m_VLineColor"] = m_VLineColor.name();
return rootObj;
}
rootObj["Unit"] = m_strUnit; rootObj["Unit"] = m_strUnit;
rootObj["Width"] = m_dWidth; rootObj["Width"] = m_dWidth;

View File

@ -26,10 +26,16 @@ public:
~FormInfo(); ~FormInfo();
void initProperty(QJsonObject obj); void initProperty(QJsonObject obj);
//蝌蚪图
void initProperty_Kedou(QJsonObject obj); void initProperty_Kedou(QJsonObject obj);
//杆状图
void initProperty_Ganzhuang(QJsonObject obj); void initProperty_Ganzhuang(QJsonObject obj);
//井眼垮塌矢量图
void initProperty_Jykt(QJsonObject obj); void initProperty_Jykt(QJsonObject obj);
//井斜方位图
void initProperty_Denv(QJsonObject obj); void initProperty_Denv(QJsonObject obj);
//多臂井径
void initProperty_MCals(QJsonObject obj);
void paintClassify(QPainter &painter, int compassCenterY); void paintClassify(QPainter &painter, int compassCenterY);
private: private:
@ -387,6 +393,22 @@ public:
//井斜方位图 //井斜方位图
QString m_pl_deviCurve = "DEVI"; // 井斜曲线 QString m_pl_deviCurve = "DEVI"; // 井斜曲线
//多臂井径
float m_MinVal = 30; //最小井径
float m_MaxVal = 65; //最大井径
int m_iStartArmPos = 0; //左边井径序号
int m_iEndArmPos = 20; //右边井径序号
float m_MinRatio = 0.5; //最小外径占道比例
float m_MaxRatio = 0.6; //最大外径占道比例
int m_nVertGrid = 20; //纵向网格间隔
int m_nHorzGrid = 0; //井径曲线间网格
int m_nHorzStep = 5; //旋转井径增量
float m_flVFactor = 0.8; //井柱椭圆纵横半径比
int m_nHLineWidth =1;
QColor m_HLineColor = QColor(0,0,0);
int m_nVLineWidth =1;
QColor m_VLineColor = QColor(0,0,0);
public: public:
void setLineWidth(double dWidth); void setLineWidth(double dWidth);
double getLineWidth(); double getLineWidth();

View File

@ -301,7 +301,7 @@ FormInfo* FormTrack::AddKedouAndOthers(QString strSlfName, QString strWellName,
return nullptr; return nullptr;
} }
qDebug() << "FormTrack AddKedou"; qDebug() << "FormTrack AddKedouAndOthers";
ui->tableWidget->m_strUuid = m_strUuid; ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount(); int row = ui->tableWidget->rowCount();
@ -329,7 +329,37 @@ FormInfo* FormTrack::AddKedouAndOthers(QString strSlfName, QString strWellName,
formInfo->m_strAliasName = strAliasName; formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit; formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType; formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "tableObject"; formInfo->m_strType = strType;
formInfo->setLineWidth(dWidth);
formInfo->setVMax(vmax);
formInfo->setVMin(vmin);
formInfo->setFrontColor(QColor(0,0,0));
formInfo->setBackColor(QColor(255,255,255));
//设置高度
ui->tableWidget->setRowHeight(row, 100);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
return formInfo;
}
//多臂井径
FormInfo* FormTrack::AddMCals(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QJsonObject listOtherProperty)
{
qDebug() << "FormTrack AddMCals";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->initProperty_MCals(listOtherProperty);
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = strType;
formInfo->setLineWidth(dWidth); formInfo->setLineWidth(dWidth);
formInfo->setVMax(vmax); formInfo->setVMax(vmax);
formInfo->setVMin(vmin); formInfo->setVMin(vmin);

View File

@ -46,6 +46,8 @@ public:
void Add(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QStringList listOtherProperty={}); void Add(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QStringList listOtherProperty={});
//蝌蚪图 //蝌蚪图
FormInfo* AddKedouAndOthers(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QJsonObject listOtherProperty={}); FormInfo* AddKedouAndOthers(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QJsonObject listOtherProperty={});
//多臂井径
FormInfo* AddMCals(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QJsonObject listOtherProperty={});
FormInfo* setDrawDt(QStringList listdt, QJsonObject obj); FormInfo* setDrawDt(QStringList listdt, QJsonObject obj);

View File

@ -3829,12 +3829,19 @@ void MainWindowCurve::s_NewMCals()
return; return;
} }
QStringList sret = this->getSelectWell(); int nW = 4;
if(sret.length() <= 0) QStringList sret = this->insertCol(nW);
if (sret.length() <= 0)
return; return;
QString strWellName = sret.at(0);
//直接从选中的井获取data记录slf路径
QString strSlfName = sret.at(1);
//新建井+道+曲线(首条) //新建道
NewWellAndTrack(sret.at(0), sret.at(1), "FCA2", "MCalsObject"); emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "FCA2", "MCalsObject", nW);
// //新建井+道+曲线(首条)
// NewWellAndTrack(sret.at(0), sret.at(1), "FCA2", "MCalsObject");
} }
//套管组件 //套管组件

View File

@ -27,6 +27,7 @@
#include "fracsel.h" #include "fracsel.h"
#include "formtrack.h" #include "formtrack.h"
#include "formdraw.h" #include "formdraw.h"
#include "DrawNrad.h"
//是否隐藏刻度 //是否隐藏刻度
extern int g_iShow; extern int g_iShow;
@ -12795,3 +12796,40 @@ void QMyCustomPlot::Draw_Denv()
} }
this->replot(); this->replot();
} }
//多臂井径
void QMyCustomPlot::Draw_MCals()
{
//this->clearGraphs();
this->clearItems();
//
FormInfo* pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
if (pInfo == NULL)
{
return;
}
//多臂井径
QString strWaveName = "FCA2";
CDrawNrad *drawNrad = new CDrawNrad(this);
//属性
drawNrad->m_LeftVal = pInfo->m_MinVal;//最小井径
drawNrad->m_RightVal = pInfo->m_MaxVal;//最大井径
drawNrad->m_iStartArmPos = pInfo->m_iStartArmPos;//左边井径序号
drawNrad->m_iEndArmPos = pInfo->m_iEndArmPos;//右边井径序号
drawNrad->m_flWjMinFactor = pInfo->m_MinRatio; //最小外径占道比例
drawNrad->m_flWjMaxFactor = pInfo->m_MaxRatio;//最大外径占道比例
drawNrad->m_nVertGrid = pInfo->m_nVertGrid; //纵向网格间隔
drawNrad->m_nHorzGrid = pInfo->m_nHorzGrid;//井径曲线间网格
drawNrad->m_nHorzStep = pInfo->m_nHorzStep;//旋转井径增量
drawNrad->m_flVFactor = pInfo->m_flVFactor; //井柱椭圆纵横半径比
drawNrad->m_nHorzLineWidth = pInfo->m_nHLineWidth;
drawNrad->m_crHorzLine = pInfo->m_HLineColor;
drawNrad->m_nVertLineWidth = pInfo->m_nVLineWidth;
drawNrad->m_crVertLine = pInfo->m_VLineColor;
drawNrad->ReadData(m_strSlfName, strWaveName);
drawNrad->DrawNrad(m_strSlfName, strWaveName);
this->replot();
}

View File

@ -777,6 +777,9 @@ public:
CPickFrac *m_cPickFrac; CPickFrac *m_cPickFrac;
//多臂井径
void Draw_MCals();
private: private:
}; };