logplus/OSGDataModel/include/ObjWell.h

220 lines
5.8 KiB
C
Raw Normal View History

/**
* @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对应井口位置的相对位置dxdydz
*/
// 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