/** * @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 #include #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 &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