#pragma once #include "MemRdWt.h" #include "CStringType.h" #include "WellLogDefines.h" #include #include "Module.h" #include "ParameterItem.h" #include #include #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 ¶mSetting); 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 ¶mName,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 &sdeps,QVector&edeps,QVector&minVs,QVector &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; };