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.

399 lines
16 KiB
C

1 month ago
#pragma once
#include "WellStructDefine.h"
#include "WellClassObjGroup.h"
#include "TrackObj.h"
#include "TrackGroup.h"
#include "Data/DataObj_Curve.h"
///<2F><><EFBFBD><EFBFBD><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct TrajectoryMeasurePoint
{
double fMeasureDepth; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3BEAE>
double fMeasureAzimuth; //<2F><><EFBFBD><EFBFBD><EFBFBD>㷽λ<E3B7BD><CEBB>
double fMeasureBevel; //<2F><><EFBFBD><EFBFBD><EFBFBD>б<E3BEAE><D0B1>
};
typedef CArray<TrajectoryMeasurePoint> MeasurePointArr;
class AFX_EXT_CLASS CWellPole : public CTrackGroup //CWellClassObjGroup
{
friend class CTrackObj;
public:
CWellPole();
CWellPole(const CRect8& position);
virtual ~CWellPole();
public:
CRect8 GetHeadRect() { return m_HeadRect; };
double GetTotalWellColumnLen();//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
EWellType m_eWellType;
void SetWellType(EWellType type) { m_eWellType = type; };
EWellType GetWellType() { return m_eWellType; }
public:
virtual int Read(CFile& fr, const short& ver);
virtual void Write(CFile& fw, const short& ver);
virtual void* CloneElement(void);
virtual CBaseExtend* CreateClone();
void operator=(CWellPole &wellObj);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>
void SetDepthProportion(double p) { m_fProportion = p; }
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>
double GetDepthProportion(void) { return m_fProportion; }
struct well_interval
{
double top;
double bottom;
double Spacedis;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>εļ<CEB5><C4BC><EFBFBD> ,<2C><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>
well_interval() { Spacedis = 100; }
};
std::vector<well_interval> *GetIntervalVec() { return &m_WellIntervalVec; }
void AddWellInterval(double top, double bottom, double Spacedis = 100);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>εļ<CEB5><C4BC><EFBFBD> ,<2C><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>
int GetIntervalID(double depth); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȵõ<C8B5><C3B5><EFBFBD><EFBFBD>ȶ<EFBFBD>ID
double GetIntervalLength(int interId);//
double GetIntervalBottom(int interId);
double GetIntervalTop(int interId);
double GetIntervalSpaceDis(int interId); //ij<><C4B3><EFBFBD><EFBFBD><EFBFBD>εĿհ׼<D5B0><D7BC><EFBFBD>
void SetIntervalTop(int interId, double top);
void SetIntervalBottom(int interId, double bottom);
void SetIntervalSpaceDis(int interId, double spaceDis);
double GetTotalWellLength();//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3>ȵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
double GetTotalSpacedis();
int GetDepthInWell(double posY, double & retdepth); //<2F><>λ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ȡ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD>id<69>š<EFBFBD><C5A1><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>
int GetPosIntervalID(double posY, int &preId);////<2F><>λ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ֵ<EFBFBD><D6B5>-1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;preId<49><64>ָǰһ<C7B0><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>-1,preID>-1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>preID<49><44>preID+1֮<31><D6AE>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flags
enum WellFlags
{
WellFlagTitle = 0x0001, // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WellFlagHeadBounds = 0x0002, // <20><>ʾ<EFBFBD><CABE>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
WellFlagBodyBounds = 0x0004, // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WellFlagTrace = 0x0008, // <20><>ʾ<EFBFBD><CABE><EFBFBD>
WellFlagLeftView = 0x0010, // <20><><EFBFBD><EFBFBD>
WellFlagTrackCorra = 0x0020, // <20><>бУ<D0B1><D0A3>
WellFlagShowDepth = 0x0040, // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
WellFlagShow = 0x0080 // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
protected:
std::vector<well_interval> m_WellIntervalVec;
protected:
void Init();
protected:
DWORD m_nWellFlags; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
CString m_strWellName;
CString m_strSymbolProvider;
public:
GDFLOGPENEXT m_penTrack; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GDFLOGPENEXT m_penGridMajor; // <20><><EFBFBD≯<EFBFBD><CCB8>߱<EFBFBD>
GDFLOGPENEXT m_penGridMinor; // <20>ο̸<CEBF><CCB8>߱<EFBFBD>
GDFLOGFONTEXT m_fontTrack; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
//LOGFONT m_lfontTrack;
GDFLOGFONTEXT m_fontHeadMark; // <20><>ͷ<EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>
// LOGFONT m_lfontHeadMark;
GDFLOGFONTEXT m_fontGridMark; // <20><><EFBFBD>ȿ̶<C8BF><CCB6><EFBFBD><EFBFBD><EFBFBD>
// LOGFONT m_lfontGridMark;
double m_fMajorSpace; // <20><><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
double m_fMinorSpace; // <20><><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
double m_fProportion; // <20><><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>
double m_fLevel; // <20><><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
double m_fMarginLR; // <20><><EFBFBD>ҿհ׷<D5B0>Χ (<28>Ժ<EFBFBD><D4BA>׼<EFBFBD><D7BC><EFBFBD>)
double m_fMarginTB; // <20><><EFBFBD>¿հ׷<D5B0>Χ
double m_dSdep;
double m_dEdep;
double m_dDepthRatio;
double m_dLevel;
double m_dHeightWellHead; // <20><>ͷ<EFBFBD>߶<EFBFBD>
double m_dHeightTrackHead; // <20><>ͷ<EFBFBD>߶<EFBFBD>
double fHighTableHead; // ͷ<><CDB7><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
double fHighTableFoot; // β<><CEB2><EFBFBD><EFBFBD><EFBFBD>߶ȣ<DFB6>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
CPoint2D m_TraceStartPt; // <20><EFBFBD><ECBCA3>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double m_HeadLineAngle; // <20><>ͷ<EFBFBD><CDB7>ת<EFBFBD>Ƕȣ<C7B6><C8A3><EFBFBD>ʱ<EFBFBD><CAB1>
double m_level_proportion; //ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD> (<28>漰dml,pcg<63>ļ<EFBFBD><C4BC>Ķ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD>ʱ<EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>б<EFBFBD><D0B1>,<2C><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD>洢ƫת<C6AB><D7AA><EFBFBD>ľ<EFBFBD>ͷ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EABCB0><EFBFBD>ĵ㣬<C4B5>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD>(ÿ<>ξ<EFBFBD>sizeʱ<65><CAB1><EFBFBD><EFBFBD>)
CCurveEx m_HeadCurve;
INCLINEDWELLSTRUCTLIST m_InclinedWellList;
int m_nXjDataType; //б<><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL m_bResForm;
CString m_CopyrightName;
protected:
TRACKLIST TrackObjListTmp; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
DWORD nFlagsActionTmp; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>أ<EFBFBD>дģ<D0B4><EFBFBD><E5A1A2><EFBFBD>ݵ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
public:
double GetTrackHeadHigh();
void SetWellName(CString strName) {m_strWellName = strName;};
CString GetWellName() { return m_strWellName; }
CCurve& GetWellHeadCurve() { return m_HeadCurve; };
//<2F><>д<EFBFBD><D0B4>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Χ
virtual void GetRange(CRect8& range);
virtual CRect8 GetRect(void);
//<2F><><EFBFBD><EFBFBD><E3BEAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
virtual void CalculateSize(CPoint2D point);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//virtual void Add(CObjectBase* pObj);
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void AddObjTitle();
//<2F><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ڷǵ<DAB7><C7B5>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
virtual void ResetAllObjectsPosition(double offset, CRect8 orig_position);
virtual void AddTrack(CTrackObj* pTrackObj);
//virtual void SetParentObj(CObjectBase * pobjParent);
//<2F><>ȫ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void SetPenWell(GDFLOGPENEXT& pen);
virtual void SetFontWell(GDFLOGFONTEXT& font);
virtual void SetPenTrack(GDFLOGPENEXT& pen);
virtual void SetPenGrid(GDFLOGPENEXT& penmajor, GDFLOGPENEXT& penminor);
virtual void SetFontTrack(GDFLOGFONTEXT& font, BOOL bReplaceClr = TRUE);
virtual void SetFontHeadMark(GDFLOGFONTEXT& font, BOOL bReplaceClr = TRUE);
virtual void SetFontGridMark(GDFLOGFONTEXT& font);
virtual void SetSpace(double major, double minor);
virtual void SetTitle(CString text, BOOL bShow = TRUE);
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>ֵ
virtual void SetWellFlags(DWORD flags);
virtual void SetShowTitle(BOOL bFlag);
virtual void SetShowHeadBounds(BOOL bFlag);
virtual void SetShowBodyBounds(BOOL bFlag);
virtual void SetShowTrace(BOOL bFlag);
virtual void SetLeftView(BOOL bFlag);
virtual void SetTrackCorra(BOOL bFlag);
virtual void SetShowDepth(BOOL bFlag);
virtual void SetShow(BOOL bFlag);
virtual DWORD GetWellFlags();
virtual BOOL IsShowTitle();
virtual BOOL IsShowHeadBounds();
virtual BOOL IsShowBodyBounds();
virtual BOOL IsShowTrajectory();
virtual BOOL IsLeftView();
virtual BOOL IsTrackCorra();
virtual BOOL IsShowDepth();
virtual BOOL IsShow();
//<2F><><EFBFBD><EFBFBD><E8BEAE><EFBFBD><EFBFBD>
virtual void ReSetWellTitle();
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void ReSetCurveCrossPos();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><E4BBAF><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void ResetCurveCrossWelldepth();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void ClearAllCurveBlock();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>
CTrackCurve *GetObjCurveFromName(CString curveName);
//<2F><><EFBFBD>ҵ<EFBFBD><D2B5>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(<28><><EFBFBD><EFBFBD>ֵ0<D6B5><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FindTrackPosition(CTrackObj* pMovingTrackObj, CPoint2D& ptBegin, CPoint2D& ptEnd);
CTrackObj* FindDataRefTrackPcg(LPCTSTR lpszDataRef, BOOL bAdd);
////<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD><EFBFBD>
virtual void DrawTrackHead(CXyDC*pDC);
//<2F><><EFBFBD>ƾ<EFBFBD>ͷ<EFBFBD><CDB7>ʾ<EFBFBD><CABE><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>
virtual void DrawWellHead(CXyDC* pDC);
//<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><E5A3AC><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void DrawWellBody(CXyDC* pDC);
//<2F><><EFBFBD>ƾ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
virtual void DrawWellHeadLine(CXyDC* pDC);
//<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void DrawWellBodyLine(CXyDC* pDC);
//<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD><EFBFBD>
virtual void DrawWellFrameLine(CXyDC* pDC);
////<2F><><EFBFBD>ƾ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
virtual void DrawWellHeadFrameLine(CXyDC* pDC);
virtual void DrawWellBodyFrameLine(CXyDC* pDC);
virtual void Draw(CXyDC* pDC);
///<2F>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>еĵ<D0B5>
// virtual BOOL IsInTrackGroup(CTrackGroup* pTrackGroup, CTrackObj* pTrack);
//<2F><><EFBFBD><EFBFBD>ͷβ<CDB7><CEB2><EFBFBD><EFBFBD>
//virtual void DrawTableHead(CXyDC* pDC);
//virtual void DrawTableTail(CXyDC* pDC);
//<2F><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual int HitTest(CPoint2D point, double dHandleSize, BOOL bSelected);
virtual int GetHandleCount();
virtual CPoint2D GetHandle(int nHandle);
virtual void MoveChildren();//<2F>ƶ<EFBFBD><C6B6>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
virtual void MoveTo(CRect8& position);
virtual void MoveHandleTo(int nHandle, CPoint2D point);
virtual CWellBaseObj* ObjectAt(const CRect8& rect, double dHandleSize, BOOL bNesting = FALSE);
virtual void Serialize(CArchive& ar, const short &ver);
/* ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>(<28>ǻ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D7AA> */
double DepthToScreenY(double dDepth /* ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m */); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תΪ<D7AA><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD>λ<EFBFBD>á<EFBFBD>
double ScreenYToDepth(double dY); //<2F>߼<EFBFBD>λ<EFBFBD><CEBB>תΪ<D7AA><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>
double HeightToScreenCY(double dHeight /* <20>߶<EFBFBD>m */); // <20><><EFBFBD><EFBFBD>mתΪ<D7AA><CEAA><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
double ScreenCYToHeight(double dCY); //<2F>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򳤶<EFBFBD>mi
////<2F><><EFBFBD>ݾ<EFBFBD><DDBE>ڵ<EFBFBD><DAB5>Ŀ<EFBFBD><C4BF>ȼ<EFBFBD><C8BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
virtual double ComputeWellWidth();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD>
virtual void ComputeReadTrackEnd();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>߶<EFBFBD>
virtual void ReSetTrackHead();
//<2F><><EFBFBD>辮ͷ<E8BEAE>߶<EFBFBD>
virtual void ReSetWellHead();
//Ӧ<><D3A6>ģ<EFBFBD><C4A3>
TRACKLIST& GetTemplateList();
virtual void ApplingTemplate(BOOL bFlag = FALSE, double dOldTrackHead = 0.0, double dOldWellHead = 0.0);
void ApplingTemplate(PCG_WELLCOLARRAY & wellColArr);
void ApplingTemplate(PCG_WELLTEMPCOL* pWellColParent, CTrackGroup* pParentGroup);
double GetHeadLineAngle() { return m_HeadLineAngle; }
CPoint2D & GetTraceStartPt() { return m_TraceStartPt; };
void SetRotateHeadAngleDC(CXyDC *pDC);
void RecoverRotateHeadAngleDC(CXyDC *pDC);
virtual CPoint2D ReCalculatePoint(CPoint2D point);// б<><D0B1>״<EFBFBD><D7B4><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>һЩ<D2BB><D0A9>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>λ<EFBFBD><CEBB>
void SetWellColumnAvgWidth(double dw); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĿ<C3B5><C4BF>Ⱦ<EFBFBD><C8BE>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>
CPoint2D GetAnchorPoint() { return m_HeadRect.TopLeft(); }; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD>ê<EFBFBD><C3AA>
////<2F><>string vector<6F>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_InclinedWellVec 2015-9-6
//void LoadFromStringVec(vector<vector<CString> >& stringVector);
//// <20><><EFBFBD><EFBFBD><E3A1A2><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void ComputeTrajectory(void);
void ComputeTrajectory(double azimuth, double bevel,
double dep, double &depV,
double xo, double yo, double &x, double &y);
//<2F><><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>
void ComputeProjection(double k,
double x3, double y3,
double &x4, double &y4);
double GetVDepth(double depth);
void SetWellDepth(double sdep, double edep);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><C3BE><EFBFBD>ʼֵ
BOOL IsInWellTrackHead(CRect8& range); //<2F>ھ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
virtual void TransferData(CWellBaseObj* pObj);
//void GetAllTrack(TRACKLIST* trackList);
CTrackGroup& GetTrackGroup() { return *(CTrackGroup*)this; }
virtual void SerializeHead(CArchive& ar, const short& ver);
CWellPole* CreateWellObj(DWORD type);
BOOL FindWellColumn(PCG_WELLCOLARRAY & wellColArr, CString strColRef);
BOOL m_bVWell; //<2F>Ƿ񽫴<C7B7><F1BDABB4><EFBFBD>б<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><D5B4><EFBFBD><EFBFBD><EFBFBD>ʾ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ,<2C><><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ڹ켣<DAB9><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
double m_k; //ͶӰ<CDB6><EFBFBD><E6B7BD>б<EFBFBD><D0B1>(<28><>ΪͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>)
CString m_strTrajectoryTrackName;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECBCA3><EFBFBD><EFBFBD>
int m_nMeasureCount; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MeasurePointArr m_MeasurePointsArr; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CloneOtherParameter(const CWellPole & wellObj);
std::vector<CWellDataObj_Curve*> m_CurveDataVecs; //<2F><><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD>в<EFBFBD><D0B2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void Transform(CXyDC* pDC, float* matrix, BOOL bUndo);
//virtual void Transform(float* matrix, BOOL bUndo);
void SetScale(double xScale, double yScale);
public:
virtual BOOL IsWellStyleSimple();
protected:
//CTrackGroup m_TrackObjGroup;
public:
//PCG<43><47>д
virtual int ReadPCG(CFile &fr, const short &ver);
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
virtual void ReadPCGEnd();
//pcg<63><67>ȡ
virtual int ReadPCG_Head(CXmlParse &xp, const short& ver);
virtual int ReadPCG_Styles(CFile &fr, CXmlParse &xp, const short& ver, BOOL bDml = FALSE);
virtual int ReadPCG_WellTemplate(CFile &fr, const short& ver, PCG_WELLCOLARRAY & wellColArr);
virtual int ReadPCG_WellColumn(CXmlParse &xp, CFile &fr, const short& ver, PCG_WELLTEMPCOL* pWellColParent, int& totalCount);
virtual int ReadPCG_Traces(CFile &fr, const short& ver, PCG_WELLCOLARRAY & wellColArr);
virtual int ReadPCG_Datas(CFile &fr, const short &ver);
//virtual int ReadPCG_Exts(CFile &fr, const short &ver);
virtual int ReadPCG_CallOuts(CFile &fr, const short &ver);
virtual int ReadPCG_Trajectory(CFile &fr, CXmlParse &xp, const short &ver);
//pcgд<67><D0B4>
virtual void WritePCG_Head(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> ͷ<><CDB7><EFBFBD><EFBFBD>
virtual void WritePCG_Tail(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> β<><CEB2><EFBFBD><EFBFBD>
virtual void WritePCG_PrintTemplate(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><>ӡģ<D3A1><C4A3>
virtual void WritePCG_Symbols(CFile &fw, const short& ver, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>
virtual void WritePCG_Styles(CFile &fw, int nBaseTabNum, BOOL bDml = FALSE); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
virtual void WritePCG_WellTemplate(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><>ģ<EFBFBD><C4A3>
virtual void WritePCG_WellColumn(CFile &fw, int nBaseTabNum, CTrackGroup* pTrackGroupParent); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ϵ<EFBFBD>ģ<EFBFBD><C4A3>
virtual void WritePCG_Traces(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void WritePCG_Trajectory(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><><EFBFBD>
virtual void WritePCG_Datas(CFile &fw, int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//virtual void WritePCG_Exts(CFile &fw,int nBaseTabNum); //pcg<63>ļ<EFBFBD><C4BC><EFBFBD> <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>չ
virtual void WritePCG_CallOuts(CFile &fw, const short& ver, int nBaseTabNum);
virtual void WritePCG_WellIntervals(CFile &fw, int nBaseTabNum);
protected:
int ReadPCG_Styles_Title(CFile &fr, CXmlParse &xp, const short& ver);
int ReadPCG_Styles_Grid(CFile &fr, CXmlParse &xp, const short& ver);
int ReadPCG_Styles_Border(CFile &fr, CXmlParse &xp, const short& ver);
int ReadPCG_Styles_Splitline(CFile &fr, CXmlParse &xp, const short& ver);
int ReadPCG_Styles_Track(CFile &fr, CXmlParse &xp, const short& ver);
void WritePCG_Styles_Title(CFile &fw, int nBaseTabNum);
void WritePCG_Styles_Grid(CFile &fw, int nBaseTabNum);
void WritePCG_Styles_Border(CFile &fw, int nBaseTabNum);
void WritePCG_Styles_Splitline(CFile &fw, int nBaseTabNum);
void WritePCG_Styles_Track(CFile &fw, int nBaseTabNum);
int ReadPCG_WellIntervals(CFile &fr, CXmlParse &xp, const short& ver); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/////////////////////////////////////////////////////////
public:
typedef struct _WellHeadLockInfo
{
BOOL bLock; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ס<EFBFBD>˾<EFBFBD>ͷ
double dShowStartDep;//<2F><>ס<EFBFBD><D7A1>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
double dShowEndDep; ///<2F><>ס<EFBFBD><D7A1>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ľ<EFBFBD><C4BE>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::vector<well_interval> m_BakWellIntervalVec; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
}WELLHEADLOCKINFO;
WELLHEADLOCKINFO m_LockHeadInfo;
void SetHeadLockState(BOOL block = FALSE, double sdep = 0, double edep = 0);
void SetHeadLockStateDepth(double sdep, double edep); //<2F>ھ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ľ<EFBFBD><C4BE>Ρ<EFBFBD>
double GetHeadLockStartDepth();
double GetHeadLockEndDepth();
double GetDepthLength() { return (m_dEdep - m_dSdep); };
double GetTrackStartTop() { return m_position.top - m_dHeightTrackHead - m_dHeightWellHead; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////
virtual int ReadPCG(CKXmlParse& xp, const short &ver);
virtual int ReadPCG_Head(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Styles(CKXmlParse &xp, const short& ver, BOOL bDml = FALSE);
virtual int ReadPCG_WellTemplate(CKXmlParse &xp, const short& ver, PCG_WELLCOLARRAY & wellColArr);
virtual int ReadPCG_WellColumn(CKXmlParse &xp, const short& ver, PCG_WELLTEMPCOL* pWellColParent, int& totalCount);
virtual int ReadPCG_Traces(CKXmlParse& xp, const short& ver, PCG_WELLCOLARRAY & wellColArr);
virtual int ReadPCG_Datas(CKXmlParse& xp, const short &ver);
virtual int ReadPCG_CallOuts(CKXmlParse& xp, const short &ver);
virtual int ReadPCG_Trajectory(CKXmlParse& xp, const short &ver);
int ReadPCG_Traces_GetTraceProps(CKXmlParse& xp, PCG_TRACECOL& traceCol);
protected:
int ReadPCG_Styles_Title(CKXmlParse &xp, const short& ver);
int ReadPCG_Styles_Grid(CKXmlParse &xp, const short& ver);
int ReadPCG_Styles_Border(CKXmlParse &xp, const short& ver);
int ReadPCG_Styles_Splitline(CKXmlParse &xp, const short& ver);
int ReadPCG_Styles_Track(CKXmlParse &xp, const short& ver);
int ReadPCG_WellIntervals(CKXmlParse &xp, const short& ver); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};