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.

214 lines
6.7 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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