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.

142 lines
4.8 KiB
C

1 month ago
#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=(const CFaultObj& faultObj);
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><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><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);
};
#endif