logplus/OSGDataModel/include/ObjWell.h
2025-11-26 10:21:39 +08:00

220 lines
5.8 KiB
C++
Raw 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.

/**
* @file ObjWell.h
* @brief "井"数据模型
* @date 2014-6-3
* @author: liyonggang
*/
#ifndef PAI_FRAME_OSGWELL_H
#define PAI_FRAME_OSGWELL_H
#pragma warning( push ,0)
#include <vector>
#include <QUuid>
#include "ObjectID.h"
// #include "LineProperty.h"
#include "Well.h"
#include "BaseObject.h"
// #include "ObjWellTrack.h"
#include "BaseFun.h"
#include "ObjWelllogRound.h"
// #include "ObjectViewInfo.h"
#pragma warning( pop )
BEGIN_OSGDATAMODEL_NAMESPACE;
class CObjWellLog;
OSGDATAMODEL_EXPORT CObjWell *GetCurrentObjWell();
OSGDATAMODEL_EXPORT void SetCurrentObjWell( CObjWell *pObjWell );
class OSGDATAMODEL_EXPORT CObjWell/* : public CObjBaseObject*/
{
// Q_OBJECT;
public:
CObjWell();
~CObjWell();
public:
QString GetWellCode() const
{
return m_WellCode;
}
void SetWellCode(QString WellCode)
{
m_WellCode=WellCode;
}
void SaveWellHead(QString filename);
//往井次下加入曲线时根据曲线的类型返回其对应的目录id
QUuid GetTragetFolderID(QUuid aLogTypeid);
//根据folderid找到对应的folder如果没有则创建
// CObjectFolder* GetTragetFolder(QUuid aFolderTypeid);
//获得井次数
int GetWellRoundCount();
// int GetAllWellRound(QList<PaiObject*> &wellroundchildren);
virtual QUuid GetTypeID()const;
// virtual bool Serialize( CObjectArchive &ar );
// virtual bool AddChild(PaiObject* pChild, bool mountNow = true);
// virtual pai::ios::welllog::DataObject *GetDbObject();
/**
* Well的MD得到对应的x,y,z
*/
// bool GetXYZByMD(float fMD,double &x,double &y,double &z );
// bool LoadXYZ(bool isreCreateXYZ=false);
void ClearXYZ();
/**
* Well的点MD对应井口位置的相对位置dx、dy、dz
*/
// bool GetDXDYDZByMD(float fMD,double &dx,double &dy,double &dz );
WellHead &GetWellHead();
/**
* Well log的最上点MD
*/
double GetTopWellLogDepth();
double GetBottomWellLogDepth();
CObjWelllogRound* GetCurrentObjWellRound();
void SetCurrentObjWellRound(CObjWelllogRound*pWellRound);
/**
* Well x,y,z井轨迹信息
*/
// void Compute2DTrajectory(float _HScale=10000,float _VScale=10000);
// void Compute2DTrajectory(float _ProjAngle,double _HorizBoreXE,double _HorizBoreYN,float _HScale=10000,float _VScale=10000);
FLOATPROPERTY & GetDX();
FLOATPROPERTY & GetDY();
float GetDX(float dep);
float GetDY(float dep);
float GetDZ(float dep);
FLOATPROPERTY & GetAngle();
float GetDYToDep(float dy);
float GetDXToDep(float dx);
void SetDX( const FLOATPROPERTY *vDX );
void SetDY( const FLOATPROPERTY *vDX );
void SetAngle(const FLOATPROPERTY *Angle);
DOUBLEPROPERTY & GetX();
DOUBLEPROPERTY & GetY();
DOUBLEPROPERTY & GetZ();
void SetX( const DOUBLEPROPERTY *vX );
void SetY( const DOUBLEPROPERTY *vX );
void SetZ( const DOUBLEPROPERTY *vX );
void SetStartDep(float dep);
void SetEndDep(float dep);
void SetRlev(float rlev);
void SetDepth(float sdep,float edep,float rlev);
float GetStartDep();
float GetEndDep();
float GetRlev();
void SetWellFileName(QString WellName)
{
m_WellFileName=WellName;
}
QString GetWellFileName()
{
CObjWelllogRound *pWR=GetCurrentObjWellRound();
if(pWR) return pWR->GetSlfFileName();
return m_WellFileName;
}
virtual QString GetWellMessageFileName()
{
return m_WellFileName;
}
bool isUsed()
{
return isFLAG;
}
void SetUsed(bool flag)
{
isFLAG=flag;
}
// void SetDepth(CObjWell *pWell);
/**
* 井符号图片
*/
QString GetWellSymbol();
void SetWellSymbol(QString imagef)
{
m_strWellImage=imagef;
}
virtual void SetDBWell(pai::ios::welllog::Well &DbWell);
pai::ios::welllog::Well &GetDBWell();
// virtual void CopyFrom( CBaseObject *pOSGObjectOther );
/**
*@brief 判断井名是否存在
*/
// virtual bool isExistsName(QString name);
/************************************************************************/
/* @brief 得到本井下的对应模板值的井曲线[遍历所有井次,拿到第一条] */
/************************************************************************/
// pai::datamodel::CObjWellLog* GetWellLogByTemplate(const QVariant& templateKey);
/************************************************************************/
/* @brief 得到本井次下的对应模板值的井曲线 */
/************************************************************************/
// pai::datamodel::CObjWellLog* GetWellLogByTemplate(QString wellroundPath,const QVariant& templateKey);
// static int ComputeTrajectory(CObjWell *pWell,QString Slffilename);
private:
/**
* @brief 设置数据所属ID
*/
// void SetBelongID();
private:
//井轨迹x,y,z,MD
FLOATPROPERTY m_vDX;
FLOATPROPERTY m_vDY;
FLOATPROPERTY m_vAngle;
DOUBLEPROPERTY m_vX;
DOUBLEPROPERTY m_vY;
DOUBLEPROPERTY m_vZ;
DOUBLEPROPERTY m_vMD;
WellHead m_WellHead;
double m_StartDep,m_EndDep,m_Rlev;
QString m_strWellImage; //井类型符号
pai::ios::welllog::Well m_DbWell; //Db 里的well对象
QString m_WellFileName;
QString m_WellCode; ///<井编码 API编码
CObjWelllogRound*m_pCurrentWelllogRound;
bool isFLAG;
double m_XYZStartDep,m_XYZEndDep,m_XYZRlev;
public slots:
// void slotWellMessage(QString slffile);
};
/**
* @class CWellViewInfo3DBasemap
* @brief well在3D窗口,Basemap窗口上的viewinfo
*/
// class OSGDATAMODEL_EXPORT CWellViewInfo3DBasemap: public CObjectViewInfo
// {
// Q_OBJECT
// public:
// CWellViewInfo3DBasemap();
// IMPLE_META_PROPERTY();
// GM_PROPERTY_NORMAL( CLineProperty,LineProperty );
// Q_PROPERTY(CLineProperty LineProperty READ GetLineProperty WRITE SetLineProperty );
// GM_PROPERTY_NORMAL( bool,DrawWellPath);
// Q_PROPERTY(bool DrawWellPath READ GetDrawWellPath WRITE SetDrawWellPath );
// };
using namespace pai::datamodel;
END_OSGDATAMODEL_NAMESPACE
#endif