|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmSubWxs_global.h"
|
|
|
|
|
|
#include "nmDefines.h"
|
|
|
|
|
|
#include "nmParameterField.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <QList>
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
|
|
|
|
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<nmParameterFieldInfo> m_listFields; ///< 分组字段。
|
|
|
|
|
|
bool m_bPerforationGroup; ///< 是否创建射孔选择器。
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 编辑井参数规范目录。
|
|
|
|
|
|
* @note 字段顺序、XML ID和数据属性映射集中在此维护。
|
|
|
|
|
|
*/
|
|
|
|
|
|
class NM_SUB_WXS_EXPORT nmWellParameterCatalog
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
/** @brief 返回指定井型的可见参数分组。 */
|
|
|
|
|
|
static QList<nmWellParameterGroupInfo> 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();
|
|
|
|
|
|
};
|