|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iGuiPlot.h"
|
|
|
|
|
|
#include "nmDefines.h"
|
|
|
|
|
|
#include "nmPlot_global.h"
|
|
|
|
|
|
#include <QPointF>
|
|
|
|
|
|
|
|
|
|
|
|
class nmObjBase;
|
|
|
|
|
|
class nmObjPointWell;
|
|
|
|
|
|
class ZxDataWell;
|
|
|
|
|
|
class nmDataVerticalFracturedWell;
|
|
|
|
|
|
class nmDataHorizontalFracturedWell;
|
|
|
|
|
|
class nmDataAnalyzeManager;
|
|
|
|
|
|
class nmDataWellBase;
|
|
|
|
|
|
class QWidget;
|
|
|
|
|
|
|
|
|
|
|
|
// 数值试井绘图载体的样例
|
|
|
|
|
|
class NM_PLOT_EXPORT nmGuiPlot : public iGuiPlot {
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit nmGuiPlot(bool bUseBtn = true, QWidget *parent = 0);
|
|
|
|
|
|
~nmGuiPlot();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化UI
|
|
|
|
|
|
virtual void initUI(QString sTitle, QSize szDefault = QSize(265, 203)) override;
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化Sheet
|
|
|
|
|
|
void initSheets();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化布局
|
|
|
|
|
|
virtual void initMainLayout() override;
|
|
|
|
|
|
virtual QWidget* initChartLayout(QString sTitle, QSize szDefault) override;
|
|
|
|
|
|
virtual void initChartView(QString sTitle, QSize szDefault) override;
|
|
|
|
|
|
virtual void connectSignals() override;
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新图形
|
|
|
|
|
|
virtual void runUpdate() override;
|
|
|
|
|
|
|
|
|
|
|
|
// Action命令执行
|
|
|
|
|
|
virtual bool runAction(QString sAction) override;
|
|
|
|
|
|
|
|
|
|
|
|
// 创建添加一个Obj
|
|
|
|
|
|
nmObjBase* appendOneObj(NM_Obj_Type o, QString& sName, QVector<QPointF>& vec);
|
|
|
|
|
|
nmObjBase* _createOneObj(NM_Obj_Type o, QString& sName);
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定绘图对象的信号
|
|
|
|
|
|
void bindObjSignals(ZxObjBase* pObj);
|
|
|
|
|
|
|
|
|
|
|
|
// ============================== 可见性设置接口 ==============================
|
|
|
|
|
|
// 边界相关
|
|
|
|
|
|
void setContourVisibility(bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 位图相关
|
|
|
|
|
|
void setImagesVisibility(bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 井相关
|
|
|
|
|
|
void setAllWellsVisible(bool bIsVisible);
|
|
|
|
|
|
void setWellVisible(QString sObjName, bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 断层相关
|
|
|
|
|
|
void setAllFaultsVisible(bool bIsVisible);
|
|
|
|
|
|
void setFaultVisible(QString sObjName, bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 裂缝相关
|
|
|
|
|
|
void setAllFracturesVisible(bool bIsVisible);
|
|
|
|
|
|
void setFractureVisible(QString sObjName, bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 区域相关
|
|
|
|
|
|
void setAllRegionsVisible(bool bIsVisible);
|
|
|
|
|
|
void setRegionVisible(QString sObjName, bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 区域标记相关
|
|
|
|
|
|
void setAllRegionMarksVisible(bool bIsVisible);
|
|
|
|
|
|
void setRegionMarkVisible(QString sObjName, bool bIsVisible);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef QT_DEBUG
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 刷新指定的绘图对象
|
|
|
|
|
|
/// @param sName 绘图对象名称
|
|
|
|
|
|
/// @param vecX 数据点
|
|
|
|
|
|
/// @param vecY 绘图对象名称
|
|
|
|
|
|
/// @param bPressureLike 压力模式还是流量模式,通常都是压力模式
|
|
|
|
|
|
/// @param bUseY2 是否启用第二y轴(右侧)
|
|
|
|
|
|
/// @param bClearAll 刷新指定绘图对象时,是否把原有所有绘图对象清除
|
|
|
|
|
|
ZxObjBase* updatePlotObjBy(QString sName, \
|
|
|
|
|
|
VecDouble& vecX, VecDouble& vecY, \
|
|
|
|
|
|
bool bPressureLike = true, \
|
|
|
|
|
|
bool bUseY2 = false, \
|
|
|
|
|
|
bool bClearAll = false);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
|
|
|
|
|
|
// Obj选择状态改变
|
|
|
|
|
|
void slotObjSelChanged(bool);
|
|
|
|
|
|
|
|
|
|
|
|
// Obj数据发生了改变
|
|
|
|
|
|
void slotObjPtsChanged();
|
|
|
|
|
|
|
|
|
|
|
|
// 删除井对象
|
|
|
|
|
|
void slotDeleteWell(QString wellID);
|
|
|
|
|
|
|
|
|
|
|
|
// 设置比例尺
|
|
|
|
|
|
void slotMeasuringScale(QPointF pStart, QPointF pEnd, void* obj);
|
|
|
|
|
|
|
|
|
|
|
|
// 删除图元对象
|
|
|
|
|
|
void slotDeleteOneObj(QString sName, void* obj);
|
|
|
|
|
|
|
|
|
|
|
|
// 删除测量对象
|
|
|
|
|
|
void deleteMeasureObjects();
|
|
|
|
|
|
// 清除当前测量对象
|
|
|
|
|
|
void clearPreviousMeasure();
|
|
|
|
|
|
// 结束测量
|
|
|
|
|
|
void finishMeasure();
|
|
|
|
|
|
|
|
|
|
|
|
// 更改坐标轴范围
|
|
|
|
|
|
void onRangeXChanged(double dMin, double dMax, \
|
|
|
|
|
|
bool bRecalTicks, \
|
|
|
|
|
|
bool bAdjustRectZoomRatio);
|
|
|
|
|
|
|
|
|
|
|
|
void onRangeYChanged(double dMin, double dMax, \
|
|
|
|
|
|
bool bRecalTicks, \
|
|
|
|
|
|
bool bAdjustRectZoomRatio);
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
// 绘图对象选择状态发生改变
|
|
|
|
|
|
void sigObjSelChanged(ZxObjBase*, bool);
|
|
|
|
|
|
|
|
|
|
|
|
// 绘图对象数据点发生改变
|
|
|
|
|
|
void sigObjPtsChanged(ZxObjBase*);
|
|
|
|
|
|
// 开始一次测量
|
|
|
|
|
|
void sigMeasureStarted();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 序列化
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser) override;
|
|
|
|
|
|
virtual void onDeserialize(ZxSerializer* ser) override;
|
|
|
|
|
|
|
|
|
|
|
|
// 反序列化后,把数据重新加入m_mapCurveData与m_mapCurveType
|
|
|
|
|
|
virtual void resetAfterDeserialized() override;
|
|
|
|
|
|
|
|
|
|
|
|
// 获取边界的点信息
|
|
|
|
|
|
QVector<ZxObjBase*> getObjsByTag(QString objTag);
|
|
|
|
|
|
ZxObjBase* getWellObjById(QString id);
|
|
|
|
|
|
// 获取边界的信息
|
|
|
|
|
|
QVector<QPointF> getOutlinePoints();
|
|
|
|
|
|
// 获取所有井的信息,包括点和半径
|
|
|
|
|
|
QVector<QVector<double >> getWellsInformation();
|
|
|
|
|
|
// 获取所有裂缝点信息
|
|
|
|
|
|
QVector<QVector<QPointF >> getCracksInformation();
|
|
|
|
|
|
// 获取所有断层点信息
|
|
|
|
|
|
QVector<QVector<QPointF >> getFaultsInformation();
|
|
|
|
|
|
// 获取所有复合区(区域)的信息
|
|
|
|
|
|
QVector<QVector<QPointF >> getRegionsInformation();
|
|
|
|
|
|
// 获取所有井的图元
|
|
|
|
|
|
QVector<nmObjPointWell*> getWellPlots();
|
|
|
|
|
|
// 获取所有井的数据指针
|
|
|
|
|
|
QVector<ZxDataWell*> getWellDatas();
|
|
|
|
|
|
// 获取所有井的名称
|
|
|
|
|
|
QStringList getWellNames();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化默认几何对象
|
|
|
|
|
|
void initDefultGeoObj();
|
|
|
|
|
|
// 从数据中心初始化坐标轴相关信息
|
|
|
|
|
|
void initAxisFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
// 从数据中心初始化边界对象
|
|
|
|
|
|
void initBoundaryObjFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
// 从数据中心初始化井对象
|
|
|
|
|
|
void initWellObjsFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
// 从数据中心初始化断层对象
|
|
|
|
|
|
void initFaultObjsFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
// 从数据中心初始化裂缝对象
|
|
|
|
|
|
void initFractureObjsFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
// 从数据中心初始化区域对象
|
|
|
|
|
|
void initRegionObjsFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
// 从数据中心初始化区域标记对象
|
|
|
|
|
|
void initRegionMarkObjsFromData(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
|
|
|
|
|
|
// 清空所有图元对象
|
|
|
|
|
|
void deleteAllPlotObjs();
|
|
|
|
|
|
|
|
|
|
|
|
// 获取所有图元
|
|
|
|
|
|
QVector<nmObjBase*> getAllPlots();
|
|
|
|
|
|
|
|
|
|
|
|
// 清除图元的选中状态
|
|
|
|
|
|
void clearPlotsSelectStates();
|
|
|
|
|
|
|
|
|
|
|
|
// 删除DFN生成的图元及其数据
|
|
|
|
|
|
void deleteAllDFNPlots();
|
|
|
|
|
|
|
|
|
|
|
|
// 设置所有图元是否可编辑
|
|
|
|
|
|
void setAllPlotObjectsEditable(bool editable);
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定由业务窗口创建的模型点对话框
|
|
|
|
|
|
void bindPointerPosDialog(QWidget* pointerPosDlg);
|
|
|
|
|
|
|
|
|
|
|
|
// 根据数据中心的数据设置目前图元、刻度相关信息
|
|
|
|
|
|
bool setPlotsByDataManger(nmDataAnalyzeManager* pDataManager);
|
|
|
|
|
|
|
|
|
|
|
|
// 移除井图元,通过井数据
|
|
|
|
|
|
void removeWellPlotByData(nmDataWellBase* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 清空井图元
|
|
|
|
|
|
void removeAllWellPlot();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 绘制Painter函数重载
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent*) override;
|
|
|
|
|
|
|
|
|
|
|
|
int m_iRegionMarkCount; //记录创建了多少个标记区域对象
|
|
|
|
|
|
|
|
|
|
|
|
};
|