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/nmNum/nmData/nmDataLayer.h

67 lines
2.9 KiB
C

#ifndef NMDATALAYER_H
#define NMDATALAYER_H
#include "nmData_global.h"
#include "nmDefines.h"
#include "nmDataAttribute.h"
#include <QColor>
// 工程持久化的单层几何数据,用于剖面展示和井深定位,不提供求解器的储层厚度 h。
// 顶深、底深和几何厚度均以米保存;对象由 DataManager 拥有。
// 界面编辑使用 nmLayerGeometry 值快照,不能直接修改这里的对象。
class NM_DATA_EXPORT nmDataLayer : public nmDataBase
{
Q_OBJECT
public:
// 默认对象尚未具备有效几何,创建方需完整设置顶深、底深和厚度。
nmDataLayer();
// 只复制业务字段;QObject 身份、父对象和信号连接不从源对象复制。
nmDataLayer(const nmDataLayer &other);
virtual ~nmDataLayer();
// 替换业务字段但保留当前 QObject 身份,调用方仍负责几何一致性。
nmDataLayer &operator = (const nmDataLayer &other);
// 按原始米制值序列化,名称以 UTF-8 写入;字符串内存由传入的 JSON 分配器持有。
virtual rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const override;
// 兼容旧工程缺少 name 字段;读取时不重排边界,保留原始几何供后续检查。
virtual void FromJsonValue(const rapidjson::Value& jsonValue) override;
virtual QString getTableName();
virtual QString type() const;
// 层名称随工程保存;旧工程没有名称时保持空串,由显示端提供默认名称。
void setName(const QString& value);
QString getName() const;
// 几何访问器只读写各自字段,不联动其他边界,也不发出 Manager 的数据变化通知。
// 修改前应通过 nmLayerGeometry 校验,持久化时再整体设置这三个米制值。
void setTop(double value);
double getTop() const;
void setBottom(double value);
double getBottom() const;
void setThickness(double value);
double getThickness() const;
// 历史命名沿用旧格式:表示与下一层分离,不是当前表格的选中状态。
void setIsChecked(bool value);
bool getIsChecked() const;
// 颜色属于层的显示属性,与深度、厚度和求解物性无关。
void setColor(const QColor& value);
QColor getColor() const;
private:
QString m_sName; // 持久化名称;旧工程未提供时保留空串。
double m_dTopDepth; // 层顶深,单位 m;保存原始值,不随界面显示单位变化。
double m_dBottomDepth; // 层底深,单位 m;有效几何中等于顶深加层自身厚度。
double m_dThickness; // 层自身几何厚度,单位 m;有效值大于零,不含间隙,与求解厚度 h 独立。
bool m_bLegacyGap; // 旧格式中与下一层分离的标志,保留用于读写兼容。
QColor m_clrLayer; // 层填充颜色,含透明度;随工程保存,不参与几何或求解物性计算。
};
#endif // NMDATALAYER_H