You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/iData/iXmlManager/Models/iModelInfoBase.h

144 lines
5.2 KiB
C

#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;