This commit is contained in:
zhaolei 2026-04-23 11:58:02 +08:00
commit 561c4b6873
17 changed files with 2731 additions and 1014 deletions

View File

@ -265,6 +265,16 @@ signals:
//改变蝌蚪图属性
void sig_changeKedouProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//改变杆状图属性
void sig_changeGanzhuangProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//改变井眼垮塌矢量图属性
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

@ -620,7 +620,7 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
if("道名称" == m_propertyData[pProperty])
{
m_fromTop->m_strTrackName = variant.toString();
m_fromTop->setTrackName(variant.toString());
}
else if("道头字体" == m_propertyData[pProperty])
{
@ -2371,8 +2371,27 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
//
changedKedouProperty(m_propertyData[pProperty], variant);
}
else if (m_strCurrentProperty == Ganzhuang_Property)//杆状图
{
//先处理通用属性
CommonPropertyChanged(pProperty, variant);
//
changedGanzhuangProperty(m_propertyData[pProperty], variant);
}
else if (m_strCurrentProperty == Jykt_Property)//井眼垮塌矢量图
{
//先处理通用属性
CommonPropertyChanged(pProperty, variant);
//
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)
@ -2820,8 +2839,8 @@ void PropertyWidget::initTrackProperty(FormTrackTop *fromTop, int iWidth, QMyTab
_CreateVariantPropertyItem("通常", "道头字体", fromTop->m_font, QVariant::Font);
_CreateVariantPropertyItem("通常", "道头字颜色", fromTop->m_fontColor, QVariant::Color);
//
// _CreateVariantPropertyItem("网格", "水平", fromTop->m_nTrackW, QVariant::Bool);
// _CreateVariantPropertyItem("网格", "垂直", fromTop->m_nTrackW, QVariant::Bool);
_CreateVariantPropertyItem("网格", "水平", fromTop->m_nTrackW, QVariant::Bool);
_CreateVariantPropertyItem("网格", "垂直", fromTop->m_nTrackW, QVariant::Bool);
// _CreateVariantPropertyItem("网格", "道左刻度", fromTop->m_nTrackW, QVariant::Double);
// _CreateVariantPropertyItem("网格", "道右刻度", fromTop->m_nTrackW, QVariant::Double);
// _CreateVariantPropertyItem("网格", "同步修改曲线刻度", fromTop->m_nTrackW, QVariant::Double);
@ -3198,6 +3217,21 @@ void PropertyWidget::initProperty(FormInfo *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
{
this->initTableProperty(formInfo);
@ -5199,7 +5233,6 @@ void PropertyWidget::changedRoseProperty(QString strProperty, QVariant varVal)
void PropertyWidget::initKedouProperty(FormInfo *formInfo)
{
_CreateVariantPropertyItem("曲线图名", "显示名称", formInfo->m_strAliasName, QVariant::String);
_CreateVariantPropertyItem("字体", "名称", formInfo->m_curveNameFont, QVariant::Font);
_CreateVariantPropertyItem("字体", "单位", formInfo->m_strUnitFont, QVariant::Font);
@ -5215,7 +5248,7 @@ void PropertyWidget::initKedouProperty(FormInfo *formInfo)
_CreateVariantPropertyItem("曲线选择", "方位曲线", formInfo->m_pl_azimuthCurve, QVariant::String);
_CreateVariantPropertyItem("曲线选择", "倾角曲线", formInfo->m_pl_inclinationCurve, QVariant::String);
_CreateVariantPropertyItem("曲线选择", "可信度曲线", formInfo->m_pl_GradCurve, QVariant::String);
//
//
_CreateVariantPropertyItem("蝌蚪符号", "圆半径", formInfo->m_nRadius, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "圆线宽度", formInfo->m_nCircleWidth, QVariant::Double);
_CreateVariantPropertyItem("蝌蚪符号", "尾线长度", formInfo->m_nTailLen, QVariant::Double);
@ -5247,8 +5280,6 @@ void PropertyWidget::changedKedouProperty(QString strProperty, QVariant varVal)
if ("名称" == strProperty)
{
QFont newFont = varVal.value<QFont>();
// this->m_formInfo->m_strAliasNameFont = newFont;
// this->m_formInfo->repaint();
m_formInfo->m_curveNameFont = newFont;
m_formInfo->update();
}
@ -5319,11 +5350,13 @@ void PropertyWidget::changedKedouProperty(QString strProperty, QVariant varVal)
else if ("最小倾角" == strProperty)
{
this->m_formInfo->m_pl_minInclination = varVal.toDouble();
this->m_formInfo->repaint();
flag = true;
}
else if ("最大倾角" == strProperty)
{
this->m_formInfo->m_pl_maxInclination = varVal.toDouble();
this->m_formInfo->repaint();
flag = true;
}
else if ("可信度1" == strProperty)
@ -5444,3 +5477,320 @@ void PropertyWidget::changedKedouProperty(QString strProperty, QVariant varVal)
emit CallManage::getInstance()->sig_changeKedouProperty(m_formInfo->m_strUuid, m_formInfo->m_strSlfName, m_formInfo->m_strWellName, m_formInfo->m_strTrackName, m_formInfo->m_strLineName);
}
}
void PropertyWidget::initGanzhuangProperty(FormInfo *formInfo)
{
_CreateVariantPropertyItem("曲线图名", "显示名称", formInfo->m_strAliasName, QVariant::String);
_CreateVariantPropertyItem("井文件名", "井文件名称", m_strSlfName, QVariant::String);
//
_CreateVariantPropertyItem("曲线选择", "方位曲线", formInfo->m_pl_azimuthCurve, QVariant::String);
_CreateVariantPropertyItem("曲线选择", "倾角曲线", formInfo->m_pl_inclinationCurve, QVariant::String);
_CreateVariantPropertyItem("曲线选择", "可信度曲线", formInfo->m_pl_GradCurve, QVariant::String);
//
_CreateVariantPropertyItem("倾角刻度", "最小倾角", formInfo->m_pl_minInclination, QVariant::Double);
_CreateVariantPropertyItem("倾角刻度", "最大倾角", formInfo->m_pl_maxInclination, QVariant::Double);
//
_CreateVariantPropertyItem("可信度", "可信度1", formInfo->m_flGrad1, QVariant::Double);
_CreateVariantPropertyItem("可信度", "可信度2", formInfo->m_flGrad2, QVariant::Double);
//
_CreateVariantPropertyItem("曲线单位", "显示单位", formInfo->m_strUnit, QVariant::String);
//
_CreateVariantPropertyItem("杆设置", "深度间隔", formInfo->m_flStep, QVariant::Double);
_CreateVariantPropertyItem("杆设置", "线长度", formInfo->m_nTailLen, QVariant::Double);
_CreateVariantPropertyItem("杆设置", "线宽度", formInfo->m_nTailWidth, QVariant::Double);
_CreateVariantPropertyItem("杆设置", "线颜色", formInfo->m_crTail, QVariant::Color);
m_strCurrentProperty = Ganzhuang_Property;
}
void PropertyWidget::changedGanzhuangProperty(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_inclinationCurve = varVal.toString();
flag = true;
}
else if ("可信度曲线" == strProperty)
{
this->m_formInfo->m_pl_GradCurve = varVal.toString();
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_crTail = varVal.value<QColor>();
flag = true;
}
//
else if ("最小倾角" == strProperty)
{
this->m_formInfo->m_pl_minInclination = varVal.toDouble();
this->m_formInfo->repaint();
flag = true;
}
else if ("最大倾角" == strProperty)
{
this->m_formInfo->m_pl_maxInclination = varVal.toDouble();
this->m_formInfo->repaint();
flag = true;
}
else if ("可信度1" == strProperty)
{
this->m_formInfo->m_flGrad1 = varVal.toDouble();
flag = true;
}
else if ("可信度2" == strProperty)
{
this->m_formInfo->m_flGrad2 = varVal.toDouble();
flag = true;
}
else if ("显示单位" == strProperty)
{
this->m_formInfo->m_strUnit = varVal.toString();
this->m_formInfo->repaint();
}
else if ("深度间隔" == strProperty)
{
this->m_formInfo->m_flStep = varVal.toDouble();
flag = true;
}
if(flag)
{
emit CallManage::getInstance()->sig_changeGanzhuangProperty(m_formInfo->m_strUuid, m_formInfo->m_strSlfName, m_formInfo->m_strWellName, m_formInfo->m_strTrackName, m_formInfo->m_strLineName);
}
}
void PropertyWidget::initJyktProperty(FormInfo *formInfo)
{
_CreateVariantPropertyItem("曲线图名", "显示名称", formInfo->m_strAliasName, QVariant::String);
_CreateVariantPropertyItem("井文件名", "井文件名称", m_strSlfName, QVariant::String);
//
_CreateVariantPropertyItem("曲线选择", "方位曲线", formInfo->m_pl_azimuthCurve, QVariant::String);
_CreateVariantPropertyItem("曲线选择", "井径差曲线", formInfo->m_pl_deltaCurve, QVariant::String);
//
_CreateVariantPropertyItem("崩落设置", "左刻度", formInfo->m_vmin, QVariant::Double);
_CreateVariantPropertyItem("崩落设置", "右刻度", formInfo->m_vmax, QVariant::Double);
_CreateVariantPropertyItem("崩落设置", "深度间隔", formInfo->m_flStep, QVariant::Double);
_CreateVariantPropertyItem("崩落设置", "角度偏移", formInfo->m_nOffset, QVariant::Double);
_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_crTail, QVariant::Color);
m_strCurrentProperty = Jykt_Property;
}
void PropertyWidget::changedJyktProperty(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_deltaCurve = 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_nOffset = varVal.toDouble();
flag = true;
}
else if ("显示单位" == strProperty)
{
this->m_formInfo->m_strUnit = varVal.toString();
this->m_formInfo->repaint();
}
if(flag)
{
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

@ -78,6 +78,9 @@
#define TubingItem_Property "TubingItem_Property" //套管组件item
#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")
@ -262,6 +265,18 @@ public:
void initKedouProperty(FormInfo *formInfo);
void changedKedouProperty(QString strProName, QVariant val);
//杆状图
void initGanzhuangProperty(FormInfo *formInfo);
void changedGanzhuangProperty(QString strProName, QVariant val);
//井眼垮塌矢量图
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

@ -44,9 +44,21 @@ CustomTabWidget::~CustomTabWidget()
void CustomTabWidget::addTab(QWidget *widget, const QString &strTab)
{
int iIndex = m_pTabBar->addTab(strTab);
m_pStackedWidget->addWidget(widget);
widget->setAcceptDrops(true);
int iIndex = -1;
for (int i = 0; i < m_pStackedWidget->count(); i++)
{
if (m_pStackedWidget->widget(i) == widget)
{
iIndex = i;
break;
}
}
if (iIndex < 0)
{
iIndex = m_pTabBar->addTab(strTab);
m_pStackedWidget->addWidget(widget);
widget->setAcceptDrops(true);
}
//
m_pTabBar->setCurrentIndex(iIndex);
}

View File

@ -59,7 +59,7 @@ FormDraw::FormDraw(QWidget *parent, QString strSlfName, QString strWellName, QSt
connect(CallManage::getInstance(), SIGNAL(sig_AddTableLine(QString, QString, QString, QString, QString)), this, SLOT(s_addTableLine(QString, QString, QString, QString, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delTableLine(QString, QString, QString, QString)), this, SLOT(s_delTableLine(QString, QString, QString, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_AddGanZhuangTu(QString, QString, QString, QString, QString, int)), this, SLOT(s_addGanZuangTu(QString, QString, QString, QString, QString,int)));
connect(CallManage::getInstance(), SIGNAL(sig_AddGanZhuangTu(QString, QString, QString, QString, QString, int)), this, SLOT(s_addGanZhuangTu(QString, QString, QString, QString, QString,int)));
//井眼垮塌矢量图
connect(CallManage::getInstance(), SIGNAL(sig_AddJykt(QString, QString, QString, QString, QString, int)), this, SLOT(s_addJykt(QString, QString, QString, QString, QString,int)));
@ -536,10 +536,10 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
// 岩心照片
displayImageData(lineObjInfo);
}
else if (strLineName == "FRAC_HOLE.TABLE")
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,15 +1194,9 @@ void FormDraw::DisplayKedou_One(QJsonObject lineObjInfo)
if (strLineName != "")
{
/*
QVariantMap variantMap;
// 数据
variantMap["AliasName"] = strAliasName;
variantMap["curveNameFont"] = curveNameFont;*/
//结论
this->addKedou(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, lineObjInfo);
}
//蝌蚪图、杆状、井眼垮塌矢量图、井斜方位图
this->addKedouAndOthers(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, lineObjInfo);
}
}
//气测/FMT/射孔/文本
@ -2908,14 +2902,6 @@ QMyCustomPlot* FormDraw::addTableLine(QString strUuid, QString strSlfName, QStri
if (strLineName == "FRAC_HOLE.TABLE")
{
//蝌蚪图
curv->mKedou = true;
//隐藏网格
curv->xAxis->grid()->setVisible(false);
curv->yAxis->grid()->setVisible(false);
//
curv->m_bRowGridVisible = false;
curv->m_bColGridVisible = false;
//
initKedou(curv, strSlfName, strLineName);
}
else if (strLineName == "WORDS_RELUST")
@ -2987,6 +2973,8 @@ QMyCustomPlot* FormDraw::addTableLine(QString strUuid, QString strSlfName, QStri
}
else if (strLineName == "GUJING1_RESULT" || strLineName == "GUJING2_RESULT" || strLineName == "GUJING3_RESULT")
{
curv->setRowGridVisible(false);
curv->setColGridVisible(false);
//固井结论
if(listOtherProperty.size()>=3)
{
@ -3030,15 +3018,11 @@ 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 == "WORDS_RELUST" || strLineName == "RESULT"
|| strLineName == "GEO_LITH" || strLineName == "SWALL_CORE"
|| strLineName == "GUJING1_RESULT" || strLineName == "GUJING2_RESULT" || strLineName == "GUJING3_RESULT"
|| strLineName == "CORE_PHYSICS" || strLineName == "IMAGE_DATA"
|| strLineName == "LAYER_DATA" )
//蝌蚪、杆状、井眼垮塌矢量图、井斜方位图
if (strLineName == "FRAC_HOLE.TABLE" || strLineName == "GANZHUANG.LINE" || strLineName == "JINGYANKUATA.LINE" || strLineName == "XIEFANGWEI.LINE")
{
}
else
{
@ -3070,14 +3054,6 @@ QMyCustomPlot* FormDraw::addKedou(QString strUuid, QString strSlfName, QString s
if (strLineName == "FRAC_HOLE.TABLE")
{
//蝌蚪图
curv->mKedou = true;
//隐藏网格
curv->xAxis->grid()->setVisible(false);
curv->yAxis->grid()->setVisible(false);
//
curv->m_bRowGridVisible = false;
curv->m_bColGridVisible = false;
QString strAliasName = "蝌蚪图";
QColor newlineColor=QColor(0,0,0);
// 显示名称
@ -3092,6 +3068,54 @@ QMyCustomPlot* FormDraw::addKedou(QString strUuid, QString strSlfName, QString s
//
initKedou(curv, strSlfName, strLineName, strAliasName, newlineColor, listOtherProperty);
}
else if(strLineName == "GANZHUANG.LINE")
{
QString strAliasName = "杆状图";
QColor newlineColor=QColor(0,0,0);
// 显示名称
// 显示名称
if (listOtherProperty.contains("AliasName"))
{
QJsonValue value = listOtherProperty.value("AliasName");
if (value.isString()) {
strAliasName = value.toString();
}
}
//
initGanzhuang(curv, strSlfName, strLineName, strAliasName, newlineColor, listOtherProperty);
}
else if(strLineName == "JINGYANKUATA.LINE")
{
QString strAliasName = "井眼崩落矢量图";
QColor newlineColor=QColor(0,0,0);
// 显示名称
// 显示名称
if (listOtherProperty.contains("AliasName"))
{
QJsonValue value = listOtherProperty.value("AliasName");
if (value.isString()) {
strAliasName = value.toString();
}
}
//
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);
@ -3716,9 +3740,8 @@ void FormDraw::s_selectionRectAccepted(const QRect &rect, QMouseEvent *event)
// double y2 = widget->yAxis->pixelToCoord(rect.bottom());
}
void FormDraw::s_addGanZuangTu(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW)
void FormDraw::s_addGanZhuangTu(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW)
{
//井名&道名不一致
if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName)
{
@ -3741,100 +3764,17 @@ void FormDraw::s_addGanZuangTu(QString strUuid, QString strSlfName, QString strW
curv->m_strUuid = m_strUuid;
curv->setDepthY(m_iY1, m_iY2);
curv->initGeometry(m_strUuid, m_iScale, g_iOneWidth);
curv->show();
//杆状图
initGanzhuang(curv, strSlfName, strLineName);
////////////////////////////////////////
m_Value=NULL;
m_Value2=NULL;
m_Value3=NULL;
m_bTableData=0;//表格或曲线
//m_csCurveDDIR="DDIR";
//m_csCurveDANG="DANG";
//m_csCurveGrad="GRAD";
m_nTailWidth=2;
m_crTail=qRgb(0,0,0);
m_crPointFill=qRgb(0,0,0);
m_crGridSmall=qRgb(100,100,100);
m_nRadius = 6;
m_nTailLen = 10;
m_nCircleWidth=1;
m_flGrad1 = 10;
m_flGrad2 = 50;
//Table dip
m_qsTable="FRAC_HOLE.TABLE";
m_qsDIR=("DIR"); // 方位 曲线名
m_qsDIP=("DIPorS");//倾角
m_qsDepth="DEP";
m_qsID = "ID";
m_qsProperty=("ID");
m_iPrecision = 3;
//读数据
m_csCurveDDIR = "DDIR"; // 方位 曲线名
m_csCurveDANG = "DANG";//倾角
m_csCurveGrad = "GRAD";
this->ReadData(strSlfName, m_csCurveDDIR, 0, &m_Curve);
this->ReadData(strSlfName, m_csCurveDANG, 1, &m_Curve2);
this->ReadData(strSlfName, m_csCurveGrad, 2, &m_Curve3);
curv->yAxis->setTickLabels(true);
curv->yAxis->setTickLabelSide(QCPAxis::lsInside);
QFont font1("微软雅黑", 16); //fontSize 10
curv->yAxis->setTickLabelFont(font1);
//
// curv->xAxis->ticker()->setTickCount(10);//x个主刻度
// curv->yAxis->ticker()->setTickCount(60);//y个主刻度
int iMyWidth = curv->axisRect(0)->width();
float vmax = iMyWidth;
float vmin = 0;
curv->setScaleX(vmin, vmax);
curv->axisRect()->setupFullAxesBox();
//
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;
m_LeftVal = 0;
m_RightVal = 90;
//隐藏刻度
curv->xAxis->setTicks(false);
curv->yAxis->setTicks(false);
curv->xAxis2->setTicks(false);
curv->yAxis2->setTicks(false);
curv->xAxis->setVisible(false);
curv->xAxis2->setVisible(false);
curv->yAxis->setVisible(false);
curv->yAxis2->setVisible(false);
//蝌蚪图
// curv->mKedou = true;
//隐藏网格
// curv->xAxis->grid()->setVisible(false);
// curv->yAxis->grid()->setVisible(false);
DrawStck(curv);
//道-对象
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, "ganzhuangtuObject");
//
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
m_listLineName.push_back(strLineName);
}
//井眼垮塌矢量图
void FormDraw::s_addJykt(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW)
{
//井名&道名不一致
@ -3858,31 +3798,19 @@ void FormDraw::s_addJykt(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->resize(INT_MAX, INT_MAX); // 使用 INT_MAX 来避免16位整数的限制
// QSizePolicy policy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// curv->setSizePolicy(policy);
curv->show();
//井眼垮塌矢量图
DrawJykt(curv, strSlfName);
//道-对象
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, "JyktObject");
//
initJykt(curv, strSlfName, strLineName);
//
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
//
m_listLineName.push_back(strLineName);
}
//井斜方位图
void FormDraw::s_addDenv(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW)
{
//井名&道名不一致
@ -3906,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*)));
//
@ -4083,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*)));
@ -5156,6 +5075,15 @@ void FormDraw::DrawImageNew_NoFilter(QMyCustomPlot *widget, QString strSlfName,
//蝌蚪图
void FormDraw::initKedou(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName, QColor newlineColor, QJsonObject listOtherProperty)
{
widget->mKedou = true;
//隐藏网格
widget->xAxis->grid()->setVisible(false);
widget->yAxis->grid()->setVisible(false);
//
widget->m_bRowGridVisible = false;
widget->m_bColGridVisible = false;
int iMyWidth = widget->axisRect(0)->width();
float vmax = iMyWidth;
float vmin = 0;
@ -5185,16 +5113,183 @@ void FormDraw::initKedou(QMyCustomPlot *widget, QString strSlfName, QString strL
widget->yAxis2->setVisible(false);
//-----------------------------------
QString strUnit = "";
QString strUnit = "(°)";
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();
}
//杆状图
void FormDraw::initGanzhuang(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();
float vmax = iMyWidth;
float vmin = 0;
widget->setScaleX(vmin, iMyWidth);
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;
m_LeftVal = 0;
m_RightVal = 90;
//隐藏刻度
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_Ganzhuang();
}
//井眼垮塌矢量图
void FormDraw::initJykt(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 = 10;
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_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)
@ -6572,364 +6667,6 @@ void FormDraw::CalcDipWidth(int nColumn,float *flWidth,float factor,int x1,int x
}
void FormDraw::DrawJykt(QMyCustomPlot *widget, QString strSlfName)
{
//初始化数据
m_nRadius=4;
m_nTailLen = 8;
m_nCircleLineWidth = 2 ;
m_nTailWidth = 2;
m_flStep = 0.5;
m_nOffset = 90;
m_crTailLine = qRgb(0,0,0);
m_crLine = qRgb(0,0,0);
m_crPointFill = qRgb(0,0,0);
//读取曲线数据
m_csCurveDDIR="STRDIR"; //"DDIR";
m_csCurveCAL="CALM";
this->ReadData(strSlfName, m_csCurveCAL, 0, &m_Curve);
this->ReadData(strSlfName, m_csCurveDDIR, 1, &m_Curve2);
//-------------------
m_LeftVal = 0;
m_RightVal = 10;
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);
//-------------
float tempf,flVal;
float flDep;
int i,j,iPoint=0,nPointNum=0,tempi;
QRectF rt,rtRect;
float x,y,x1,y1,x2,y2;
float dang,ddir;
float dg,dy;
float dgtord;
float deps;
tempf = (m_EDep - m_SDep)/m_Rlev;
nPointNum = tempf+1;
//
dgtord=3.14159265/180.;
QPen pPenTail = QPen(m_crTailLine, m_nTailWidth);//
QPen pPenCircle = QPen(m_crLine, m_nCircleLineWidth);// add for圆线宽度单独使用
QBrush brush2(m_crPointFill);
// 注意映射方式
float flVal1=0;
if (m_flStep <=0) m_flStep = 0.5;//add for:用户要输入0.5当输入到0时系统已经刷新除0异常 [5/23/2019 16:35 hxb]
for (flDep = m_SDep; flDep < m_EDep; flDep += m_flStep)
{
y = -flDep;//起始深度
// 绘制圆
i=(flDep-m_Curve.StartDepth)/m_Curve.DepLevel+0.5;
if(i<0) continue;
//
j=(flDep-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
if(j<0) continue;
flVal1 = GetData(m_Curve2.RepCode, (char *)&m_Value2[j*m_Curve2.CodeLen]);
//角度小于0不绘制
if ( flVal1 <0)
{
continue;
}
//
flVal = GetData(m_Curve.RepCode, (char *)&m_Value[i*m_Curve.CodeLen]);
x = flVal;
//圆
QCPItemEllipse *qcpItemEllipse = new QCPItemEllipse(widget);
qcpItemEllipse->setPen(pPenCircle);
qcpItemEllipse->m_bCustom = true;
qcpItemEllipse->m_nRadius = m_nRadius;
qcpItemEllipse->topLeft->setCoords(y, x);//圆心位置
qcpItemEllipse->bottomRight->setCoords(y, x);//圆心位置
qcpItemEllipse->setBrush(brush2);//填充圆的颜色
//尾巴
flVal=flVal1;
flVal+=m_nOffset;
if ( flVal >=180.)flVal -= 180;
float dr=flVal*dgtord;
QCPItemLine *qcpItemLine = new QCPItemLine(widget);
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;
//break;
}
}
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;
}
}
}
void FormDraw::DrawStck(QMyCustomPlot *widget)
{
float flWidth[50];
int l;
float dep;
int m_nScaleThinGrid=10;
float lstk=2;
float dang,ddir;
float dg,dy,dx;
// 计算位置
int iMyWidth = widget->axisRect(0)->width();
float x1 = 0;
float x2 = iMyWidth;
float x=0,y=0;
int j=0,i=0,k=0;
float flTemp=0;
for(int i=0;i<50;i++) flWidth[i]=0;
CalcDipWidth(m_nScaleThinGrid, flWidth, 1.2, x1, x2, 1.);
QPen pPen(m_crTail,m_nTailWidth);
QBrush cBrushFill(m_crPointFill);
float flDepthScale,tempf,flVal;
int nPointNum=0,tempi;
QRectF rt,rtRect;
float dgtord,dr;
for(int i=0;i<50;i++) flWidth[i]=0;
if(m_Value==0 || m_Value2==0)
{
Refurbish();
}
if ( m_Value==0 || m_Value2==0 )
return ;
dgtord=3.14159265/180.;
CalcDipWidth(9, flWidth, 1.2, 0, iMyWidth, 1);
while ( 1)
{
dep = m_SDep + k * m_Rlev;
if ( dep >m_EDep )
break;
if(dep<m_SDep)
{
k++;
continue;
}
i=(dep-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
if(i<0)
{
k++;
continue;
}
flVal = GetData(m_Curve2.RepCode,(char *)&m_Value2[i*m_Curve2.CodeLen]);//DANG
if ( flVal > m_RightVal || flVal < m_LeftVal )
{
k++;
continue;
}
tempi = (int)( flVal /10.);
tempf = 0.;
for (j=0; j<tempi; j++)
{
tempf += flWidth[j];
}
x =160;//= tempf + (flVal-tempi*10.)*(flWidth[j+1]/10.);
y = -dep;//起始深度
// pDC->setPen(pPen);// [5/22/2019 9:43 hxb]
// rtRect.setLeft(x - GetLineWidth(pDC,m_nRadius));
// rtRect.setRight(x + GetLineWidth(pDC,m_nRadius));
// rtRect.setBottom(y +GetLineWidth(pDC,m_nRadius));
// rtRect.setTop(y -GetLineWidth(pDC,m_nRadius));
// pDC->setPen(PenCircle);
// pDC->drawEllipse(rtRect.center(),m_nRadius,m_nRadius);
// QCPItemEllipse *qcpItemEllipse = new QCPItemEllipse(widget);
// qcpItemEllipse->setPen(pPen);
// qcpItemEllipse->m_bCustom = true;
// qcpItemEllipse->m_nRadius = m_nRadius;
// qcpItemEllipse->topLeft->setCoords(y, x);//圆心位置
// qcpItemEllipse->bottomRight->setCoords(y, x);//圆心位置
// qcpItemEllipse->setBrush(cBrushFill);//填充圆的颜色
//方位
dang = GetData(m_Curve.RepCode,(char *)&m_Value[i*m_Curve.CodeLen]);//DDIR
dr=dang*dgtord;
//dx=abs(lstk*cos(dr));
// dy=sqrt(lstk*lstk*(1-cos(dr)*cos(dr)));
// // 注意映射方式
// x +=GetLineWidth(pDC,m_nRadius)*sin(dr);
// y -=GetLineWidth(pDC,m_nRadius)*cos(dr);
// float x1=x +GetLineWidth(pDC,m_nTailLen)*sin(dr);
// float y1=y -GetLineWidth(pDC,m_nTailLen)*cos(dr);
// pDC->setPen(pPen);
// pDC->drawLine(QPointF(x,y),QPointF(x1,y1));
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_nSltk; //杆长
qcpItemLine->m_nRadius = 0; //半径
qcpItemLine->m_dr = dr;
QCPItemLine *qcpItemLine1 = new QCPItemLine(widget);
qcpItemLine1->start->setCoords(y, x);//圆心位置
qcpItemLine1->end->setCoords(y, x);//圆心位置
qcpItemLine1->setPen(pPen);
qcpItemLine1->m_bCustom = true;
qcpItemLine1->m_nTailLen = m_nSltk; //杆长
qcpItemLine1->m_nRadius = 0; //半径
qcpItemLine1->m_dr = dr+PI;
//移动对象
// widget->mSizeHandleManager->addItem(qcpItemEllipse, true);
// widget->mSizeHandleManager->addItem(qcpItemLine, true);
k++;
}
}
//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:
@ -148,16 +148,21 @@ public:
int getColorConfig(QVector <QString> &qFiles);
void DrawImageNew_NoFilter(QMyCustomPlot *widget, QString strSlfName, QString &strWaveName, int &_nSamples);
//表格曲线
//蝌蚪图
void initKedou(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QString strAliasName = "蝌蚪图", QColor newlineColor=QColor(0,0,0), QJsonObject listOtherProperty={});
//杆状图
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);//表格
void ReadData(QString strSlfName, QString strLineName, int iCurve, Slf_CURVE *curve);//曲线
void DrawStck(QMyCustomPlot *widget);
void CalcDipWidth(int nColumn,float *flWidth,float factor,int x1,int x2,float flHoriRatio);
void Refurbish();
void DrawJykt(QMyCustomPlot *widget, QString strSlfName);
void DrawDenv(QMyCustomPlot *widget, QString strSlfName);
int m_PointNum;
//
@ -255,7 +260,7 @@ public slots:
void s_handleRectRangeChange(QCPRange newRange);
void s_selectionRectAccepted(const QRect &rect, QMouseEvent *event);
void s_addGanZuangTu(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);//杆状图
void s_addGanZhuangTu(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);//杆状图
//井眼垮塌矢量图
void s_addJykt(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW);
//井斜方位图

View File

@ -127,8 +127,8 @@ void FormInfo::initProperty_Kedou(QJsonObject obj)
// 显示控制
this->m_pl_minInclination = 0; // 最小倾角
this->m_pl_maxInclination = 360; // 最大倾角
this->m_flGrad1 = 10; // 可信度1
this->m_flGrad2 = 50; // 可信度2
this->m_flGrad1 = 1; // 可信度1
this->m_flGrad2 = 5; // 可信度2
// 显示控制(数据表)
this->m_crack_decimal_digits = 2; // 小数位数
@ -212,6 +212,183 @@ void FormInfo::initProperty_Kedou(QJsonObject obj)
}
}
void FormInfo::initProperty_Ganzhuang(QJsonObject obj)
{
if(obj.isEmpty())
{
// 字体
// 曲线选择
this->m_pl_azimuthCurve = "DDIR"; // 方位曲线
this->m_pl_inclinationCurve = "DANG"; // 倾角曲线
this->m_pl_GradCurve = "GRAD"; // 可信度曲线
//杆
this->m_nTailLen = 15; // 尾线长度
this->m_nTailWidth = 2; // 尾线宽度
// 显示控制
this->m_pl_minInclination = 0; // 最小倾角
this->m_pl_maxInclination = 90; // 最大倾角
this->m_flGrad1 = 10; // 可信度1
this->m_flGrad2 = 50; // 可信度2
//
this->m_strUnit = "(°)";
this->m_flStep = 0.5; // 深度间隔
}
else
{
QString strType = obj.value("Type").toString();
if ("tableObject" == strType)
{
// 字体
// 名称
this->m_curveNameFont.fromString(obj["curveNameFont"].toString());
// 曲线选择
this->m_pl_azimuthCurve = obj["m_pl_azimuthCurve"].toString(); // 方位曲线
this->m_pl_inclinationCurve = obj["m_pl_inclinationCurve"].toString(); // 倾角曲线
this->m_pl_GradCurve = obj["m_pl_GradCurve"].toString(); // 可信度曲线
//杆
this->m_nTailLen = obj["m_nTailLen"].toDouble(); // 尾线长度
this->m_nTailWidth = obj["m_nTailWidth"].toDouble(); // 尾线宽度
this->m_crTail.setNamedColor(obj["m_crTail"].toString());// 尾线颜色
// 显示控制
this->m_pl_minInclination = obj["m_pl_minInclination"].toDouble(); // 最小倾角
this->m_pl_maxInclination = obj["m_pl_maxInclination"].toDouble(); // 最大倾角
this->m_flGrad1 = obj["m_flGrad1"].toDouble(); // 可信度1
this->m_flGrad2 = obj["m_flGrad2"].toDouble(); // 可信度2
//
this->m_strUnit = obj["Unit"].toString(); // 单位
this->m_flStep = obj["m_flStep"].toDouble(); // 深度间隔
}
}
}
void FormInfo::initProperty_Jykt(QJsonObject obj)
{
if(obj.isEmpty())
{
// 字体
// 曲线选择
this->m_pl_azimuthCurve = "STRDIR"; // 方位曲线
this->m_pl_deltaCurve = "CALM"; // 井径差曲线
//蝌蚪符号
this->m_nRadius = 6; // 圆半径
this->m_nCircleWidth = 1; // 圆线宽度
this->m_nTailLen = 10; // 尾线长度
this->m_nTailWidth = 2; // 尾线宽度
// 显示控制
this->m_vmin = 0; // 左刻度
this->m_vmax = 10; // 右刻度
this->m_flStep = 0.5; // 深度间隔
this->m_nOffset = 90; // 角度偏移
//
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_deltaCurve = obj["m_pl_deltaCurve"].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_nOffset = obj["m_nOffset"].toDouble(); // 角度偏移
//
this->m_strUnit = obj["Unit"].toString(); // 单位
}
}
}
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();
@ -484,7 +661,6 @@ QJsonObject FormInfo::makeJson()
{
//蝌蚪图
// 字体
//rootObj["m_strAliasNameFont"] = this->m_strAliasNameFont.toString(); // 名称
rootObj["m_strUnitFont"] = this->m_strUnitFont.toString(); // 单位
rootObj["m_pl_fontScale"] = this->m_pl_fontScale.toString(); // 刻度
// 数据类型选择
@ -530,6 +706,81 @@ QJsonObject FormInfo::makeJson()
rootObj["m_pl_custom2"] = this->m_pl_custom2; // 自定义2
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")
{
@ -1222,11 +1473,34 @@ void FormInfo::paintEvent(QPaintEvent* event)
}
}
if(m_strLineName=="井眼垮塌矢量图"
|| m_strLineName=="井斜方位图")
//蝌蚪图、杆状图
if(m_strLineName == "FRAC_HOLE.TABLE" || m_strLineName=="GANZHUANG.LINE")
{
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));
int nbay = rect.height() - 5;
// 显示刻度
if (m_bShowScale)
{
drawScale_Kedou(painter, rect);
}
QFontMetrics fm2(m_curveUnitFont);
QRect tRect = fm2.boundingRect(m_strUnit);
painter.drawText(rect.width()/2- tRect.width()/2, nbay - 6, m_strUnit);
}
//井眼垮塌矢量图
if(m_strLineName=="JINGYANKUATA.LINE" || m_strLineName=="XIEFANGWEI.LINE")
{
int nbay = rect.height() - 5;
// 显示刻度
if (m_bShowScale)
{
drawScale(painter, rect);
}
QFontMetrics fm2(m_curveUnitFont);
QRect tRect = fm2.boundingRect(m_strUnit);
painter.drawText(rect.width()/2- tRect.width()/2, nbay - 6, m_strUnit);
}
if(m_strLineName == "深度")
@ -1575,6 +1849,28 @@ void FormInfo::drawScale(QPainter& painter, const QRect& rect)
}
}
void FormInfo::drawScale_Kedou(QPainter& painter, const QRect& rect)
{
int nbay = rect.height() - 5;
QVector<QStringList> vecScale;
vecScale << QStringList({ QString::number(m_pl_minInclination) , QString::number(m_pl_maxInclination) });
painter.setFont(m_curveScaleFont);
QFontMetrics fm1(m_curveScaleFont);
QRect textRect = fm1.boundingRect(QString::number(m_pl_minInclination, 'f', 0));
int ntxthei = textRect.height() - 4;
int nyy = nbay - ntxthei * vecScale.size() - 3;
for (int i = 0; i < vecScale.size(); i++)
{
const QStringList& slist = vecScale.at(i);
QRect textRect = fm1.boundingRect(slist.at(1));
int y = nyy + (i + 1) * ntxthei;
painter.drawText(rect.x() + 3, y, slist.at(0));
painter.drawText(rect.width() - textRect.width() - 3, y, slist.at(1));
}
}
void FormInfo::paintClassify(QPainter &painter, int compassCenterY)
{
// 绘制分类

View File

@ -27,6 +27,9 @@ public:
void initProperty(QJsonObject obj);
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:
@ -37,6 +40,7 @@ protected:
// 绘制刻度
void drawScale(QPainter& painter, const QRect& rect);
void drawScale_Kedou(QPainter& painter, const QRect& rect);
public slots:
void dragEnterEvent(QDragEnterEvent* event);
@ -371,9 +375,17 @@ public:
float m_nCircleWidth = 2; // 圆线宽度
float m_nTailWidth = 2; // 尾宽度
float m_nTailLen = 10; // 尾长
QColor m_crCircle = qRgb(0,0,0); //颜色
QColor m_crTail = qRgb(0,0,0); //颜色
QColor m_crPointFill = qRgb(0,0,0);
QColor m_crCircle = qRgb(0,0,0); // 圆线颜色
QColor m_crTail = qRgb(0,0,0); // 尾线颜色
QColor m_crPointFill = qRgb(0,0,0); // 圆填充色
//井眼垮塌矢量图
QString m_pl_deltaCurve = "CALM"; // 井径差曲线
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,7 +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);
if(strLineName == "FRAC_HOLE.TABLE")
{
formInfo->initProperty_Kedou(listOtherProperty);
}
else if(strLineName == "GANZHUANG.LINE")
{
formInfo->initProperty_Ganzhuang(listOtherProperty);
}
else if(strLineName == "JINGYANKUATA.LINE")
{
formInfo->initProperty_Jykt(listOtherProperty);
}
else if(strLineName == "XIEFANGWEI.LINE")
{
formInfo->initProperty_Denv(listOtherProperty);
}
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
@ -347,6 +340,7 @@ FormInfo* FormTrack::AddKedou(QString strSlfName, QString strWellName, QString s
ui->tableWidget->setRowHeight(row, 100);
//
ui->tableWidget->setCellWidget(row, 0, formInfo);
return formInfo;
}
FormInfo* FormTrack::setDrawDt(QStringList listdt, QJsonObject obj)
@ -952,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

@ -44,7 +44,8 @@ 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* 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);
@ -80,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

@ -33,6 +33,12 @@ FormTrackTop::~FormTrackTop()
delete ui;
}
void FormTrackTop::setTrackName(QString strTName)
{
m_strTrackName = strTName;
update();
}
// void FormTrackTop::setBorderFlags(BorderFlags flags)
// {
// m_BorderFlags = flags;

View File

@ -23,7 +23,7 @@ class FormTrackTop : public FormBase
public:
explicit FormTrackTop(QWidget*, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="", QColor lineColor=QColor(255,0,0));
~FormTrackTop();
void setTrackName(QString strTName);
void setTrackTopPropert(QJsonObject topObj);
private:
Ui::FormTrackTop *ui;

View File

@ -3667,7 +3667,7 @@ void MainWindowCurve::s_NewGanZhuangTu()
QString strSlfName = sret.at(1);
//新建道
emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "杆状图", "ganzhuangtuObject", nW);
emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "GANZHUANG.LINE", "ganzhuangtuObject", nW);
}
void MainWindowCurve::s_roseAc()
@ -3709,98 +3709,31 @@ void MainWindowCurve::s_dcaAc()
//井眼垮塌矢量图
void MainWindowCurve::s_Jykt()
{
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, "井眼垮塌矢量图", "JyktObject", nW);
emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "JINGYANKUATA.LINE", "JyktObject", nW);
}
//井斜方位图
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

@ -215,6 +215,12 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
connect(CallManage::getInstance(), SIGNAL(sig_changeGuanD(QString, QString, QString, QString, QString, QString, double)), this, SLOT(s_changeGuanD(QString, QString, QString, QString, QString, QString, double)));
//改变蝌蚪图属性
connect(CallManage::getInstance(), SIGNAL(sig_changeKedouProperty(QString, QString, QString, QString, QString)), this, SLOT(s_changeKedouProperty(QString, QString, QString, QString, QString)));
//改变杆状图属性
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)
@ -640,7 +646,7 @@ QCPColorMap * QMyCustomPlot::updateWave()
int ny = m_nSamples;
m_colorMap->data()->setSize(nx, ny); // 我们希望彩色地图有nx*ny的数据点
float f = 264 / 269.0f;
float f = 0.99;// 264 / 269.0f;
m_colorMap->data()->setRange(QCPRange(0 - m_EDep, 0 - m_SDep), QCPRange(this->m_iX1, this->m_iX2*f));
for (int xIndex = 0; xIndex < nx; ++xIndex)
@ -2185,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;
}
@ -5106,15 +5127,20 @@ void QMyCustomPlot::s_changeDrawProperty(QVariantList vlist)
}
else if ("左刻度" == strProperty)
{
if (m_colorMap)
{
m_iX1 = varVal.toFloat();
float f = 264 / m_fScaleV;
m_colorMap->data()->setValueRange(QCPRange(m_iX1, m_iX2*f));
}
}
else if ("右刻度" == strProperty)
{
if (m_colorMap)
{
m_fScaleV = varVal.toFloat();
float f = 264 / m_fScaleV;
m_colorMap->data()->setValueRange(QCPRange(m_fmin, m_fmax*f));
m_fScaleV = varVal.toFloat();
float f = 264 / m_fScaleV;
m_colorMap->data()->setValueRange(QCPRange(m_iX1, m_iX2*f));
}
}
else if ("最大振幅" == strProperty)
@ -11977,10 +12003,6 @@ void QMyCustomPlot::Draw_Kedou()
if (m_bTableData)
{
ReadFracDef_gaodaofeng();
// for (int i = 0 ; i < iFracType ; i++)
// {
// m_bTypeDraw[i] = true;
// }
ReadData(m_strSlfName, m_strLineName);
}
else
@ -12023,7 +12045,7 @@ void QMyCustomPlot::DrawTabDip_Kedou()
{
float flDepthScale,tempf,flVal;
int i,j,n,nPointNum=0,tempi;
QRectF rt,rtRect;
//QRectF rt,rtRect;
float x,y;
float dgtord,dr;
float flWidth[50];
@ -12212,7 +12234,7 @@ void QMyCustomPlot::DrawDip_Kedou()
float flDepthScale,tempf,flVal;
int nPointNum=0,tempi;
QRectF rt,rtRect;
//QRectF rt,rtRect;
float dgtord,dr;
for(int i=0;i<50;i++) flWidth[i]=0;
if(m_Value==0 || m_Value2==0)
@ -12220,7 +12242,10 @@ void QMyCustomPlot::DrawDip_Kedou()
Refurbish();
}
if ( m_Value==0 || m_Value2==0 )
{
this->replot();
return ;
}
dgtord=3.14159265/180.;
@ -12247,7 +12272,8 @@ void QMyCustomPlot::DrawDip_Kedou()
}
bool bFillBrush = true;
if ( m_Value3!=NULL)// && m_Value3 !=0xcdcdcdcd )
//可信度
if ( m_Value3!=NULL)
{
flVal = GetData(m_Curve3.RepCode,(char *)&m_Value3[i*m_Curve3.CodeLen]);//置信度
if ( flVal < m_flGrad1 )
@ -12337,3 +12363,432 @@ void QMyCustomPlot::s_changeKedouProperty(QString strUuid, QString strSlfName, Q
//绘制蝌蚪图
Draw_Kedou();
}
//改变杆状图属性
void QMyCustomPlot::s_changeGanzhuangProperty(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_Ganzhuang();
}
void QMyCustomPlot::Draw_Ganzhuang()
{
//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_csCurveDDIR = pInfo->m_pl_azimuthCurve; // 方位 曲线名
this->m_csCurveDANG = pInfo->m_pl_inclinationCurve;//倾角
this->m_csCurveGrad = pInfo->m_pl_GradCurve; // 可信度曲线
//杆状
this->m_nTailLen = pInfo->m_nTailLen; // 尾线长度
this->m_nTailWidth = pInfo->m_nTailWidth; // 尾线宽度
this->m_crTail = pInfo->m_crTail; // 尾线颜色
// 显示控制
this->m_pl_minInclination = pInfo->m_pl_minInclination; // 最小倾角
this->m_pl_maxInclination = pInfo->m_pl_maxInclination; // 最大倾角
this->m_flGrad1 = pInfo->m_flGrad1; //可信度1
this->m_flGrad2 = pInfo->m_flGrad2; //可信度2
this->m_flStep = pInfo->m_flStep; // 深度间隔--读数据的间隔
//读数据
this->ReadData(m_strSlfName, m_csCurveDDIR, 0, &m_Curve);
this->ReadData(m_strSlfName, m_csCurveDANG, 1, &m_Curve2);
this->ReadData(m_strSlfName, m_csCurveGrad, 2, &m_Curve3);
float flWidth[50];
int l;
float dep;
int m_nScaleThinGrid=10;
float lstk=2;
float dang,ddir;
float dg,dy,dx;
// 计算位置
int iMyWidth = this->axisRect(0)->width();
float x1 = 0;
float x2 = iMyWidth;
float x=0,y=0;
int j=0,i=0,k=0;
float flTemp=0;
for(int i=0;i<50;i++) flWidth[i]=0;
CalcDipWidth(m_nScaleThinGrid, flWidth, 1.2, x1, x2, 1.);
QPen pPenTail(m_crTail,m_nTailWidth);
float flDepthScale,tempf,flVal;
int nPointNum=0,tempi;
//QRectF rt,rtRect;
float dgtord,dr;
for(int i=0;i<50;i++) flWidth[i]=0;
// if(m_Value==0 || m_Value2==0)
// {
// Refurbish();//曲线名不一样,不能用
// }
if ( m_Value==0 || m_Value2==0 )
{
this->replot();
return ;
}
dgtord=3.14159265/180.;
CalcDipWidth(9, flWidth, 1.2, 0, iMyWidth, 1);
while ( 1)
{
dep = m_SDep + k * m_flStep;//此处使用配置的间隔读取 m_Rlev
if ( dep >m_EDep )
break;
if(dep<m_SDep)
{
k++;
continue;
}
i=(dep-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
if(i<0)
{
k++;
continue;
}
//可信度
if ( m_Value3!=NULL)
{
flVal = GetData(m_Curve3.RepCode,(char *)&m_Value3[i*m_Curve3.CodeLen]);//置信度
if ( flVal < m_flGrad1 || flVal > m_flGrad2 )
{
k++;
continue;
}
}
flVal = GetData(m_Curve2.RepCode,(char *)&m_Value2[i*m_Curve2.CodeLen]);//DANG
if ( flVal > m_pl_maxInclination || flVal < m_pl_minInclination )
{
k++;
continue;
}
tempi = (int)( flVal /10.);
tempf = 0.;
for (j=0; j<tempi; j++)
{
tempf += flWidth[j];
}
x = (x1+x2)/2.0; //160;//= tempf + (flVal-tempi*10.)*(flWidth[j+1]/10.);
y = -dep;//起始深度
//方位
dang = GetData(m_Curve.RepCode,(char *)&m_Value[i*m_Curve.CodeLen]);//DDIR
dr=dang*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/2.0; //杆长
qcpItemLine->m_nRadius = 0; //半径
qcpItemLine->m_dr = dr;
//
QCPItemLine *qcpItemLine1 = new QCPItemLine(this);
qcpItemLine1->start->setCoords(y, x);//圆心位置
qcpItemLine1->end->setCoords(y, x);//圆心位置
qcpItemLine1->setPen(pPenTail);
qcpItemLine1->m_bCustom = true;
qcpItemLine1->m_nTailLen = m_nTailLen/2.0; //杆长
qcpItemLine1->m_nRadius = 0; //半径
qcpItemLine1->m_dr = dr+PI;
k++;
}
this->replot();
}
//改变井眼垮塌矢量图属性
void QMyCustomPlot::s_changeJyktProperty(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_Jykt();
}
void QMyCustomPlot::Draw_Jykt()
{
//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_csCurveDDIR = pInfo->m_pl_azimuthCurve; // 方位 曲线名
this->m_csCurveCAL = pInfo->m_pl_deltaCurve;//井径差曲线
//蝌蚪符号
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_csCurveCAL, 0, &m_Curve);
this->ReadData(m_strSlfName, m_csCurveDDIR, 1, &m_Curve2);
if ( m_Value==0 || m_Value2==0 )
{
this->replot();
return ;
}
//
m_flStep = pInfo->m_flStep; // 深度间隔--读数据的间隔
m_nOffset = pInfo->m_nOffset; // 角度偏移=0,主应力方向,=90长轴方向
//
float vmax = pInfo->m_vmax;
float vmin = pInfo->m_vmin;
//this->setScaleX(vmin, vmax);
this->yAxis->setRange(vmin, vmax);
//-------------
float flVal;
float flDep;
int i,j,iPoint=0,tempi;
//QRectF rt,rtRect;
float x,y,x1,y1,x2,y2;
float dang,ddir;
float dg,dy;
float dgtord;
float deps;
//
dgtord=3.14159265/180.;
QPen pPenTail = QPen(m_crTail, m_nTailWidth);//
QPen pPenCircle = QPen(m_crCircle, m_nCircleWidth);// add for圆线宽度单独使用
QBrush brush2(m_crPointFill);
// 注意映射方式
float flVal1=0;
if (m_flStep <=0) m_flStep = 0.5;//add for:用户要输入0.5当输入到0时系统已经刷新除0异常 [5/23/2019 16:35 hxb]
for (flDep = m_SDep; flDep < m_EDep; flDep += m_flStep)
{
y = -flDep;//起始深度
// 绘制圆
i=(flDep-m_Curve.StartDepth)/m_Curve.DepLevel+0.5;
if(i<0) continue;
//
j=(flDep-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
if(j<0) continue;
flVal1 = GetData(m_Curve2.RepCode, (char *)&m_Value2[j*m_Curve2.CodeLen]);
//角度小于0不绘制
if ( flVal1 <0)
{
continue;
}
//
flVal = GetData(m_Curve.RepCode, (char *)&m_Value[i*m_Curve.CodeLen]);
x = flVal;
//圆
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(brush2);//填充圆的颜色
//尾巴
flVal=flVal1;
flVal+=m_nOffset;
if ( flVal >=180.)flVal -= 180;
float 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;
//break;
}
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
@ -677,6 +679,15 @@ public slots:
//改变蝌蚪图属性
void s_changeKedouProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//改变杆状图属性
void s_changeGanzhuangProperty(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//改变井眼垮塌矢量图属性
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;
@ -706,6 +717,11 @@ public:
float m_SDep,m_EDep,m_Rlev;
int m_nSamples = 0;
//井眼垮塌矢量图
QString m_csCurveCAL;
float m_flStep;// 增加深度间隔
float m_nOffset; // 角度偏移=0,主应力方向,=90长轴方向
// 频率统计图 csCurveGrad曲线名 LeftVal3最小值 RightVal3最大值 nArc扇形 nR圆半径 crArc圆颜色 nArcLineWidth圆线宽度 bFill是否填充
void drawFgrq(bool bTableData, QString csCurveDDIR, QString csCurveDANG, QString csCurveGrad, double LeftVal3, double RightVal3, int nArc, double nR, QColor crArc, int nArcLineWidth, bool bFill, QColor crFill,
int lineNumber, double lineHeight, int lineThickness, QColor lineColor, bool drawAnnotation, bool drawHistogram,
@ -732,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; // 可信度
@ -746,8 +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:
};