logplus/WellLogModule/include/PELibraryModule.h
2026-01-23 08:09:11 +08:00

134 lines
4.8 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "MemRdWt.h"
#include "CStringType.h"
#include "WellLogDefines.h"
#include <QLibrary>
#include "Module.h"
#include "ParameterItem.h"
#include <QTextEdit>
#include <QDialog>
#define UINT unsigned int
struct DllMessage{
char strDLL[500];
char strDLLFun[500];
char d_strDLLPar[500];
int Type;
char strName[500];
char strTemplate[500];
};
using namespace pai::module;
class WELLLOGMODULE_EXPORT PELibraryModule:public CModule
{
public:
PELibraryModule();
virtual ~PELibraryModule();
QString CreateParamCardFromConfig();
/**
* 验证模块参数是否正确
* @return bool 如果参数合法,返回真,否则返回假
*/
QTextEdit *GetEdit();
void SetEdit(QTextEdit *pEdit);
QString GetParamCardfilename() const { return m_ParamCardfilename; }
bool LoadParamFromInpFile(QString InpParamFile);
virtual bool validate(CModuleCheckResult& moduleCheckResult);
virtual bool validate();
virtual CModule* Clone();
bool ToUnicode(char* szStr);
static QStringList GetNames(std::string names,char split=',',bool removeblank=true);
QString strDLLFun;
QString paramCardNameInSlf;
int runBrunch;//1 代表系统控制模块 2代表自控模块
int iscreatemem;
QString strPlot;
void ChangeZone(CParameterItem *clonedZone);
CParameterItem* GetZoneParameterItem(CParameterItem *clonedZone,QString index,QString Name);
UINT ProcessDLL1(LPVOID nID,float sdep=-99999,float edep=-99999);
UINT ProcessDLL2(LPVOID nID,float sdep=-99999,float edep=-99999);
virtual pai::module::STATUS Run();
virtual pai::module::STATUS Run(double sdep,double edep,char*Zone=NULL);
void* GetModuleHandle() const { return m_ModuleHandle; }
/**
* @brief 获取模块的类名
* @return 模块的类名
*/
virtual std::string GetClassName()
{
return std::string("PELibraryModule_"+this->GetMetaData()->GetID());
}
void AddZone(CCompositeParameterItem* Zones,
QString zone,
QString ZoneParam);
void AddDefaultZone(CCompositeParameterItem* Zones);
void AddLastClonedZone(CCompositeParameterItem* Zones);
QString GetLibraryfilename() const { return m_libraryfilename; }
void SetLibraryfilename(QString val) {
m_libraryfilename = val;
}
bool GetPARAM_TAB();
//将参数卡转换为INP格式的文本字符串供模块使用
virtual void WriteHistory();
QString GetINPParamCard(CMemRdWt *pMemRdWt=NULL,char *pParamName=NULL,bool isSaveToEdit=TRUE);
QString GetSlfFileName() const { return m_slfFileName; }
//得到重定向后的所有输出曲线名,如果没有重定向则采用初始的曲线名
virtual std::string GetRedirectOutputCurveNames();
virtual std::string GetRedirectInputCurveNames();
void SetSlfFileName(QString val) { m_slfFileName = val; }
void SetParamCardfilename(QString val) { m_ParamCardfilename = val; }
bool InitMemRdWt(double sdep,double edep,char*Zone=NULL,bool isSaveCard=true);
void refreshParamsByConfigFile(QStringList &paramSetting);
unsigned short GetZoneCount();
QString ReadParamCardFromSLF(CMemRdWt *pMemRdWt,char *pParamName);
virtual QString LoadINPParamCardFromSLF(CMemRdWt *pMemRdWt=NULL,char *pParamName=NULL);
virtual QStringList GetParamNames();
QString GetINPCardName();
bool LoadParamFromLines(QStringList lines);
//得到模块初始的参数中文名
virtual QStringList GetParamCNNames();
virtual QStringList GetParamOPTIONS(int no);
void GetParamValueByNameInZone( int iWellSectionIndex, const QStringList &strNameList,const QStringList &strGroupList,CON_STRU &sCON);
float GetFloatParam(CModuleParameter * pModulePara,QString &paramName,QString &str);
float GetFloatParamInZone(CModuleParameter * pModulePara,QString& paramName,QString &str);
protected:
virtual QStringList GetInPutCurveNames();
virtual QStringList GetOutPutCurveNames();
struct CON_STRU *DefaultCon;//用于存储最初始的参数值
struct CON_STRU *RunCon;//用于存储最初始的参数值
public:
struct INC_STRU *Inc;
struct OUTC_STRU *Outc;
struct INP_STRU *Inp;
struct OUTP_STRU *Outp;
struct CONC_STRU *Conc;
struct CON_STRU *Con;
struct HD_STRU *Hd;
struct LogType *pLogType;
struct ErrorInf *errorinf;
QDialog *parDialog;
QStringList OriginInNames;
QStringList OriginOutNames;
bool InitModule(QWidget*p=NULL);
bool isEditCard;
void GetDepthAndMX(QString curvename,QVector<float> &sdeps,QVector<float>&edeps,QVector<float>&minVs,QVector<float> &maxVs);
void SetCardParamColor(QTextEdit *);
// void setInsertTextColor(QString search_text,const QColor &color);
private:
void* m_ModuleHandle;
QLibrary Methodlib;
CMemRdWt *m_pMemRdWt;
QString m_libraryfilename;//方法模块库文件的全路径地质
bool InitProcessMessage(struct INC_STRU *Inc,struct OUTC_STRU *Outc,struct CONC_STRU *Conc,struct CON_STRU *Con);
QString m_ParamCardfilename;
bool LoadedDefaultParams;
QString m_slfFileName;//用作方法处理的测井数据文件
QTextEdit *m_pCardpEdit;
};