|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "Defines.h"
|
|
|
|
|
|
#include "iXmlBaseItem.h"
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 模型信息基础
|
|
|
|
|
|
class I_XMLMANAGER_EXPORT iModelInfoBase : public iXmlBaseItem
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 20260210 为了支撑干扰,以便后续扩展其它,所以改变原有的多层模式,为Flag
|
|
|
|
|
|
// 注意:这个定义只有内部启用,对应的是Model模型XML定义文件之中
|
|
|
|
|
|
enum mibFlags
|
|
|
|
|
|
{
|
|
|
|
|
|
// 无标志
|
|
|
|
|
|
flagNone = 0,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否:支持多层(默认不支持)
|
|
|
|
|
|
// 对应的是 多层模型(数字Flag+1)
|
|
|
|
|
|
flagMultiLayer = 0x00000001,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否:支持干扰(默认不支持)
|
|
|
|
|
|
// 对应的是 干扰模型(数字Flag+2)
|
|
|
|
|
|
flagInterfere = 0x00000002,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否:带边界中的顶底属性(默认不支持)
|
|
|
|
|
|
// 对应的是 自动在解释参数中,增加 顶边界、底边界(数字Flag+4)
|
|
|
|
|
|
flagBdyNeeded = 0x00000004,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否支持:启动压力梯度(默认不支持)
|
|
|
|
|
|
// 对应的是 模型选项对话框左下角是否可以勾选(数字Flag+8)
|
|
|
|
|
|
flagPressGrad = 0x00000008,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否支持:动态渗透率(默认不支持)
|
|
|
|
|
|
// 对应的是 模型选项对话框左下角是否可以勾选(数字Flag+16)
|
|
|
|
|
|
flagDynamicK = 0x00000010,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否支持:小信号(默认不支持)
|
|
|
|
|
|
// 对应的是 模型选项对话框左下角是否可以勾选(数字Flag+32)
|
|
|
|
|
|
flagSmallSignal = 0x00000020,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否支持:应力敏感(默认不支持)
|
|
|
|
|
|
// 对应的是 模型选项对话框左下角是否可以勾选(数字Flag+64)
|
|
|
|
|
|
flagStressSensitive = 0x00000040,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否支持:吸附(默认不支持)
|
|
|
|
|
|
// 对应的是 模型选项对话框左下角是否可以勾选(数字Flag+128)
|
|
|
|
|
|
flagAdsorption = 0x00000080,
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否是:产能模式(默认不支持)
|
|
|
|
|
|
// 对应的是 是否产能试井,注意,与其它所有标识互斥(数字Flag+256)
|
|
|
|
|
|
// 该方案放在此处只是一种权宜之计
|
|
|
|
|
|
flagWDT = 0x00000100, //(数字Flag+256)
|
|
|
|
|
|
|
|
|
|
|
|
// 该模型选项是否支持:扩展1~6(默认不支持)
|
|
|
|
|
|
flagExt2 = 0x00000200, //(数字Flag+512)
|
|
|
|
|
|
flagExt3 = 0x00000400, //(数字Flag+1024)
|
|
|
|
|
|
flagExt4 = 0x00000800, //(数字Flag+2048)
|
|
|
|
|
|
flagExt5 = 0x00001000, //(数字Flag+4096)
|
|
|
|
|
|
flagExt6 = 0x00002000, //(数字Flag+8192)
|
|
|
|
|
|
|
|
|
|
|
|
// 待定
|
|
|
|
|
|
flagUnknown = 0x00000200
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
iModelInfoBase(QObject* parent = 0);
|
|
|
|
|
|
~iModelInfoBase();
|
|
|
|
|
|
|
|
|
|
|
|
// 把List分配到成员变量
|
|
|
|
|
|
// 输入开始的m_listValues中index,并且返回下一个index
|
|
|
|
|
|
virtual int allocateInfo(int nIndex);
|
|
|
|
|
|
|
|
|
|
|
|
// 备份恢复
|
|
|
|
|
|
virtual bool saveBk();
|
|
|
|
|
|
virtual bool restoreBk();
|
|
|
|
|
|
|
|
|
|
|
|
// 序列化
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
|
|
|
|
|
|
// Super其实就是Parent,只是QObject本身有了Parent接口
|
|
|
|
|
|
// 没有直接用QObject的parent接口原因是,其child接口不太友好,不方便应用
|
|
|
|
|
|
//virtual iModelInfoBase* getSuper();
|
|
|
|
|
|
//virtual void setSuper(iModelInfoBase* p);
|
|
|
|
|
|
|
|
|
|
|
|
// 标识开启(对应界面上√)
|
|
|
|
|
|
bool isFlagOpen(mibFlags flags) const;
|
|
|
|
|
|
void setFlagOpen(mibFlags flags, bool bOpen);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
virtual void initXmlTags();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
QString m_sAlias; //中文名称
|
|
|
|
|
|
QString m_sFullAlias;//比如:直井·部分打开·有限导流
|
|
|
|
|
|
QString m_sIcon; //图标
|
|
|
|
|
|
QString m_sFig; //图片
|
|
|
|
|
|
QString m_sTips; //备注
|
|
|
|
|
|
|
|
|
|
|
|
// 20171120添加
|
|
|
|
|
|
// m_listTags << "NotFitted" << "UseMode" << "ExtInfos";
|
|
|
|
|
|
bool m_bNotFitted; //不参与拟合,界面上灰色显示
|
|
|
|
|
|
ParaUseMode m_oUseMode;// 应用场合:ParaUseMode
|
|
|
|
|
|
QStringList m_listExtInfos;//下拉内容
|
|
|
|
|
|
// 如: "封闭;气顶" "封闭;底水"
|
|
|
|
|
|
// 请注意 半角;分割
|
|
|
|
|
|
|
|
|
|
|
|
// 目前仅仅针对聚合物有效,
|
|
|
|
|
|
// 即聚合物中增加了 常规模型 的油藏类型
|
|
|
|
|
|
// 即 常规模型 对于 聚合物来讲,属于Brother
|
|
|
|
|
|
bool m_bBrother;
|
|
|
|
|
|
|
|
|
|
|
|
// 与其它参数的关系验证,如 Alias="二区半径" ValidateStr="GT:R1"
|
|
|
|
|
|
QString m_sValidateStr;
|
|
|
|
|
|
|
|
|
|
|
|
// 20240814增加层级支持,临时,不涉及序列化
|
|
|
|
|
|
//QVector<iModelInfoBase*> m_vecChildren;
|
|
|
|
|
|
//iModelInfoBase* m_pParent;
|
|
|
|
|
|
|
|
|
|
|
|
// 20240930新增,暂时不涉及xml文件节点的解析
|
|
|
|
|
|
QVariant m_oValue; //数值(支持类型不限,后续需要完善)
|
|
|
|
|
|
bool m_bValid; //是否有效
|
|
|
|
|
|
bool m_bVisible; //是否可见
|
|
|
|
|
|
//新增码对外接口例如Wel010001西安
|
|
|
|
|
|
QString m_sExiID;
|
|
|
|
|
|
//新增节点 是否带边界中的顶底属性
|
|
|
|
|
|
//bool m_bAddBdy;// 20260210 合并
|
|
|
|
|
|
|
|
|
|
|
|
// 新增属性,是否支持多层模型
|
|
|
|
|
|
//bool m_bSupportedML;
|
|
|
|
|
|
// 20260210 为了支撑干扰,以便后续扩展其它,所以改变原有的多层模式,为Flag
|
|
|
|
|
|
mibFlags m_oFlags;
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef QVector<iModelInfoBase*> vecModelInfoBasesPtr;
|