#pragma once #include "ZxDataObject.h" #include "nmData_global.h" #include class ZxDataProject; class ZxDataWell; class QMutex; // 数值试井数据对象如何进行初始加载的方式 class NM_DATA_EXPORT nmDataUtils : public QObject { public: nmDataUtils(); ~nmDataUtils(); // 对数据对象的children进行外部扩充:ZxDataProject 和 ZxDataWell static bool extendChildrenOfProj(ZxDataProject* pDataProj); static bool extendChildrenOfWell(ZxDataWell* pDataWell); // 删除井时,也需要进行外部扩充式删除(注意:工区Project不需要,只需要井接口) static bool deleteChildrenOfWell(ZxDataWell* pDataWell); static QStringList readNmDataFile(const QString &filePath); /** @brief 返回所有 HX_NWTM.dll 接口共用的进程级互斥锁。 */ static QMutex* getHxNwtmDllMutex(); /** * @brief 调用 HX_NWTM_PLOT 生成双对数和半对数曲线。 * * flowDurations 保存各流动段持续时间;flowSectionIndex 是一基索引。 * 本方法会把当前流动段换算成累计的 tmin/tmax,并统一完成 DLL 加载、 * 接口探测、输入转换和输出校验。 */ static bool calculateHxNwtmPlot( const QVector& flowDurations, const QVector& rates, const QVector& pressureTimes, const QVector& pressures, int flowSectionIndex, const QString& licensePath, QVector >& logLog, QVector >& semiLog, bool* interfaceAvailable = 0, QString* errorMessage = 0); };