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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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