You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
4.5 KiB
C

1 month ago
#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();
1 month ago
CLONE_WELLOBJECT(CSectionWellObj)
CSectionWellObj& operator=(CSectionWellObj& wellObj);
1 month ago
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();
1 month ago
virtual BOOL IsSectionWell() { return TRUE; };
1 month ago
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);
1 month ago
virtual void WritePCG_WellTraces(CFile &fw,int nBaseTabNum ,BOOL bWriteTracks = TRUE); //pcg文件
1 month ago
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);
1 month ago
virtual void WriteDML_WellTraces(CFile &fw,int nBaseTabNum); //pcg文件(目前不用20251201)
1 month ago
//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; //井横坐标旋转后的坐标
1 month ago
1 month ago
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);
1 month ago
virtual void WritePCG_TableDatas(CFile& fw, int nBaseTabNum);
virtual int ReadPCG_TableDatas(CKXmlParse& xp, const short& ver);
1 month ago
};
#endif