#pragma once #include "nmSubWxs_global.h" #include "nmDefines.h" #include "nmParameterField.h" #include #include class nmDataAttribute; class nmDataWellBase; /** @brief 新版编辑井窗口使用的稳定参数标识。 */ enum nmWellParameterId { NM_WELL_PARAMETER_X = 0, ///< 井口X坐标。 NM_WELL_PARAMETER_Y, ///< 井口Y坐标。 NM_WELL_PARAMETER_RADIUS, ///< 井筒半径。 NM_WELL_PARAMETER_STORAGE, ///< 井筒储集系数。 NM_WELL_PARAMETER_BOTTOMHOLE_MD, ///< 井底测量深度。 NM_WELL_PARAMETER_LENGTH, ///< 井身长度。 NM_WELL_PARAMETER_PERFORATION_NAME, ///< 射孔段名称。 NM_WELL_PARAMETER_PERFORATION_MD_START, ///< 射孔起始测量深度。 NM_WELL_PARAMETER_PERFORATION_MD_END, ///< 射孔结束测量深度。 NM_WELL_PARAMETER_PERFORATION_SKIN, ///< 射孔段表皮系数。 NM_WELL_PARAMETER_DRAIN_ANGLE, ///< 水平井排水角度。 NM_WELL_PARAMETER_FRACTURE_COUNT, ///< 水平井裂缝数量。 NM_WELL_PARAMETER_FRACTURE_HALF_LENGTH, ///< 裂缝半长。 NM_WELL_PARAMETER_FRACTURE_ANGLE, ///< 裂缝角度。 NM_WELL_PARAMETER_FRACTURE_HEIGHT, ///< 裂缝高度。 NM_WELL_PARAMETER_FRACTURE_MIDPOINT_HEIGHT, ///< 裂缝中点高度。 NM_WELL_PARAMETER_FRACTURE_WIDTH, ///< 裂缝宽度。 NM_WELL_PARAMETER_FRACTURE_CONDUCTIVITY ///< 裂缝导流能力。 }; /** @brief 编辑井左侧单列参数分组描述。 */ struct NM_SUB_WXS_EXPORT nmWellParameterGroupInfo { /** @brief 创建默认的普通参数分组描述。 */ nmWellParameterGroupInfo(); QString m_sTitle; ///< 当前语言下的分组标题。 QList m_listFields; ///< 分组字段。 bool m_bPerforationGroup; ///< 是否创建射孔选择器。 }; /** * @brief 编辑井参数规范目录。 * @note 字段顺序、XML ID和数据属性映射集中在此维护。 */ class NM_SUB_WXS_EXPORT nmWellParameterCatalog { public: /** @brief 返回指定井型的可见参数分组。 */ static QList createGroups( NM_WELL_MODEL eWellType); /** @brief 将稳定参数标识转换为字符串ID。 */ static QString parameterId(nmWellParameterId eParameterId); /** * @brief 返回字段对应的数据属性,不转移所有权。 * @note 字段不适用于当前井型或射孔索引无效时返回nullptr。 */ static nmDataAttribute* attribute( nmDataWellBase* pWell, const QString& sParameterId, int nPerforationIndex); /** @brief 判断字段是否属于当前射孔段。 */ static bool isPerforationParameter(const QString& sParameterId); private: /** @brief 规范目录仅提供静态方法,不允许创建实例。 */ nmWellParameterCatalog(); };