This commit is contained in:
DESKTOP-450PEFP\mainc 2026-04-23 12:00:07 +08:00
commit fdac657690
15 changed files with 1698 additions and 642 deletions

View File

@ -272,6 +272,9 @@ signals:
//改变井眼垮塌矢量图属性
void sig_changeJyktProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//改变井斜方位图属性
void sig_changeDenvProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//
//void sig_addImageToPlot(QMyCustomPlot* customPlot, double left_Low, double right_Hight, QString imagePath);

File diff suppressed because it is too large Load Diff

View File

@ -2,75 +2,194 @@
#define DrawFrac_H
#include <QObject>
#include "qmycustomplot.h"
#include <QColor>
#include <QList>
#include <QVector>
#include <QPointer>
#include <QPointF>
//裂缝
//const int iFracType=15;
class QMyCustomPlot;
class QCustomPlot;
class QCPItemCurve;
class QCPItemTracer;
class QCPItemLine;
class QCPCurve;
class QCPItemText;
typedef struct tagPOINTF
{
float x;
float y;
} POINTF;
static const int iFracType2 = 15;
typedef struct
{
int iCode; //代码
QString csName;// 名称
int iType; //形状代码(1:正弦曲线 2:连线 3:封闭区域)
QColor crColor; //颜色(红 绿 蓝)
int nLineWidth;//线宽度
int bDraw; // 是否显示
}FRAC_DEF_Crack;
typedef struct tagPOINTF { float x; float y; } POINTF;
typedef struct
{
float DEP;
float AorX; //XRMI_DYN_DipHeight
float XETAorH;//XRMI_DYN_Azimuth
float W;
float DIPorS;//XRMI_DYN_Dip_APP
float DIR;//XRMI_DYN_Azimuth
float TDIP; //真倾角 Dip_TRU
float TDIR; //真倾向 Azimuth
float ID;//裂缝代码,type
float NUM;
//float X[16],Y[16];//X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9;
POINTF point[16];
}FRAC_TABLE_Crack;
typedef struct {
int iCode;
QString csName;
int iType; // 1:正弦曲线 2:连线 3:封闭区域 4:直线
QColor crColor;
int nLineWidth;
int bDraw;
} FRAC_DEF_Crack;
typedef struct
{
typedef struct {
float DEP;
float AorX;
float XETAorH;
float W;
float DIPorS;
float DIR;
float ID;//裂缝代码
}FRAC_TABLE_OLD_Crack;
float TDIP;
float TDIR;
float ID;
float NUM;
POINTF point[16];
} FRAC_TABLE_Crack;
typedef struct {
float DEP;
float AorX;
float XETAorH;
float W;
float DIPorS;
float DIR;
float ID;
} FRAC_TABLE_OLD_Crack;
class DraggableCrackItem;
class CPickFrac : public QObject
{
Q_OBJECT
class CPickFrac:public QObject
{
Q_OBJECT
public:
CPickFrac(QMyCustomPlot *widget, QString strSlfName, QString csCurve, int iMyWidth);
virtual ~CPickFrac(void);
virtual ~CPickFrac();
void setDraggingEnabled(bool enabled);
QList<DraggableCrackItem*> getAllItems() const { return m_items; }
bool saveToFile();
bool createNewCrack(int iType, double depth);
public:
QString m_Name;
QString m_strDevi, m_strHazi;
QList <FRAC_DEF_Crack> m_FracDef;
bool m_bTypeDraw[iFracType];
QMyCustomPlot *m_myCustomPlot;
int m_iMyWidth=0;
public:
int m_iMyWidth = 0;
QList<FRAC_DEF_Crack> m_FracDef;
bool m_bTypeDraw[iFracType2];
void ReadFracDef();
void ReadData(QString strSlfName, QString csCurve);
void drawOne(FRAC_TABLE_Crack frac, QString cs, int iType, int nLineWidth, QColor crColor);
void drawOne(FRAC_TABLE_Crack frac, int iType, int nLineWidth, QColor crColor);
public slots:
protected:
bool eventFilter(QObject *watched, QEvent *event) override;
private slots:
void onRemoveCrackItem(DraggableCrackItem *item);
private:
QList<DraggableCrackItem*> m_items;
bool m_draggingEnabled = true;
QString m_currentSlfName;
QString m_currentTableName;
};
// ========== 可拖拽裂缝项 ==========
class DraggableCrackItem : public QObject
{
Q_OBJECT
public:
enum Type { TypeA_Sine, TypeB_Polyline, TypeC_Closed };
DraggableCrackItem(QCustomPlot *plot, Type type, const QColor &color, int lineWidth);
~DraggableCrackItem();
void setSineData(double depth, double amplitude, double phase, double xScale, double width);
void setPolylineData(const QVector<QPointF> &points, double scaleX = 1.0, double flipY = -1.0);
void setClosedData(const QVector<QPointF> &points, double scaleX = 1.0, double flipY = -1.0);
void setVisible(bool visible);
void deactivate();
bool eventFilter(QObject *obj, QEvent *event) override;
// 保存接口
Type getType() const { return m_type; }
void setCrackCode(int code) { m_crackCode = code; }
int getCrackCode() const { return m_crackCode; }
double getDepthForSort() const;
void getCurrentFracData(FRAC_TABLE_Crack &data) const;
// 编辑模式
void startEditing();
void finishEditing();
// 控制所有拖拽点的可见性
void setDragPointsVisible(bool visible);
// 获取当前激活的item静态
static DraggableCrackItem* getActiveItem() { return s_activeItem; }
void cleanupFromPlot(); // 立即从画布移除所有图形项
signals:
void dataChanged();
void removeMe(DraggableCrackItem* item);
private:
QCustomPlot *m_plot;
Type m_type;
QColor m_color;
int m_lineWidth;
int m_crackCode = 0;
double m_originalXETAorH = 0.0;
double m_originalAorX = 0.0;
// 模式A
QCPItemCurve *m_curve = nullptr;
QCPItemTracer *m_tracer1 = nullptr, *m_tracer2 = nullptr;
double m_orig_x1, m_orig_x2, m_orig_y1, m_orig_y2;
double m_orig_startX, m_orig_endX, m_orig_startDirX, m_orig_startDirY, m_orig_endDirX, m_orig_endDirY;
double m_offsetXA = 0.0, m_offsetYA = 0.0;
double m_depth = 0.0, m_endX = 0.0;
enum DragStateA { IdleA, DraggingPoint1, DraggingPoint2, DraggingCurveA } m_dragStateA = IdleA;
QPointF m_lastDragPixelA;
// 模式B
struct LineItem {
QCPItemLine *line;
QCPItemTracer *startTracer, *endTracer;
QPointF startOrig, endOrig;
};
QList<LineItem> m_lines;
double m_offsetXB = 0.0, m_offsetYB = 0.0;
bool m_isAddingLine = false;
QPointF m_tempPoint;
enum DragStateB { IdleB, DraggingStartPoint, DraggingEndPoint, DraggingLineOverall } m_dragStateB = IdleB;
QPointF m_bDragStart;
int m_draggedLineIndex = -1;
// 模式C
QCPCurve *m_curveC = nullptr;
QVector<QPointF> m_pointsC;
QVector<QCPItemText*> m_labelsC;
double m_offsetXC = 0.0, m_offsetYC = 0.0;
bool m_cFinished = false, m_cDragging = false, m_draggingPoint = false;
int m_draggedPointIndex = -1;
QPointF m_cDragStart;
// 编辑模式标志
bool m_editingMode = false;
// 删除安全标志
bool m_pendingDelete = false;
// 辅助函数
void updateCurveFromTargets();
void updateCurvePosition();
void updateTracers();
void setTracerHighlight(QCPItemTracer *tracer, bool highlight);
void updateLineEndpoints(LineItem &item);
void updateLinesPosition();
void clearLines();
void updatePolylineC(bool closed);
void clearPolylineC();
static QPointer<DraggableCrackItem> s_activeItem;
};
#endif

View File

@ -2385,6 +2385,13 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//
changedJyktProperty(m_propertyData[pProperty], variant);
}
else if (m_strCurrentProperty == Denv_Property)//井斜方位图
{
//先处理通用属性
CommonPropertyChanged(pProperty, variant);
//
changedDenvProperty(m_propertyData[pProperty], variant);
}
}
void PropertyWidget::SlotPropertyChanged(QtProperty *property, const int &val, bool islinestyle)
@ -3220,6 +3227,11 @@ void PropertyWidget::initProperty(FormInfo *formInfo)
//井眼垮塌矢量图
this->initJyktProperty(formInfo);
}
else if (m_strLineName == "XIEFANGWEI.LINE")
{
//井斜方位图
this->initDenvProperty(formInfo);
}
else
{
this->initTableProperty(formInfo);
@ -5582,12 +5594,12 @@ void PropertyWidget::initJyktProperty(FormInfo *formInfo)
_CreateVariantPropertyItem("崩落设置", "显示单位", formInfo->m_strUnit, QVariant::String);
//
_CreateVariantPropertyItem("蝌蚪设置", "圆半径", formInfo->m_nRadius, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪设置", "圆填充色", formInfo->m_crPointFill, QVariant::Color);
_CreateVariantPropertyItem("蝌蚪设置", "圆线宽度", formInfo->m_nCircleWidth, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪设置", "圆线颜色", formInfo->m_crCircle, QVariant::Color);
_CreateVariantPropertyItem("蝌蚪设置", "尾线长度", formInfo->m_nTailLen, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪设置", "尾线宽度", formInfo->m_nTailWidth, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪设置", "圆线颜色", formInfo->m_crCircle, QVariant::Color);
_CreateVariantPropertyItem("蝌蚪设置", "尾线颜色", formInfo->m_crTail, QVariant::Color);
_CreateVariantPropertyItem("蝌蚪设置", "圆填充色", formInfo->m_crPointFill, QVariant::Color);
m_strCurrentProperty = Jykt_Property;
}
@ -5676,3 +5688,109 @@ void PropertyWidget::changedJyktProperty(QString strProperty, QVariant varVal)
emit CallManage::getInstance()->sig_changeJyktProperty(m_formInfo->m_strUuid, m_formInfo->m_strSlfName, m_formInfo->m_strWellName, m_formInfo->m_strTrackName, m_formInfo->m_strLineName);
}
}
void PropertyWidget::initDenvProperty(FormInfo *formInfo)
{
_CreateVariantPropertyItem("曲线图名", "显示名称", formInfo->m_strAliasName, QVariant::String);
_CreateVariantPropertyItem("井文件名", "井文件名称", m_strSlfName, QVariant::String);
//
_CreateVariantPropertyItem("曲线选择", "方位曲线", formInfo->m_pl_azimuthCurve, QVariant::String);
_CreateVariantPropertyItem("曲线选择", "井斜曲线", formInfo->m_pl_deviCurve, QVariant::String);
//
_CreateVariantPropertyItem("曲线单位", "显示单位", formInfo->m_strUnit, QVariant::String);
//
_CreateVariantPropertyItem("蝌蚪符号", "左刻度", formInfo->m_vmin, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "右刻度", formInfo->m_vmax, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "深度间隔", formInfo->m_flStep, QVariant::Double);
//
_CreateVariantPropertyItem("蝌蚪符号", "圆半径", formInfo->m_nRadius, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "圆填充色", formInfo->m_crPointFill, QVariant::Color);
_CreateVariantPropertyItem("蝌蚪符号", "圆线宽度", formInfo->m_nCircleWidth, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "圆线颜色", formInfo->m_crCircle, QVariant::Color);
_CreateVariantPropertyItem("蝌蚪符号", "尾线长度", formInfo->m_nTailLen, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "尾线宽度", formInfo->m_nTailWidth, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "尾线颜色", formInfo->m_crTail, QVariant::Color);
m_strCurrentProperty = Denv_Property;
}
void PropertyWidget::changedDenvProperty(QString strProperty, QVariant varVal)
{
bool flag = false;
// 字体
if ("方位曲线" == strProperty)
{
this->m_formInfo->m_pl_azimuthCurve = varVal.toString();
flag = true;
}
else if ("井斜曲线" == strProperty)
{
this->m_formInfo->m_pl_deviCurve = varVal.toString();
flag = true;
}
// 蝌蚪符号
else if ("圆半径" == strProperty)
{
this->m_formInfo->m_nRadius = varVal.toDouble();
flag = true;
}
else if ("圆线宽度" == strProperty)
{
this->m_formInfo->m_nCircleWidth = varVal.toDouble();
flag = true;
}
else if ("尾线长度" == strProperty)
{
this->m_formInfo->m_nTailLen = varVal.toDouble();
flag = true;
}
else if ("尾线宽度" == strProperty)
{
this->m_formInfo->m_nTailWidth = varVal.toDouble();
flag = true;
}
else if ("圆线颜色" == strProperty)
{
this->m_formInfo->m_crCircle = varVal.value<QColor>();
flag = true;
}
else if ("尾线颜色" == strProperty)
{
this->m_formInfo->m_crTail = varVal.value<QColor>();
flag = true;
}
else if ("圆填充色" == strProperty)
{
this->m_formInfo->m_crPointFill = varVal.value<QColor>();
flag = true;
}
//
else if ("左刻度" == strProperty)
{
this->m_formInfo->m_vmin = varVal.toDouble();
this->m_formInfo->repaint();
flag = true;
}
else if ("右刻度" == strProperty)
{
this->m_formInfo->m_vmax = varVal.toDouble();
this->m_formInfo->repaint();
flag = true;
}
else if ("深度间隔" == strProperty)
{
this->m_formInfo->m_flStep = varVal.toDouble();
flag = true;
}
else if ("显示单位" == strProperty)
{
this->m_formInfo->m_strUnit = varVal.toString();
this->m_formInfo->repaint();
}
if(flag)
{
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);
}
}

View File

@ -80,6 +80,7 @@
#define Kedou_Property "Kedou_Property" //蝌蚪图
#define Ganzhuang_Property "Ganzhuang_Property" //杆状图
#define Jykt_Property "Jykt_Property" //井眼垮塌矢量图
#define Denv_Property "Denv_Property" //井斜方位图
#pragma execution_character_set("utf-8")
@ -272,6 +273,10 @@ public:
void initJyktProperty(FormInfo *formInfo);
void changedJyktProperty(QString strProName, QVariant val);
//井斜方位图
void initDenvProperty(FormInfo *formInfo);
void changedDenvProperty(QString strProName, QVariant val);
public slots:
void SlotPropertyChanged(QtProperty *property, const QVariant &variant);
void SlotPropertyChanged(QtProperty *property, const int &val, bool islinestyle);

View File

@ -536,10 +536,10 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
// 岩心照片
displayImageData(lineObjInfo);
}
else if (strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE")
else if (strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE" || strLineName == "XIEFANGWEI.LINE")
{
// 蝌蚪图、杆状图
DisplayKedou_One(lineObjInfo);
// 蝌蚪图、杆状图、井眼垮塌矢量图、井斜方位图
DisplayKedouAndOthers_One(lineObjInfo);
}
}
else if (strType == "JiegutextObject")
@ -1127,7 +1127,7 @@ void FormDraw::DisplayTable_One(QJsonObject lineObjInfo)
}
//蝌蚪图
void FormDraw::DisplayKedou_One(QJsonObject lineObjInfo)
void FormDraw::DisplayKedouAndOthers_One(QJsonObject lineObjInfo)
{
QString strSlfName = "";
QString strWellName = "";
@ -1194,8 +1194,8 @@ void FormDraw::DisplayKedou_One(QJsonObject lineObjInfo)
if (strLineName != "")
{
//蝌蚪图、杆状、井眼垮塌矢量图
this->addKedou(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, lineObjInfo);
//蝌蚪图、杆状、井眼垮塌矢量图、井斜方位图
this->addKedouAndOthers(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, lineObjInfo);
}
}
@ -3018,10 +3018,10 @@ QMyCustomPlot* FormDraw::addTableLine(QString strUuid, QString strSlfName, QStri
return curv;
}
QMyCustomPlot* FormDraw::addKedou(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QJsonObject listOtherProperty)
QMyCustomPlot* FormDraw::addKedouAndOthers(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QJsonObject listOtherProperty)
{
//蝌蚪、杆状、井眼垮塌矢量图
if (strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE")
//蝌蚪、杆状、井眼垮塌矢量图、井斜方位图
if (strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE" || strLineName == "XIEFANGWEI.LINE")
{
}
else
@ -3100,7 +3100,22 @@ QMyCustomPlot* FormDraw::addKedou(QString strUuid, QString strSlfName, QString s
//
initJykt(curv, strSlfName, strLineName, strAliasName, newlineColor, listOtherProperty);
}
else if(strLineName == "XIEFANGWEI.LINE")
{
QString strAliasName = "井斜方位图";
QColor newlineColor=QColor(0,0,0);
// 显示名称
// 显示名称
if (listOtherProperty.contains("AliasName"))
{
QJsonValue value = listOtherProperty.value("AliasName");
if (value.isString()) {
strAliasName = value.toString();
}
}
//
initDenv(curv, strSlfName, strLineName, strAliasName, newlineColor, listOtherProperty);
}
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
//
m_listLineName.push_back(strLineName);
@ -3759,7 +3774,7 @@ void FormDraw::s_addGanZhuangTu(QString strUuid, QString strSlfName, QString str
m_listLineName.push_back(strLineName);
}
//井眼垮塌矢量图
void FormDraw::s_addJykt(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW)
{
//井名&道名不一致
@ -3785,8 +3800,8 @@ void FormDraw::s_addJykt(QString strUuid, QString strSlfName, QString strWellNam
curv->initGeometry(m_strUuid, m_iScale, g_iOneWidth);
curv->show();
initJykt(curv, strSlfName, strLineName);
//井眼垮塌矢量图
initJykt(curv, strSlfName, strLineName);
//
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
@ -3795,6 +3810,7 @@ void FormDraw::s_addJykt(QString strUuid, QString strSlfName, QString strWellNam
m_listLineName.push_back(strLineName);
}
//井斜方位图
void FormDraw::s_addDenv(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW)
{
//井名&道名不一致
@ -3818,21 +3834,11 @@ void FormDraw::s_addDenv(QString strUuid, QString strSlfName, QString strWellNam
curv->m_formTrack = m_formTrack;
curv->setDepthY(m_iY1, m_iY2);
curv->initGeometry(m_strUuid, m_iScale, g_iOneWidth);
curv->show();
//井斜方位图
DrawDenv(curv, strSlfName);
initDenv(curv, strSlfName, strLineName);
//道-对象
QString strAliasName = "井斜方位图";
QString strUnit = "(°)";
QColor newlineColor=QColor(0,0,0);
double width=2;
QString strScaleType = "";
//道-对象
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strLineName, strAliasName, strUnit, newlineColor, width, m_RightVal, m_LeftVal, strScaleType, "DenvObject");
//
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
//
@ -3995,6 +4001,7 @@ void FormDraw::s_addCrack(QString strUuid, QString strSlfName, QString strWellNa
//注意不对调XY轴
curv->m_bX2Y = false;
CPickFrac *pickFrac = new CPickFrac(curv, strSlfName, strWaveName, iMyWidth);
curv->m_cPickFrac = pickFrac;
//
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
@ -5110,7 +5117,7 @@ void FormDraw::initKedou(QMyCustomPlot *widget, QString strSlfName, QString strL
double width=2;
QString strScaleType = "";
//道-对象
FormInfo* pInfo = m_formTrack->AddKedou(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, "tableObject", listOtherProperty);
//蝌蚪图
widget->Draw_Kedou();
@ -5163,13 +5170,12 @@ void FormDraw::initGanzhuang(QMyCustomPlot *widget, QString strSlfName, QString
strUnit = listOtherProperty["Unit"].toString(); // 单位
}
//道-对象
FormInfo* pInfo = m_formTrack->AddGanzhuang(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, "tableObject", listOtherProperty);
//杆状图
widget->Draw_Ganzhuang();
}
//井眼垮塌矢量图
void FormDraw::initJykt(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName, QColor newlineColor, QJsonObject listOtherProperty)
{
@ -5222,12 +5228,70 @@ void FormDraw::initJykt(QMyCustomPlot *widget, QString strSlfName, QString strLi
strUnit = listOtherProperty["Unit"].toString(); // 单位
}
//道-对象
FormInfo* pInfo = m_formTrack->AddJykt(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, "tableObject", listOtherProperty);
//杆状图
widget->Draw_Jykt();
}
//井斜方位图
void FormDraw::initDenv(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;
//-------------------
m_LeftVal = 0;
m_RightVal = 90;
if(!listOtherProperty.isEmpty())
{
m_LeftVal = listOtherProperty["vmin"].toDouble();
m_RightVal = listOtherProperty["vmax"].toDouble();
}
float vmax = m_RightVal;
float vmin = m_LeftVal;
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 = "(°)";
double width=2;
QString strScaleType = "";
if(!listOtherProperty.isEmpty())
{
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);
//杆状图
widget->Draw_Denv();
}
void FormDraw::initWords(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName, QColor newlineColor, QStringList listOtherProperty)
{
int iMyWidth = widget->axisRect(0)->width();
@ -6602,109 +6666,6 @@ void FormDraw::CalcDipWidth(int nColumn,float *flWidth,float factor,int x1,int x
}
}
void FormDraw::DrawDenv(QMyCustomPlot *widget, QString strSlfName)
{
//初始化数据
m_csCurveAZIM=("AZIM");
m_csCurveDEVI=("DEVI");
m_nCircleLineWidth = 2 ;
m_nTailWidth=2;
m_TailColor=qRgb(255,0,0);
m_crPointFillDenv=qRgb(0,0,0);
m_crCirCleColor = qRgb(0,0,255);
m_nRadius = 4;
m_nTailLen=8;
m_flStep=1;
//读取曲线数据
this->ReadData(strSlfName, m_csCurveAZIM, 0, &m_Curve);
this->ReadData(strSlfName, m_csCurveDEVI, 1, &m_Curve2);
//-------------------
m_LeftVal = 0;
m_RightVal = 90;
float vmax = m_RightVal;
float vmin = m_LeftVal;
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);
//
QPen pPen(m_TailColor,m_nTailWidth);
QPen pPen2(m_crCirCleColor,m_nCircleLineWidth);
QBrush cBrush(m_crPointFillDenv);
float tempf,flVal;
int i,j,nPointNum=0,tempi;
QRectF rt,rtRect;
float x,y;
float dgtord,dr;
if ( m_Value==0 || m_Value2==0 )
return ;
// 计算显示深度
tempf = (m_EDep - m_SDep)/m_Rlev + 0.5;
nPointNum = tempf+1;
if ( nPointNum <= 1 ) return ;
dgtord=3.14159265/180.;
QBrush brush2(QColor(qRgb(0,0,0)));
{
for (float dep=m_SDep; dep<m_EDep; dep+=m_flStep)
{
i=(dep-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
if(i<0) continue;
flVal = GetData(m_Curve2.RepCode,(char *)&m_Value2[i*m_Curve2.CodeLen]);
x = flVal;
y = -dep;//起始深度
QCPItemEllipse *qcpItemEllipse = new QCPItemEllipse(widget);
qcpItemEllipse->setPen(pPen2);
qcpItemEllipse->m_bCustom = true;
qcpItemEllipse->m_nRadius = m_nRadius;
qcpItemEllipse->topLeft->setCoords(y, x);//圆心位置
qcpItemEllipse->bottomRight->setCoords(y, x);//圆心位置
qcpItemEllipse->setBrush(cBrush);//填充圆的颜色
//
flVal = GetData(m_Curve.RepCode,(char *)&m_Value[i*m_Curve.CodeLen]);
dr=flVal*dgtord;
QCPItemLine *qcpItemLine = new QCPItemLine(widget);
qcpItemLine->start->setCoords(y, x);//圆心位置
qcpItemLine->end->setCoords(y, x);//圆心位置
qcpItemLine->setPen(pPen);
qcpItemLine->m_bCustom = true;
qcpItemLine->m_nTailLen = m_nTailLen; //尾长
qcpItemLine->m_nRadius = m_nRadius; //半径
qcpItemLine->m_dr = dr;
}
}
}
//read config file: FRAC.CFG,save info into m_FracDef
void FormDraw::ReadFracDef()

View File

@ -47,7 +47,7 @@ public:
//表格:固井结论等
void DisplayTable_One(QJsonObject lineObjInfo);
//蝌蚪图
void DisplayKedou_One(QJsonObject lineObjInfo);
void DisplayKedouAndOthers_One(QJsonObject lineObjInfo);
//气测/FMT/射孔/文本
void DisplayJiegutext_One(QJsonObject lineObjInfo);
@ -91,7 +91,7 @@ protected:
QMyCustomPlot* addTableLine(QString strUuid, QString strSlfName, QString strWellName,
QString strTrackName, QString strLineName, QStringList listOtherProperty={});
QMyCustomPlot* addKedou(QString strUuid, QString strSlfName, QString strWellName,
QMyCustomPlot* addKedouAndOthers(QString strUuid, QString strSlfName, QString strWellName,
QString strTrackName, QString strLineName, QJsonObject listOtherProperty={});
public slots:
@ -154,6 +154,8 @@ public:
void initGanzhuang(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "杆状图", QColor newlineColor=QColor(0,0,0), QJsonObject listOtherProperty={});
//井眼垮塌矢量图
void initJykt(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 ReadFracDef();
void ReadData(QString strSlfName, QString strLineName);//表格
@ -161,7 +163,6 @@ public:
void CalcDipWidth(int nColumn,float *flWidth,float factor,int x1,int x2,float flHoriRatio);
void Refurbish();
void DrawDenv(QMyCustomPlot *widget, QString strSlfName);
int m_PointNum;
//

View File

@ -330,6 +330,65 @@ void FormInfo::initProperty_Jykt(QJsonObject obj)
}
}
void FormInfo::initProperty_Denv(QJsonObject obj)
{
if(obj.isEmpty())
{
// 字体
// 曲线选择
this->m_pl_azimuthCurve = "AZIM"; // 方位曲线
this->m_pl_deviCurve = "DEVI"; // 井斜曲线
//蝌蚪符号
this->m_nRadius = 6; // 圆半径
this->m_nCircleWidth = 1; // 圆线宽度
this->m_nTailLen = 10; // 尾线长度
this->m_nTailWidth = 2; // 尾线宽度
// 显示控制
this->m_vmin = 0; // 左刻度
this->m_vmax = 90; // 右刻度
this->m_flStep = 1; // 深度间隔
//
this->m_strUnit = "(°)";
}
else
{
QString strType = obj.value("Type").toString();
if ("tableObject" == 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());
// 曲线选择
this->m_pl_azimuthCurve = obj["m_pl_azimuthCurve"].toString(); // 方位曲线
this->m_pl_deviCurve = obj["m_pl_deviCurve"].toString(); // 井斜曲线
//蝌蚪符号
this->m_nRadius = obj["m_nRadius"].toDouble(); // 圆半径
this->m_nCircleWidth = obj["m_nCircleWidth"].toDouble();// 圆线宽度
this->m_nTailLen = obj["m_nTailLen"].toDouble(); // 尾线长度
this->m_nTailWidth = obj["m_nTailWidth"].toDouble(); // 尾线宽度
this->m_crCircle.setNamedColor(obj["m_crCircle"].toString());// 圆线颜色
this->m_crTail.setNamedColor(obj["m_crTail"].toString());// 尾线颜色
this->m_crPointFill.setNamedColor(obj["m_crPointFill"].toString());// 圆填充色
// 刻度
this->m_vmin = obj["vmin"].toDouble(); // 左刻度
this->m_vmax = obj["vmax"].toDouble(); // 右刻度
this->m_flStep = obj["m_flStep"].toDouble(); // 深度间隔
//
this->m_strUnit = obj["Unit"].toString(); // 单位
}
}
}
void FormInfo::initProperty(QJsonObject obj)
{
m_vmin = obj.value("vmin").toDouble();
@ -697,6 +756,31 @@ QJsonObject FormInfo::makeJson()
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")
{
@ -1389,12 +1473,6 @@ void FormInfo::paintEvent(QPaintEvent* event)
}
}
if(m_strLineName=="井斜方位图")
{
painter.drawText(rect.left(), rect.top()+rect.height()/3, rect.width(), rect.height()/3, Qt::AlignCenter, m_strUnit);
painter.drawText(rect.left(), rect.top()+rect.height()*2/3, rect.width(), rect.height()/3 ,Qt::AlignCenter, QString::number(m_vmin)+" ~ "+QString::number(m_vmax));
}
//蝌蚪图、杆状图
if(m_strLineName == "FRAC_HOLE.TABLE" || m_strLineName=="GANZHUANG.LINE")
{
@ -1411,7 +1489,7 @@ void FormInfo::paintEvent(QPaintEvent* event)
}
//井眼垮塌矢量图
if(m_strLineName=="JINGYANKUATA.LINE")
if(m_strLineName=="JINGYANKUATA.LINE" || m_strLineName=="XIEFANGWEI.LINE")
{
int nbay = rect.height() - 5;

View File

@ -29,6 +29,7 @@ public:
void initProperty_Kedou(QJsonObject obj);
void initProperty_Ganzhuang(QJsonObject obj);
void initProperty_Jykt(QJsonObject obj);
void initProperty_Denv(QJsonObject obj);
void paintClassify(QPainter &painter, int compassCenterY);
private:
@ -380,8 +381,11 @@ public:
//井眼垮塌矢量图
QString m_pl_deltaCurve = "CALM"; // 井径差曲线
float m_flStep;// 增加深度间隔
float m_nOffset; // 角度偏移=0,主应力方向,=90长轴方向
float m_flStep; // 增加深度间隔
float m_nOffset; // 角度偏移=0,主应力方向,=90长轴方向
//井斜方位图
QString m_pl_deviCurve = "DEVI"; // 井斜曲线
public:
void setLineWidth(double dWidth);

View File

@ -71,17 +71,6 @@ FormTrack::FormTrack(QWidget *parent, QString strSlfName, QString strWellName, Q
// 深度
connect(this, SIGNAL(sig_AddDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
// 杆状图
connect(this, SIGNAL(sig_AddGanZhuangTu(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addGanZhuangTu(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
// 井眼垮塌矢量图
connect(this, SIGNAL(sig_AddJykt(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addJykt(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
// 井斜方位图
connect(this, SIGNAL(sig_AddDenv(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addDenv(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
//岩心图片
connect(this, SIGNAL(sig_AddYanXinImage(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
@ -265,19 +254,7 @@ void FormTrack::Add(QString strSlfName, QString strWellName, QString strTrackNam
else if(strType=="depthObject")
{
emit sig_AddDepth(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
else if(strType=="ganzhuangtuObject")
{
emit sig_AddGanZhuangTu(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
else if(strType=="JyktObject")
{
emit sig_AddJykt(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
else if(strType=="DenvObject")
{
emit sig_AddDenv(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
}
}
// else if(strType=="yanxinImageObject")
// {
// emit sig_AddYanXinImage(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
@ -312,9 +289,10 @@ void FormTrack::Add(QString strSlfName, QString strWellName, QString strTrackNam
}
}
FormInfo* FormTrack::AddKedou(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* FormTrack::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)
{
if(strLineName == "FRAC_HOLE.TABLE")
//蝌蚪图、杆状图、井眼垮塌矢量图、井斜方位图
if(strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE" || strLineName == "XIEFANGWEI.LINE")
{
}
@ -332,83 +310,22 @@ FormInfo* FormTrack::AddKedou(QString strSlfName, QString strWellName, QString s
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->initProperty_Kedou(listOtherProperty);
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "tableObject";
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::AddGanzhuang(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)
{
if(strLineName == "GANZHUANG.LINE")
if(strLineName == "FRAC_HOLE.TABLE")
{
formInfo->initProperty_Kedou(listOtherProperty);
}
else
else if(strLineName == "GANZHUANG.LINE")
{
return nullptr;
formInfo->initProperty_Ganzhuang(listOtherProperty);
}
qDebug() << "FormTrack AddGanzhuang";
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_Ganzhuang(listOtherProperty);
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "tableObject";
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::AddJykt(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)
{
if(strLineName == "JINGYANKUATA.LINE")
else if(strLineName == "JINGYANKUATA.LINE")
{
formInfo->initProperty_Jykt(listOtherProperty);
}
else
else if(strLineName == "XIEFANGWEI.LINE")
{
return nullptr;
formInfo->initProperty_Denv(listOtherProperty);
}
qDebug() << "FormTrack AddJykt";
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_Jykt(listOtherProperty);
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
@ -1029,106 +946,6 @@ void FormTrack::s_addDepth(QString strSlfName, QString strWellName, QString strT
ui->tableWidget->setCellWidget(row, 0, formInfo);
}
void FormTrack::s_addGanZhuangTu(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addGanZhuangTu";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "ganzhuangtuObject";
formInfo->m_nJg = 2;
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->setItemDelegateForRow(row, m_delegate);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
}
void FormTrack::s_addJykt(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addJykt";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "JyktObject";
formInfo->m_nJg = 2;
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->setItemDelegateForRow(row, m_delegate);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
}
void FormTrack::s_addDenv(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addDenv";
ui->tableWidget->m_strUuid = m_strUuid;
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
formInfo->m_strType = "JyktObject";
formInfo->m_nJg = 2;
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->setItemDelegateForRow(row, m_delegate);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
}
void FormTrack::s_addYanXinImage(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
{
qDebug() << "FormTrack s_addYanXinImage";

View File

@ -45,11 +45,7 @@ public:
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={});
//蝌蚪图
FormInfo* AddKedou(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* AddGanzhuang(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* AddJykt(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* setDrawDt(QStringList listdt, QJsonObject obj);
@ -85,9 +81,6 @@ public slots:
void s_delTableLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
// 深度
void s_addDepth(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_addGanZhuangTu(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_addJykt(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_addDenv(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_addYanXinImage(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_addDrawImage(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_addSantuyibiao(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);

View File

@ -3724,55 +3724,16 @@ void MainWindowCurve::s_Jykt()
//井斜方位图
void MainWindowCurve::s_Denv()
{
// QString strSlfName = "";
// QString strLeft = m_leftWidgets->getLeftTreeString();
// if(strLeft.length() > 0)
// {
// QStringList list = strLeft.split("#@@#");//QString字符串分割函数
// if (list.size() > 3)
// {
// strSlfName = list[0];
// }
// }
if(ui->tableWidget_2->columnCount()==0)
{
return;
}
int column = ui->tableWidget_2->currentColumn();//列编号从0开始
if(column<0)
{
//当前没有选中井
QMessageBox::warning(this, "提示", "当前没有选中井", "确定");
return;
}
if(column%2==0)
{
}
else
{
//空白列
QMessageBox::warning(this, "提示", "当前没有选中井", "确定");
return;
}
QStringList sret = this->getSelectWell_New();
if (sret.length() <= 0)
return;
QString strWellName = sret.at(0);
//直接从选中的井获取data记录slf路径
QString strSlfName = sret.at(1);
int iWidth = ui->tableWidget_2->columnWidth(column);
int nW = 4;
//设置列宽
ui->tableWidget_2->setColumnWidth(column, iWidth+nW*g_dPixelPerCm+8);
QStringList sret = this->insertCol(nW);
if (sret.length() <= 0)
return;
QString strWellName = sret.at(0);
//直接从选中的井获取data记录slf路径
QString strSlfName = sret.at(1);
//新建道
emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "井斜方位图", "DenvObject", nW);
emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "XIEFANGWEI.LINE", "DenvObject", nW);
}
//图像 成图

View File

@ -219,6 +219,8 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
connect(CallManage::getInstance(), SIGNAL(sig_changeGanzhuangProperty(QString, QString, QString, QString, QString)), this, SLOT(s_changeGanzhuangProperty(QString, QString, QString, QString, QString)));
//改变井眼垮塌矢量图属性
connect(CallManage::getInstance(), SIGNAL(sig_changeJyktProperty(QString, QString, QString, QString, QString)), this, SLOT(s_changeJyktProperty(QString, QString, QString, QString, QString)));
//改变井斜方位图属性
connect(CallManage::getInstance(), SIGNAL(sig_changeDenvProperty(QString, QString, QString, QString, QString)), this, SLOT(s_changeDenvProperty(QString, QString, QString, QString, QString)));
}
void QMyCustomPlot::initGeometry(QString strUuid, int nscale, double fW)
@ -2189,8 +2191,23 @@ void QMyCustomPlot::addCrackObject()
double depth = editDepth->text().toDouble();
QString type = cbbType->currentText();
QString showNames = "";
auto curve = new TransparentDraggableCrackObject(this, strUuid, -depth, type, showNames);
m_mapDraggable_CrackObject[strUuid] = curve;
if("高导缝" == type)
{
this->m_cPickFrac->createNewCrack(1 ,depth);
}
else if("网状缝" == type)
{
this->m_cPickFrac->createNewCrack(2 ,depth);
}
else if("孔洞" == type)
{
this->m_cPickFrac->createNewCrack(3 ,depth);
}
// auto curve = new CPickFrac(this, strUuid, -depth, type, showNames);
// m_mapDraggable_CrackObject[strUuid] = curve;
// ========= 这里就是你要的结果!=========
// qDebug() << "深度:" << depth << " 类型:" << type;
}
@ -12655,3 +12672,123 @@ void QMyCustomPlot::Draw_Jykt()
}
this->replot();
}
//改变井斜方位图属性
void QMyCustomPlot::s_changeDenvProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName)
{
if(m_strUuid == strUuid &&
m_strSlfName == strSlfName &&
m_strWellName == strWellName &&
m_strTrackName == strTrackName &&
m_strLineName == strLineName)
{
}
else
{
return;
}
//绘制井斜方位图
Draw_Denv();
}
//井斜方位图
void QMyCustomPlot::Draw_Denv()
{
//this->clearGraphs();
this->clearItems();
//
FormInfo* pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
if (pInfo == NULL)
{
return;
}
//-----------------------------------
this->m_Value=NULL;
this->m_Value2=NULL;
this->m_Value3=NULL;
// 曲线选择
this->m_csCurveAZIM = pInfo->m_pl_azimuthCurve; // 方位 曲线名
this->m_csCurveDEVI = pInfo->m_pl_deviCurve; // 井斜曲线
//蝌蚪符号
this->m_nRadius = pInfo->m_nRadius; // 圆半径
this->m_nCircleWidth = pInfo->m_nCircleWidth; // 圆线宽度
this->m_nTailLen = pInfo->m_nTailLen; // 尾线长度
this->m_nTailWidth = pInfo->m_nTailWidth; // 尾线宽度
this->m_crCircle = pInfo->m_crCircle; // 圆线颜色
this->m_crTail = pInfo->m_crTail; // 尾线颜色
this->m_crPointFill=pInfo->m_crPointFill; //圆填充色
//读数据
this->ReadData(m_strSlfName, m_csCurveAZIM, 0, &m_Curve);
this->ReadData(m_strSlfName, m_csCurveDEVI, 1, &m_Curve2);
if ( m_Value==0 || m_Value2==0 )
{
this->replot();
return ;
}
//
m_flStep = pInfo->m_flStep; // 深度间隔--读数据的间隔
//
float vmax = pInfo->m_vmax;
float vmin = pInfo->m_vmin;
//this->setScaleX(vmin, vmax);
this->yAxis->setRange(vmin, vmax);
//
QPen pPenTail(m_crTail,m_nTailWidth);
QPen pPenCircle(m_crCircle,m_nCircleWidth);
QBrush cBrush(m_crPointFill);
float tempf,flVal;
int i,j,nPointNum=0,tempi;
QRectF rt,rtRect;
float x,y;
float dgtord,dr;
// 计算显示深度
tempf = (m_EDep - m_SDep)/m_Rlev + 0.5;
nPointNum = tempf+1;
if ( nPointNum <= 1 ) return ;
dgtord=3.14159265/180.;
QBrush brush2(QColor(qRgb(0,0,0)));
{
for (float dep=m_SDep; dep<m_EDep; dep+=m_flStep)
{
i=(dep-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
if(i<0) continue;
flVal = GetData(m_Curve2.RepCode,(char *)&m_Value2[i*m_Curve2.CodeLen]);
x = flVal;
y = -dep;//起始深度
QCPItemEllipse *qcpItemEllipse = new QCPItemEllipse(this);
qcpItemEllipse->setPen(pPenCircle);
qcpItemEllipse->m_bCustom = true;
qcpItemEllipse->m_nRadius = m_nRadius;
qcpItemEllipse->topLeft->setCoords(y, x);//圆心位置
qcpItemEllipse->bottomRight->setCoords(y, x);//圆心位置
qcpItemEllipse->setBrush(cBrush);//填充圆的颜色
//
flVal = GetData(m_Curve.RepCode,(char *)&m_Value[i*m_Curve.CodeLen]);
dr=flVal*dgtord;
QCPItemLine *qcpItemLine = new QCPItemLine(this);
qcpItemLine->start->setCoords(y, x);//圆心位置
qcpItemLine->end->setCoords(y, x);//圆心位置
qcpItemLine->setPen(pPenTail);
qcpItemLine->m_bCustom = true;
qcpItemLine->m_nTailLen = m_nTailLen; //尾长
qcpItemLine->m_nRadius = m_nRadius; //半径
qcpItemLine->m_dr = dr;
}
}
this->replot();
}

View File

@ -5,10 +5,12 @@
#include "LogIO.h"
#include "QCPSizeHandleManager.h"
#include "qtColorSchemeComboBox.h"
#include "PickFrac.h"
#pragma execution_character_set("utf-8")
const int iFracType=15;
const int iFracType = 15;
class CPickFrac;
//
#define SideWallCoreWidth 1.2
@ -683,6 +685,9 @@ public slots:
//改变井眼垮塌矢量图属性
void s_changeJyktProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//改变井斜方位图属性
void s_changeDenvProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
public:
//蝌蚪图重绘网格线
bool mKedou = false;
@ -743,7 +748,7 @@ public:
void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen);
//蝌蚪
//蝌蚪
double m_pl_minInclination = 0; // 最小倾角
double m_pl_maxInclination = 90; // 最大倾角
float m_flGrad1,m_flGrad2; // 可信度
@ -757,14 +762,21 @@ public:
void DrawDip_Kedou();
void DrawTabDip_Kedou();
//读取高导缝等配置
void ReadFracDef_gaodaofeng();
//杆状图
void Draw_Ganzhuang();
//
//井眼垮塌矢量图
void Draw_Jykt();
//井斜方位图
QString m_csCurveAZIM,m_csCurveDEVI; // 方位曲线/井斜曲线
void Draw_Denv();
CPickFrac *m_cPickFrac;
private:
};

View File

@ -2016,6 +2016,7 @@ void QtProjectWidgets::onOutWellLogRound()
break;
}
parenItem = wellItem->parent();
wellItem = parenItem;
}
}
}