|
|
|
|
|
#ifndef FAULT_H
|
|
|
|
|
|
#define FAULT_H
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
//#include "BendObj.h"
|
|
|
|
|
|
class CBendObj;
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> Fault.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// <09>ྮ<EFBFBD>ز<EFBFBD><D8B2>Աȶϲ<C8B6><CFB2><EFBFBD>
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ṹ
|
|
|
|
|
|
struct FaultOnBendCrossStruct
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend; //bend<6E><64>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
int nBendID;
|
|
|
|
|
|
double fLThrow; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double fRThrow; //<2F>Ҿ<EFBFBD><D2BE><EFBFBD>
|
|
|
|
|
|
CPoint2D LeftCrossPt;//<2F><><EFBFBD>㽻<EFBFBD><E3BDBB>
|
|
|
|
|
|
CPoint2D RightCrossPt;//<2F>Ҳ㽻<D2B2><E3BDBB>
|
|
|
|
|
|
CString bendLeftWell;
|
|
|
|
|
|
CString bendRightWell;
|
|
|
|
|
|
int bendLeftLayerID;
|
|
|
|
|
|
int bendRightLayerID;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
FaultOnBendCrossStruct()
|
|
|
|
|
|
{
|
|
|
|
|
|
pBend = NULL;
|
|
|
|
|
|
nBendID = -1;
|
|
|
|
|
|
bendLeftLayerID = -1;
|
|
|
|
|
|
bendRightLayerID = -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
};
|
|
|
|
|
|
typedef CArray<FaultOnBendCrossStruct, FaultOnBendCrossStruct> FAULTONBENDCROSSARR; //<2F>ϲ<EFBFBD><CFB2>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CFaultObj : public CWellBaseObj
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CFaultObj(void);
|
|
|
|
|
|
~CFaultObj(void);
|
|
|
|
|
|
void operator=( CFaultObj& faultObj);
|
|
|
|
|
|
CLONE_WELLOBJECT(CFaultObj)
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CPointArr m_ptArr; //<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double m_fLeftThrow; //<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double m_fRightThrow; //<2F>ϲ<EFBFBD><CFB2>Ҳ<EFBFBD><D2B2>½<EFBFBD><C2BD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ҳ<EFBFBD><D2B2>ز<EFBFBD><D8B2><EFBFBD><EFBFBD>½<EFBFBD>
|
|
|
|
|
|
CString m_strName; //<2F>ϲ<EFBFBD><CFB2><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
FAULTONBENDCROSSARR m_ptCrossArr; //<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬(<28><><EFBFBD>Ʋ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ϲ<EFBFBD><CFB2>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ͶϾ<CDB6>ʱʹ<CAB1><CAB9>)
|
|
|
|
|
|
std::vector<dfPoint> m_OrgCtrlPts; //<2F><>ʼ<EFBFBD><CABC><EFBFBD>Ƶ<EFBFBD>
|
|
|
|
|
|
protected:
|
|
|
|
|
|
DWORD m_nFaultFlags; // <20>ϲ㿪<CFB2><E3BFAA>״̬
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flags
|
|
|
|
|
|
enum FaultFlags
|
|
|
|
|
|
{
|
|
|
|
|
|
FlagNULL = 0x0000, // <20>հ<EFBFBD>
|
|
|
|
|
|
FaultFlagBSPline = 0x0001, // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagCutOffShoot = 0x0002, // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>η<EFBFBD>֧<EFBFBD><D6A7>
|
|
|
|
|
|
FaultFlagCutExtend = 0x0004, // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagCutFluid = 0x0008, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagCutLitho = 0x0010, // <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagCutLeftExtend = 0x0020, // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagCutRightExtend = 0x0040, // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagHideLeftBends = 0x0080, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagHideRightBends = 0x0100, // <20><><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
FaultFlagShowLeftArrow = 0x0200, // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
|
|
|
|
FaultFlagShowRightArrow = 0x0400, // <20><>ʾ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>ͷ
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
virtual void Draw(CXyDC* pDC);
|
|
|
|
|
|
virtual void MoveTo(CRect8& position);
|
|
|
|
|
|
virtual void MoveHandleTo(int nHandle, CPoint2D point);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void GetRange(CRect8& range);
|
|
|
|
|
|
|
|
|
|
|
|
virtual int HitTest(CPoint2D point, double dHandleSize, BOOL bSelected);
|
|
|
|
|
|
virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
|
|
|
|
|
|
virtual int GetHandleCount();
|
|
|
|
|
|
virtual CPoint2D GetHandle(int nHandle);
|
|
|
|
|
|
int GetCrossCount();
|
|
|
|
|
|
|
|
|
|
|
|
void FaultReCut(int fPtThrowNum=0,double *pfptThrowArr = NULL);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>и<EFBFBD>ʱ,<2C>Ƿ<EFBFBD><C7B7>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>εĶϾ<C4B6>
|
|
|
|
|
|
void FaultReCut_ResForm();
|
|
|
|
|
|
void ReComputeBendCrossControl(int nHandle,CPoint2D pt,CPoint2D ptDrag,BOOL bAdjustThrow,double dH=0.0);
|
|
|
|
|
|
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>ֵ
|
|
|
|
|
|
virtual void SetFaultFlags(DWORD flags);
|
|
|
|
|
|
virtual void SetBSPline(BOOL bFlag);
|
|
|
|
|
|
virtual void SetCutOffShoot(BOOL bFlag);
|
|
|
|
|
|
virtual void SetCutExtend(BOOL bFlag);
|
|
|
|
|
|
virtual void SetCutFluid(BOOL bFlag);
|
|
|
|
|
|
virtual void SetCutLitho(BOOL bFlag);
|
|
|
|
|
|
virtual void SetHideLeftBends(BOOL bFlag);
|
|
|
|
|
|
virtual void SetHideRightBends(BOOL bFlag);
|
|
|
|
|
|
virtual void SetShowLeftArrow(BOOL bFlag);
|
|
|
|
|
|
virtual void SetShowRightArrow(BOOL bFlag);
|
|
|
|
|
|
virtual void SetCutLeftExtend(BOOL bFlag);
|
|
|
|
|
|
virtual void SetCutRightExtend(BOOL bFlag);
|
|
|
|
|
|
|
|
|
|
|
|
virtual DWORD GetFaultFlags();
|
|
|
|
|
|
virtual BOOL IsBSPline();
|
|
|
|
|
|
virtual BOOL IsCutOffShoot();
|
|
|
|
|
|
virtual BOOL IsCutExtend();
|
|
|
|
|
|
virtual BOOL IsCutFluid();
|
|
|
|
|
|
virtual BOOL IsCutLitho();
|
|
|
|
|
|
virtual BOOL IsHideLeftBends();
|
|
|
|
|
|
virtual BOOL IsHideRightBends();
|
|
|
|
|
|
virtual BOOL IsShowLeftArrow();
|
|
|
|
|
|
virtual BOOL IsShowRightArrow();
|
|
|
|
|
|
virtual BOOL IsCutLeftExtend();
|
|
|
|
|
|
virtual BOOL IsCutRightExtend();
|
|
|
|
|
|
|
|
|
|
|
|
void Transform(CXyDC* pDC, float* matrix, BOOL bUndo);
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
void GetFaultPtOrderbyPt1ToPt2(dfPoint pt1, dfPoint pt2, std::vector<dfPoint>& outPt); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y֮<59><D6AE><EFBFBD>Ķϲ<C4B6><CFB2><EFBFBD><EFBFBD>ϵĵ㣬<C4B5>Ұ<EFBFBD><D2B0>մ<EFBFBD>pt1<74><31>pt2<74>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void GetFaultPtByY(dfPoint pt1 , dfPoint pt2,std::vector<dfPoint>& outPt); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y֮<59><D6AE><EFBFBD>Ķϲ<C4B6><CFB2><EFBFBD><EFBFBD>ϵĵ㣬<C4B5>Ұ<EFBFBD><D2B0>մӵ<D5B4>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void GetFaultPtsByDec(CPointArr& ptArr);//<2F><><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD>С
|
|
|
|
|
|
|
|
|
|
|
|
virtual int ReadPCG(CFile &fr,const short& ver);
|
|
|
|
|
|
virtual void WritePCG(CFile &fw,int nBaseTabNum); //pcg<63>ļ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadPCG_FaultPoints(CFile &fr,CXmlParse& xp,const short& ver);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ͼ࣬ <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>Ҳ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ϲ<EFBFBD><CFB2>Ľ<EFBFBD><C4BD><EFBFBD>
|
|
|
|
|
|
void GetFaultPointByThrow(dfPoint intsectPt, double lthrow, dfPoint& lPoint);
|
|
|
|
|
|
void GetFaultPointByYOffset(dfPoint intsectPt, double yOffset, dfPoint& lPoint); //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷϲ<C5B6><CFB2><EFBFBD><EFBFBD>ƶ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯<EFBFBD><E4BBAF>yoffset
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void GetBendFaultCross(CPointArr& ptArrCurve,void *pFaultCross,BOOL & bCross,int& FptId); //FptId<49><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ཻ<EFBFBD>Ķϲ<C4B6><CFB2>ߵ<EFBFBD>ID
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual int ReadPCG(CKXmlParse& xp, const short& ver);
|
|
|
|
|
|
int ReadPCG_FaultPoints( CKXmlParse& xp, const short& ver);
|
|
|
|
|
|
|
|
|
|
|
|
int ReadPCG_FaultProperties(CKXmlParse& xp, const short& ver, CRect8 mapRect);
|
|
|
|
|
|
|
|
|
|
|
|
void ComputedFaultCurvePoints(BOOL bSpline);
|
|
|
|
|
|
BOOL AddFaultPoint(int SelectId);
|
|
|
|
|
|
BOOL DeleteFaultPoint(int SelectId);
|
|
|
|
|
|
|
|
|
|
|
|
CString GetName() { return m_strName; }
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif
|