|
|
#ifndef TRACKINCURVE_H
|
|
|
#define TRACKINCURVE_H
|
|
|
#pragma once
|
|
|
#include "TrackCurveBase.h"
|
|
|
#include "Data/DataObj_Curve.h"
|
|
|
|
|
|
class CWellPole;
|
|
|
class CTrackCurve;
|
|
|
//class CTrackInCurveCross;
|
|
|
//class CTrackInCurveSegment;
|
|
|
|
|
|
//多条移动曲线对象(用来保存移动曲线对象)
|
|
|
//typedef TObjectList<CTrackInCurveSegment>CCurveSegmentList;
|
|
|
//typedef CArray<double, double> DOUBLEARR;
|
|
|
|
|
|
class AFX_EXT_CLASS CTrackCurve : public CTrackCurveBase
|
|
|
{
|
|
|
public:
|
|
|
CTrackCurve();
|
|
|
virtual ~CTrackCurve();
|
|
|
CTrackCurve(const CRect8& position);
|
|
|
public:
|
|
|
virtual CWellDataObj* GetDataObj() { return &m_dataObj; }
|
|
|
virtual void SetDataObj(CWellDataObj* pData, BOOL bCopy=TRUE);
|
|
|
virtual void GetDataValue(double& dmin, double& dmax);
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
//设置曲线对象
|
|
|
virtual void CalculateSize(CPoint2D point);
|
|
|
|
|
|
virtual void CurveToNewPos();
|
|
|
//画左右刻度
|
|
|
virtual void DrawTitleLeftAndRightContent(CXyDC* pDC, CString left, CString right, GDFLOGFONTEXT logfont,CRect8 rect);
|
|
|
|
|
|
//画曲线
|
|
|
virtual void DrawCurveLine(CXyDC* pDC,CCurveEx& curve,GDFLOGPENEXT logpen);
|
|
|
|
|
|
virtual BOOL ReadCurveData(BOOL bInit=TRUE);
|
|
|
|
|
|
virtual void ComputePoints();
|
|
|
|
|
|
//计算斜井曲线上的所有点数组
|
|
|
virtual void ComputePointsInclined();
|
|
|
|
|
|
//根据深度值获得曲线值
|
|
|
virtual BOOL GetCurveValue(double dDepth, double& dValue, int& nBegin);
|
|
|
virtual double GetCurveValue(int index);
|
|
|
virtual double GetCurveDepth(int index);
|
|
|
|
|
|
//////从工区导入数据时创建道内子对象
|
|
|
void BuidChildObject(vector<CString> &fields, StringVectorSet &datas, BOOL bInit=FALSE);
|
|
|
/////获取道内对象的具体内容
|
|
|
virtual void GetChildDatas(StringVectorSet &dataContent, BOOL bHaveWellName);
|
|
|
|
|
|
void BuidChildObject(double *pDepth,double *pData,int datanum,BOOL bInit);
|
|
|
|
|
|
virtual void ClearCurveData();
|
|
|
public:
|
|
|
//读pcg格式的数据
|
|
|
virtual int ReadPCG_Data(CFile &fr,const short& ver);
|
|
|
//读取pcg 多井剖面对比中曲线CurveStyle
|
|
|
virtual int ReadPCG_SelfSection(CFile &fr,CXmlParse& xp,const short& ver);
|
|
|
|
|
|
//写pcg格式的道内数据
|
|
|
virtual void WritePCG_Data(CFile &fw,int nBaseTabNum);
|
|
|
|
|
|
void CaculateStartAndEnd(CWellPole *pWellObj);
|
|
|
public:
|
|
|
CWellDataObj_Curve m_dataObj; // 曲线原始数据
|
|
|
int m_nStatid; //反卷状态标志,statid=0,表示初始状态,statid=1,表示正常状态,statid=2表示反卷状态或截断
|
|
|
////从工区读取数据或者将数据导入道工区时使用
|
|
|
CString m_strOperationNum; //施工号
|
|
|
CString m_strVersionNum; //版本号
|
|
|
|
|
|
//TObjectList<CTrackInCurveCross> m_CurveCrossList;//与本曲线关联的交会图交互对象
|
|
|
|
|
|
virtual int ReadPCG_Data(CKXmlParse& xp, const short& ver);
|
|
|
//读取pcg 多井剖面对比中曲线CurveStyle
|
|
|
virtual int ReadPCG_SelfSection( CKXmlParse& xp, const short& ver);
|
|
|
|
|
|
virtual void GetChildDatas(CString& jsonStr);
|
|
|
virtual BOOL SetChildDatas(CString& jsonStr);
|
|
|
};
|
|
|
//
|
|
|
//class AFX_EXT_CLASS CTrackInCurveSegment : public CDrawTopEndObj
|
|
|
//{
|
|
|
//protected:
|
|
|
// //DECLARE_SERIAL(CTrackInCurveSegment);
|
|
|
//
|
|
|
//public:
|
|
|
// CTrackInCurveSegment();
|
|
|
// ~CTrackInCurveSegment();
|
|
|
// CTrackInCurveSegment(const CRect8& position);
|
|
|
//
|
|
|
//public:
|
|
|
// CTrackCurve* m_pCurve; // 曲线指针
|
|
|
//
|
|
|
//public:
|
|
|
// //对比所选曲线和标准特征曲线
|
|
|
// double Curve_ContrastCurve();
|
|
|
//
|
|
|
//public:
|
|
|
// virtual void DrawCurveSegment(CXyDC* pDC);
|
|
|
// virtual void Draw(CXyDC* pDC);
|
|
|
// virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
//};
|
|
|
//
|
|
|
//class AFX_EXT_CLASS CTrackInCurveSegmentContainer : public CDrawTopEndObj
|
|
|
//{
|
|
|
//protected:
|
|
|
// //DECLARE_SERIAL(CTrackInCurveSegmentContainer);
|
|
|
//
|
|
|
//public:
|
|
|
// CTrackInCurveSegmentContainer();
|
|
|
// ~CTrackInCurveSegmentContainer();
|
|
|
// CTrackInCurveSegmentContainer(const CRect8& position);
|
|
|
//
|
|
|
// CCurveSegmentList m_CurveSegmentList; // 曲线段链表
|
|
|
//
|
|
|
//public:
|
|
|
// //设置曲线对象
|
|
|
// virtual void CalculateSize(CPoint2D point);
|
|
|
//
|
|
|
//// Implementation
|
|
|
//public:
|
|
|
// virtual void MoveTo(CRect8& position);
|
|
|
// virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
// virtual CPoint2D GetHandle(int nHandle);
|
|
|
// virtual int GetHandleCount();
|
|
|
// virtual void MoveHandleTo(int nHandle, CPoint2D point);
|
|
|
// virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
|
|
|
// virtual void Draw(CXyDC* pDC);
|
|
|
//};
|
|
|
//
|
|
|
///*交会图的通知函数接口,如果想接收交会图的信息,就可以继承这个接口,并实现其函数。
|
|
|
//*/
|
|
|
//class CCurveCrossInterface
|
|
|
//{
|
|
|
//public:
|
|
|
// enum NotifyCode
|
|
|
// {
|
|
|
// CurveAllName, //通知对方确定了曲线名称的参数
|
|
|
// ChangeSelDataArea ,//交会图的圈点区域发生变化
|
|
|
// SelectCrossPic, //通知对方选择了新的交会图
|
|
|
// DeleteCrossPic, //本交会图已经退出了
|
|
|
// ChangeSelDataColor //交会图的圈点区域颜色变化
|
|
|
// };
|
|
|
//
|
|
|
// virtual void CrossNotify(BYTE *pDataBuf, int BufSize) = 0;
|
|
|
//};
|
|
|
//
|
|
|
////CTrackInCurveCross是曲线道内的对象,关联一个相关的交会图对象,并与交会图实现互动
|
|
|
//class AFX_EXT_CLASS CTrackInCurveCross: public CDrawObj , public CCurveCrossInterface
|
|
|
//{
|
|
|
// //DECLARE_SERIAL(CTrackInCurveCross);
|
|
|
//
|
|
|
//public:
|
|
|
// CTrackInCurveCross(void);
|
|
|
// ~CTrackInCurveCross(void);
|
|
|
// CTrackInCurveCross(const CRect8& position);
|
|
|
//
|
|
|
//public:
|
|
|
// BOOL m_MoveDepId; //移动的深度段Id
|
|
|
// int m_iShowMode ; //按照曲线道显示1=曲线道,2=井段
|
|
|
//
|
|
|
// DOUBLEARR m_fsdepArr; //井段起始深度
|
|
|
// DOUBLEARR m_fedepArr; //井段结束深度
|
|
|
// CArray<CRect8, CRect8>m_RectArr;
|
|
|
// int m_PosInTrackNum; //当前交会图关联的曲线分布在几个道中,最大是3
|
|
|
// int m_PosTrackIdArr[3];
|
|
|
//
|
|
|
// CString m_curve_name[3];
|
|
|
// CTrackCurve* m_pCurve[3];
|
|
|
//
|
|
|
// //CrossplotSpace::CCPCrossPic *m_pCrossPic;
|
|
|
// CDialog* m_pDialog;
|
|
|
// BOOL m_bActive; //是否是当前活动的交会图对象
|
|
|
//
|
|
|
// int m_SelId ; //当前选中的深度段信息
|
|
|
//
|
|
|
// static LPVOID c_pSCurPtr; //在关联的交会图中,当前选中的图所对应的交互对象,
|
|
|
//
|
|
|
// CArray <Struct_CrossSelDataDepth*, Struct_CrossSelDataDepth *> m_SeldepthArr;
|
|
|
//
|
|
|
//public:
|
|
|
// void Initialize();
|
|
|
// void ResetAlldepth(DOUBLEARR & fsdepArr, DOUBLEARR &fedepArr);
|
|
|
// void InitObjFromParam(CStringArray & curveName, CWellObj *pWellObj, DOUBLEARR & fsdepArr, DOUBLEARR &fedepArr);
|
|
|
//
|
|
|
// void ChangeCrossdepth(); //井段的个数发生变化,修改交会图的深度
|
|
|
//
|
|
|
// virtual void CrossNotify(BYTE *pDataBuf, int BufSize); //接收到交会图来的通知信息.
|
|
|
//
|
|
|
// virtual CPoint2D GetHandle(int nHandle);
|
|
|
// virtual int GetHandleCount();
|
|
|
// virtual void MoveTo(CRect8& position);
|
|
|
// virtual void MoveHandleTo(int nHandle, CPoint2D point);
|
|
|
// virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
|
|
|
// virtual void Draw(CXyDC* pDC);
|
|
|
// //virtual BOOL RemoveSelection();
|
|
|
// virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
//
|
|
|
//
|
|
|
// //给一个交会图添加深度,返回深度的Id,pTrack是所在道,当初始时,使用它
|
|
|
// int AddWellSecPos(const CRect8 & position, CTrackCurve* pTrack = NULL);
|
|
|
//
|
|
|
// void MoveWithCurve(CTrackCurve *pCurve);//曲线位置发生变化,本对象随之更改
|
|
|
// void ReSetOneCurvePos(int id); //计算某个曲线相关对象的位置,id 是曲线ID
|
|
|
//
|
|
|
// void ReSetAllCurvePos(); //整理所有的曲线的位置
|
|
|
//};
|
|
|
|
|
|
#endif
|