#ifndef SECTIONWELLOBJ_H #define SECTIONWELLOBJ_H #pragma once /************************************************* Function List:  1. virtual void ComputeSize(CPoint2D point); //计算井对象及其包含的道对象大小,CPoint2D point为井的左上角 2. virtual virtual void Add(CDrawObj* pObj); //将对象添加到子对象链表,CDrawObj* pObj为增加的元素 3. virtual void ResetAllObjectsPosition(double offset,CRect8 orig_position); //重新计算井内非道子对象和道内子对象的位置 //double offset为纵向偏移 //CRect8 orig_position为初始位置 4. virtual void RemoveTrackFromGroupList(CTrackObj* pTrack); //把道从所属的组中移除,CTrackObj* pTrack为要移除的道指针 5. virtual void SortTrack(CTrackObj* pMovingTrackObj); //道移动时重新排序位置,CTrackObj* pMovingTrackObj为要移动的道指针 6. virtual virtual void SortTrack(CTrackGroupObj* pMovingGroupObj); //组移动时重新排序位置,CTrackObj* pMovingTrackObj为要移动的组指针 7. virtual void SortTrackGroup(); //重新排列组的位置 8. virtual void DrawTrackHead(CXyDCBase* pDC); //画道头 9. virtual void DrawTrackBodyLine(CXyDCBase* pDC); //画道框 10.virtual void DrawWellHead(CXyDCBase* pDC); //画井头 11.virtual void DrawWellBodyLine(CXyDCBase* pDC); //画井框 12.virtual void Draw(CXyDCBase* pDC); //画井对象 *************************************************/ //井剖面 class AFX_EXT_CLASS CSectionWellObj : public CWellPole { public: CSectionWellObj(); CSectionWellObj(const CRect8& position); virtual ~CSectionWellObj(); CLONE_WELLOBJECT(CSectionWellObj) CSectionWellObj& operator=(CSectionWellObj& wellObj); protected: //初始化参数 virtual void Initialize(); public: //克隆,虚函数 virtual void* CloneElement(void); //重设道头高度(读老版本PCG使用) virtual void ReSetTrackHead(); //重设井头高度(读老版本PCG使用) virtual void ReSetWellHead(); virtual void Serialize(CArchive& ar, const short &ver); //绘制井头边线 virtual void DrawWellHeadLine(CXyDC* pDC); //绘制井体外框 virtual void DrawWellFrameLine(CXyDC* pDC); //绘制井体边线 virtual void DrawWellBodyLine(CXyDC* pDC); virtual BOOL IsWellStyleSimple(); virtual BOOL IsSectionWell() { return TRUE; }; public: virtual int ReadPCG_Well(CFile &fr,CXmlParse &xp, const short& ver); virtual int ReadPCG_Traces(CFile &fr,const short& ver); virtual int ReadPCG_WellColumn(CXmlParse &xp, CFile &fr,const short& ver,CTrackGroup* pTrackGroupParent); virtual int ReadPCG(CFile &fr, const short &ver); virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum); virtual void WritePCG_WellTraces(CFile &fw,int nBaseTabNum ,BOOL bWriteTracks = TRUE); //pcg文件 virtual void WritePCG_Datas(CFile &fw,int nBaseTabNum); //pcg文件中 道数据 virtual void WritePCG_WellColumn(CFile &fw,int nBaseTabNum,CTrackGroup* pTrackGroupParent); //pcg文件中写组合道模板 //DML读写(调PCG读写) //virtual int ReadDML(CFile &fr, const short &ver); //virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum); virtual void WriteDML_WellTraces(CFile &fw,int nBaseTabNum); //pcg文件(目前不用,20251201) //void Read_Tempalte(CFile &fr, const short &ver); public: double m_fDepth; //井完钻井深 CString m_strCategory; //井别 double m_fX; //井纵坐标 double m_fY; //井横坐标 double m_fXRotate; //井纵坐标旋转后的坐标 double m_fYRotate; //井横坐标旋转后的坐标 double m_fBaseDepth; //基准深度(拉平显示的井有这数据,) double m_fHorzDistance;//横向距离 double m_fShowLength; //显示长度 double m_fOffSet; //偏移量 double m_fTopY; //删状图改变仰俯角度时使用 int m_nAlcID; //ID double m_fTempJDepth; //临时拉平深度 double m_fTempDepth; //临时操作深度 double m_deltaY; //每口井y方向上移动的偏移量,层拉平为了回归真实的位置 int m_nTrackRowMax; //道头的最大行数(读老版本PCG使用) public: virtual int ReadPCG_Well(CKXmlParse &xp, const short& ver); virtual int ReadPCG_Traces(CKXmlParse &xp, const short& ver); virtual int ReadPCG_WellColumn(CKXmlParse &xp, const short& ver, CTrackGroup* pTrackGroupParent); virtual int ReadPCG(CKXmlParse &xp, const short &ver); virtual void WritePCG_TableDatas(CFile& fw, int nBaseTabNum); virtual int ReadPCG_TableDatas(CKXmlParse& xp, const short& ver); }; #endif