logplus/WellLogModule/include/PELibraryModule.h

134 lines
4.8 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
#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();
2026-01-23 08:09:11 +08:00
bool ToUnicode(char* szStr);
2026-01-16 17:18:41 +08:00
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;
};