#pragma once #include "nmObjBase.h" #include "nmDefines.h" #include "nmPlot_global.h" class nmPlotGraphicBinder; class nmDataFracture; // 数值试井绘图对象(线) class NM_PLOT_EXPORT nmObjLineCrack : public nmObjBase { Q_OBJECT ZX_DECLARE_DYNAMIC public: nmObjLineCrack(); nmObjLineCrack(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY); ~nmObjLineCrack(); public: // 设置初始参数 virtual void init(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY) override; // 封装 virtual void initTools() override; // 辅助信息 // virtual void initSubObjs(); protected: // 设置图元对象的属性标志 virtual void initFlags() override; public: // 击中 virtual bool hitTest(const QPointF& pt) override; // 具体击中实现的函数,单纯击中,不做选项的改变 // nOption用int是因为Rect类的击中选项不一致 // nOption为负值,表示未击中,此时返回false virtual bool _runHitTest(const QPointF& pt, \ int& nOption, int& nSubIndex) override; // 击中后,ButtonUp后的处理 // pt1:鼠标Down点,pt2:鼠标Up点 virtual bool runMove(const QPointF& pt1, const QPointF& pt2) override; public: // 属性填充内容 virtual void fillPtyPano(IxPtyPano* sheet) override; // 成果序列化 virtual void onSerialize(ZxSerializer* ser) override; virtual void onDeserialize(ZxSerializer* ser) override; // 模版处理(从道理上讲,模版处理与成果序列化机制完全一致) // 但此处放开是为了调用方更灵活的控制 virtual void onLoadTempl(ZxSerializer* ser) override; virtual void onSaveTempl(ZxSerializer* ser) override; virtual void paintBack(QPainter* painter, \ const ZxPaintParam& param) override; signals: // 流动模型变更 void sigFlowModelChanged(int model); // 导流能力变更 void sigDfcChanged(double dfc); // 储能比变更 void sigDwChanged(double dw); // 点坐标变更 void sigPointsChanged(); public: int getCrackFlowModel(); void setCrackFlowModel(int newCrackFlowModel); double getCrackDfc(); void setCrackDfc(double newCrackDfc); double getCrackDw(); void setCrackDw(double newCrackDw); // 查找数据指针(通过 Binder 反查) nmDataFracture* getFractureData() const; void setGraphicBinder(nmPlotGraphicBinder* pBinder) { m_pGraphicBinder = pBinder; } double getStartX(); void setStartX(double newValue); double getStartY(); void setStartY(double newValue); double getEndX(); void setEndX(double newValue); double getEndY(); void setEndY(double newValue); // 如果是DFN生成的裂缝,调用该方法禁止修改 void setLockForDFN(); private: QString m_sFlowModel; // 流动模型本地副本 double m_dDfc; // 导流能力本地副本 double m_dDw; // 储能比本地副本 nmPlotGraphicBinder* m_pGraphicBinder; // 图元-数据绑定协调器 };