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.

581 lines
24 KiB
C

1 month ago
#ifndef WELLSECTION_H
1 month ago
#define WELLSECTION_H
#pragma once
#include "TObjectList.h"
#include "WellPoleLib/MultiWellSectionBase.h"
1 month ago
#include "WellPoleLib/TreeBase.h"
1 month ago
//////////////////////////////////////////////////////////////////////////////
1 month ago
//文件 WellSection.h
//主要功能:
// 剖面类
1 month ago
/////////////////////////////////////////////////////////////////////////////
typedef struct MAPRANGE
{
int nID;
int nIndex;
int nType;
double fTop;
double fBottom;
double fLeft;
double fRight;
}Struct_MapRange;
typedef struct INTERVAL
{
public:
double fIntervalLength;
double fSpaceLength;
}Struct_Interval;
typedef struct INTERVALS
{
public:
double fBaseDepth;
double fTopDepth;
//typedef CArray <INTERVAL,INTERVAL>IntervalArr;
}Struct_Intervals;
typedef struct SECTIONWELL
{
public:
CString strWellName;
double fBaseDepth;
double fTopDepth;
double fLength;
double fHorzDistance;
Struct_Intervals Intervals;
}Struct_SectionWell;
typedef struct SECTIONOTHER
{
public:
SECTIONOTHER() { nID = -1; }
void Reset() { nID = -1; name.Empty(); strID.Empty(); }
int nID;
CString strID;
CString name;
}Struct_SectionOther;
1 month ago
/*pcg中 WellSection 的范围m_position 计算刚开始从pcg中 <sections>中 <section>节点中的 top , left ,bottom ,right中获得
topleftComputeSectionRect()ReSetPosition()m_position
= TVD
MD TVD
TVDTrue Vertical Depth
MDMeasured Depth线
=KB TVD
1 month ago
*/
//typedef TObjectList<CDrawObj> CDrawObjList;
1 month ago
1 month ago
class CBendObj;
class CFaultObj;
typedef TObjectList<CWellBaseObj>CWellBaseObjList;
class AFX_EXT_CLASS CWellSection : public CMultiWellSectionBase
{
public:
CWellSection(void);
~CWellSection(void);
//G_CLONE_ELEMENT(CWellSection)
virtual CBaseExtend* CreateClone();
virtual void* CloneElement(void);
virtual void Clone(CWellBaseObj& object);
virtual CString GetXmlType() { return _T("CrossSection"); }
1 month ago
void operator=(const CWellSection& Object);
void CloneOtherParameter(const CWellSection& wellSection);
void Clear(void);
CLONE_WELLOBJECT(CWellSection)
1 month ago
public:
1 month ago
CString m_strTitleName; //标题
CString m_strName; //section中的title读取的字串为了筛层一般为剖面-1
CString m_strWellStyle; //井绘制样式
CRect8 m_SectionRect; //剖面打印范围
CRect8 m_SectionSpaceRect;//距离顶、底、左、右的宽度
GDFLOGFONTEXT m_fontTitle; //标题字体
GDFLOGFONTEXT m_fontWell; //井标注字体
GDFLOGFONTEXT m_fontTrack; //道标注字体
GDFLOGFONTEXT m_fontDepth; //深度标注字体
GDFLOGPENEXT m_penMajor; //主刻度线型
GDFLOGPENEXT m_penMinor; //次刻度线型
GDFLOGPENEXT m_penTrack; //道边框线型
COLORREF m_BoundsColor; //边框颜色
double m_fDepthScale; //深度比例(从resform看深度比例尺只是计算井的长度)
double m_fLevelScale; //海拔比例(从resform看这个比例用来计算井口位置等)
double m_fHorzScale; //水平比例
double m_fDisplayScale;//显示比例
double m_fTop; //(旧版中)剖面的顶海拔
double m_fBottom; //(旧版中)剖面的底海拔
double m_WellDistance; //井间距
int m_nBoundsStyle; //边框样式1-单线1,2-单线2,3-单线3,4-单线4,5-单线5,6-单线6,289-双线1,290-双线2,291-双线3,546-双线4
int m_nPageVersion; //剖面版本
int m_nLayerFlatten;//层拉平方式 0真是位置1层顶拉平2层底拉平,3井顶拉平4井底拉平
int m_nIndex; //剖面索引号
int m_nWellCount; //剖面井数
1 month ago
double m_dDepthRatio;
double m_dHorzRatio;
1 month ago
CWellBaseObjList m_WellList; //井链表 ,其中的井安装从左到右的顺序放置
CWellBaseObjList m_BendList; //层连接链表
CWellBaseObjList m_FaultList; //断层链表
CWellBaseObjList m_VirtualWellList; //虚拟井链表
1 month ago
1 month ago
//临时变量读取PCG格式使用
CWellBaseObjList SectionExtraList; //多剖面链表
WELLOBJLIST ObjectExtraList; //表格、标注、线、标题等其他对象
CWellPole* PWellTemplate; //井模板指针
CString m_CopyrightName; //版权
1 month ago
CString m_VersionType;
CString m_BendLithoResult;
CXy* m_pBendLithoSymbol;
protected:
1 month ago
DWORD m_nWellSectionFlags;// 井剖面开关状态
// 井剖面类Flags
1 month ago
enum WellSectionFlags
{
1 month ago
WellSectionFlagBounds = 0x0001, // 显示剖面外框
WellSectionFixedDistance = 0x0002, // 固定井间距
WellSectionRealLevel = 0x0004, // 按真实的井位置拉平
WellSectionStratumSmooth = 0x0008, // 平滑剖面
WellSectionVisible = 0x0010, // 剖面可视
WellSectionActivate = 0x0020, // 是否为激活
WellSectionDrawTitleDefault = 0x0040, // 是否缺省绘制井标题
WellSectionShowLayoutGrid = 0x0080, // 是否显示布局风格
WellSectionWellsSameY = 0x0100, // 是否对齐井口(拉平时按剖面中海拔最高的井口进行拉平)
WellSectionDrawWellVertDepth= 0x0200, // 是否使用垂深绘制
1 month ago
};
1 month ago
DWORD m_nDisplayModeFlags;//显示模式
1 month ago
enum DisplayModeFlags
{
1 month ago
DisplayModeFlagsNormal = 0x0001, //直井模式
DisplayModeFlagsVerticalBevel = 0x0002, //斜井模式
DisplayModeFlagsVertical = 0x0004, //垂直井模式
1 month ago
};
1 month ago
DWORD m_nSandVerDict; //活动分层结论
1 month ago
enum SandVerDictFlags
{
1 month ago
SandVerDictSynthesis = 0x0000, //综合解释
SandVerDictModel = 0x0001, //模型解释
SandVerDictWellLogging = 0x0002, //测井解释
SandVerDictOilTestConlusion = 0x0004, //试油结论
SandVerDictWellRecord = SandVerDictModel|SandVerDictWellLogging, //录井解释
SandVerDictProduceTestConlusion = SandVerDictModel|SandVerDictOilTestConlusion, //试采结论
1 month ago
};
1 month ago
DWORD m_nSedimentaryFacies; //沉积相剖面
1 month ago
enum SedimentaryFaciesFlags
{
1 month ago
SedimentaryFaciesNone = 0x0000, //无
SedimentaryFaciesStratiUnit = 0x0001, //地质单元
SedimentaryFaciesReservesUnit = 0x0002, //储量单元
SedimentaryFaciesReservoirGroup = 0x0004, //油层组
SedimentaryFaciesSandSet = 0x0008, //砂层组
SedimentaryFaciesSand = 0x0010, //分层
SedimentaryFaciesBlend = 0x0100, //沉积相剖面混合填充
1 month ago
};
1 month ago
DWORD m_nLockEditFlags; //锁定编辑
1 month ago
enum LockEditFlags
{
1 month ago
LockEditWell = 0x0001, //井对象锁定
LockEditBend = 0x0002, //连层对象锁定
LockEditFault = 0x0004, //断层对象锁定
1 month ago
};
protected:
1 month ago
//临时变量读取PCG格式使用
CArray <Struct_MapRange, Struct_MapRange>MapsRangeArr; //存放图范围信息
CArray <Struct_SectionWell,Struct_SectionWell>SectionWellArr;//存放剖面内井的信息
CArray <Struct_SectionOther,Struct_SectionOther>m_SectionStrataArr;//存放剖面内连层的信息
CArray <Struct_SectionOther,Struct_SectionOther>SectionFaultsArr;//存放剖面内断层的信息
CArray <Struct_SectionOther,Struct_SectionOther>SectionCalloutsArr;//存放剖面内辅助图元的信息
1 month ago
public:
virtual int Read(CFile& fr, const short& ver);
virtual void Write(CFile& fw, const short& ver);
virtual BOOL IsWriteDfd() { return FALSE; }
virtual void Serialize(CArchive& ar, const short &ver);
virtual void Draw(CXyDC* pDC);
virtual void DrawBounds(CXyDC* pDC);
1 month ago
1 month ago
virtual void MoveTo(CRect8& position);
1 month ago
virtual void MoveChildren();//移动子对象的位置
1 month ago
virtual CWellBaseObj* ObjectAt(const CRect8& rect, double dHandleSize, BOOL bNesting=FALSE);
virtual void SetPenGrid(GDFLOGPENEXT& penmajor, GDFLOGPENEXT& penminor);
virtual void SetTrackPen(GDFLOGPENEXT&pen);
virtual void SetWellfont(GDFLOGFONTEXT& font);
virtual void SetTrackfont(GDFLOGFONTEXT& font);
virtual void SetDepthfont(GDFLOGFONTEXT& font);
1 month ago
virtual void SetDepthScale(double scale);
1 month ago
virtual void ReSetScaleHor(double dScale);
virtual void ReSetScaleVer(double dScale);
virtual void ReSetWellDistanse(double dDis);
virtual CRect8 GetRect(void);
virtual CBendObj* CreateBendObj() { return new CBendObj; }
1 month ago
////计算新添加bend连层控制点所在直线的左右端点的y值以及左右层的高度 pBend 手动添加的连层
1 month ago
virtual void ComputeBendPosition(CBendObj* pBend,double &valueLeft,double &valueRight,double &heightLeft,double &heightRight);
1 month ago
//// 当连层按层位拉平是断层坐标的变化
1 month ago
virtual void ComputeFaultControl();
1 month ago
//// 删除连层或者改变层厚度是重新分配连层的厚度(多对一情况下)
1 month ago
virtual void ComputeBendControlsHeight(CInTrackDepthSegment* pLayer, BOOL bLeft);
1 month ago
///计算剖面位置
1 month ago
virtual void ComputeSectionPosition();
1 month ago
////计算井位置
1 month ago
virtual void ComputeWellPosition(double fTop);
1 month ago
/// 连层的左右层指针赋值
1 month ago
virtual void AssignBendLayer(CBendObj* pBend);
1 month ago
/// 层左右bend链表排序
1 month ago
virtual void RankLayerBendList();
1 month ago
// 计算井补心海拔改变后相关连层的控制点 断层的控制点 pWell变化的井 fdelta 井位置y方向的变化量
1 month ago
virtual void ComputeControls(CWellPole* pWell, double fdelta);
/////
/*
1 month ago
FALSETRUE
BaseDepth = TopDepth
BaseDepth = TOpDepth + Length
BaseDepth =
BaseDepth =
1 month ago
*/
1 month ago
//根据FlatLeveBase换算剖面的拉平方式
1 month ago
virtual void Flat();
1 month ago
//// PCG读完井数据后调用如果井属于当前剖面则不做处理
///////如果井输入其他剖面(多剖面情况下)则放入其他剖面(如果同一口井属于多个剖面则拷贝井内容);若果井不属于任何剖面则删除;
1 month ago
virtual void AllotWellsAndBends();
1 month ago
/////连接方式交互时根据连接方式计算连层延伸时的延伸长度(x轴方向)
1 month ago
void ComputeExTendLengthOfX();
1 month ago
//层位拉平 TRUE层底拉平 FALSE 层顶拉平
1 month ago
virtual void FlatLayer(CBendObj* pBend, BOOL bBot);
1 month ago
//井段拉平 TRUE井段顶拉平 FALSE 井段底底拉平
1 month ago
virtual void FlatWell(BOOL bTop);
1 month ago
//井按照真实位置摆放
1 month ago
virtual void FlatRealPosition(void);
1 month ago
//构建连层与井、分层的关系
virtual void BuildBendsRelation(BOOL bFault=TRUE,BOOL bResetLinkStyle = TRUE);
//构建连层对象
1 month ago
virtual void BuildBends();
1 month ago
////删除某连层
1 month ago
virtual void DeleteBend(CBendObj* pBend);
1 month ago
// 层拉平后剖面中的所有连接层bend 的重新计算
1 month ago
void ReComputeBendsY();
1 month ago
//递归函数依次按bend寻找
void RecursionBend(CBendObj* pBend, CWellBaseObjList &WellListTemp,double value,BOOL b);//b=0:按层顶拉平b=1;按层底拉平
//井操作后重新计算相关的层位(包含拖动井 拖拽井 拖动道 拖拽道等操作)
1 month ago
virtual void ReComputeBends( CWellPole* pWell);
1 month ago
//断层操作后重新计算相关的层位
1 month ago
void ReBuildBends(CFaultObj* pFault);
1 month ago
//void ReBuildBends( CWellPole* pWell);
1 month ago
virtual void ReSetPosition();
1 month ago
//将对象添加到子对象链表
1 month ago
virtual void Add(CWellBaseObj* pObj);
1 month ago
//根据图元类型构建对象
1 month ago
static CWellBaseObj* CreateObj(int eType);
1 month ago
/* 实际坐标与屏幕坐标转换 */
virtual double DepthToScreenY(double dDepth /* 实际深度m */);
1 month ago
virtual double ScreenYToDepth(double dY);
1 month ago
virtual double HeightToScreenCY(double dHeight /* 高度m */); // 长度m转为逻辑长度
virtual double ScreenCYToHeight(double dCY); //逻辑长度转井的纵向长度米
virtual double WidthToScreenCX(double dWidth/* 实际宽度cm */);
1 month ago
virtual double ScreenCXToWidth(double dCX);
1 month ago
//开关变量值
1 month ago
virtual void SetWellSectionFlags(DWORD flags);
virtual DWORD GetWellSectionFlags();
virtual void SetShowBounds(BOOL bFlag);
virtual void SetFixedDistance(BOOL bFlag);
virtual void SetRealLevel(BOOL bFlag);
virtual void SetStratumSmooth(BOOL bFlag);
virtual void SetVisible(BOOL bFlag);
virtual void SetActivate(BOOL bFlag);
virtual void SetDrawTitleDefault(BOOL bFlag);
virtual void SetLayoutGrid(BOOL bFlag);
virtual void SetWellsSameY(BOOL bFlag);
virtual void SetDrawWellVertDepth(BOOL bFlag);
virtual BOOL IsShowBounds();
virtual BOOL IsFixedDistance();
virtual BOOL IsRealLevel();
virtual BOOL IsStratumSmooth();
virtual BOOL IsVisible();
virtual BOOL IsActivate();
virtual BOOL IsDrawTitleDefault();
virtual BOOL IsShowLayoutGrid();
virtual BOOL IsWellsSameY();
virtual BOOL IsDrawWellVertDepth();
void SetDisplayMode(DWORD flags);
void SetDisplayModeNormal(BOOL bFlag);
void SetDisplayModeVerticalBevel(BOOL bFlag);
void SetDisplayModeVertical(BOOL bFlag);
DWORD GetDisplayMode();
BOOL IsDisplayModeNormal();
BOOL IsDisplayModeVerticalBevel();
BOOL IsDisplayMoedVertical();
void SetSedimentaryFacies(DWORD flags);
void SetSedimentaryFaciesNone(BOOL bFlag);
void SetSedimentaryFaciesStratiUnit(BOOL bFlag);
void SetSedimentaryFaciesReservesUnit(BOOL bFlag);
void SetSedimentaryFaciesReservoirGroup(BOOL bFlag);
void SetSedimentaryFaciesSandSet(BOOL bFlag);
void SetSedimentaryFaciesSand(BOOL bFlag);
void SetSedimentaryFaciesBlend(BOOL bFlag);
DWORD GetSedimentaryFacies();
BOOL IsSedimentaryFaciesNone();
BOOL IsSedimentaryFaciesStratiUnit();
BOOL IsSedimentaryFaciesReservesUnit();
BOOL IsSedimentaryFaciesReservoirGroup();
BOOL IsSedimentaryFaciesSandSet();
BOOL IsSedimentaryFaciesSand();
BOOL IsSedimentaryFaciesBlend();
void SetSandVerDict(DWORD flags);
void SetSandVerDictSynthesis(BOOL bFlag);
void SetSandVerDictModel(BOOL bFlag);
void SetSandVerDictWellLogging(BOOL bFlag);
void SetSandVerDictOilTestConlusion(BOOL bFlag);
void SetSandVerDictWellRecord(BOOL bFlag);
void SetSandVerDictProduceTestConlusion(BOOL bFlag);
DWORD GetSandVerDict();
BOOL IsSandVerDictSynthesis();
BOOL IsSandVerDictModel();
BOOL IsSandVerDictWellLogging();
BOOL IsSandVerDictOilTestConlusion();
BOOL IsSandVerDictWellRecord();
BOOL IsSandVerDictProduceTestConlusion();
void SetLockEditWell(BOOL bFlag);
void SetLockEditBend(BOOL bFlag);
void SetLockEditFault(BOOL bFlag);
BOOL IsLockEditWell();
BOOL IsLockEditBend();
BOOL IsLockEditFault();
1 month ago
void MakeFaultFromFaultPoint();//由断点数据生成断层
void SetAllWellColumnLineShape(double dw);//设置所有的井都是一个宽度,内部道平均分配
1 month ago
void DeleteAllFaults();
void DeleteOneFault(CFaultObj *pFault);
CWellPole* FindWell(CString strWell);
1 month ago
//数据转移
1 month ago
virtual void SetActionNoSaveData(BOOL b);
virtual void TransferData(CWellBaseObj* pObj);
CBendObj* FindBend(CString leftWell, CString rightWell, int nleftLayerId, int nRightLayerId);
CFaultObj* FindFault(CString faultName);
virtual void Transform(CXyDC* pDC, float* matrix, BOOL bUndo);
//virtual void Transform(float* matrix, BOOL bUndo);
void SetScale(double xScale, double yScale);
protected:
void SetFaultsHorz(double oldRatio,double newRatio,void *pLeftWell,CRect8 lOldWellRect,void *pRigntWell,CRect8 rOldWellRect);
1 month ago
//// 旧版本保存PCG时,若果左右延伸则求出延伸长度以及延伸方式
1 month ago
void ComputeExtendModeAndLength();
1 month ago
///新版根据PCG连层控制点确定连层类型
1 month ago
void SetStratumLinkType();
1 month ago
//转换文本标注对象
1 month ago
void ConvertMarkToGroup();
1 month ago
//根据井名找到井对象
1 month ago
CWellPole* FindWell(int nId);
void SetStratumLinkType_ResForm();
public:
1 month ago
//DML读写调PCG读写
1 month ago
virtual int ReadDML(CFile &fr, const short &ver);
virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
1 month ago
//PCG读写
1 month ago
virtual int ReadPCG(CFile &fr, const short &ver );
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
virtual void ReadPCGEnd();
virtual int ReadPCG_Head(CXmlParse &xp,const short& ver);
virtual int ReadPCG_Feature(CXmlParse &xp,const short& ver);
virtual int ReadPCG_Section(CFile &fr,const short& ver);
virtual int ReadPCG_Wells(CFile &fr,const short& ver);
virtual int ReadPCG_VirtualWells(CFile &fr,const short& ver);
virtual int ReadPCG_Faults(CFile &fr,const short& ver);
virtual int ReadPCG_Bends(CFile &fr,const short& ver);
virtual int ReadPCG_Strata(CFile &fr,const short& ver);
virtual int ReadPCG_Datas(CFile &fr,const short& ver);
virtual int ReadPCG_Callouts(CFile &fr,const short& ver);
virtual int ReadPCG_DoucmentTextBox(CFile &fr,const short& ver);
virtual int ReadPCG_StylesSection(CFile &fr,CXmlParse& xp,const short& ver);
virtual int ReadPCG_TitleSection(CFile &fr,const short& ver);
virtual int ReadPCG_MarkSection(CFile &fr,const short& ver);
virtual int ReadPCG_RangeSection(CXmlParse& xp,const short& ver);
virtual int ReadPCG_WellsSection(CFile &fr,const short& ver);
virtual int ReadPCG_StrataSection(CFile &fr,const short& ver);
virtual int ReadPCG_FaultsSection(CFile &fr,const short& ver);
virtual int ReadPCG_CalloutsSection(CFile &fr,const short& ver);
virtual int ReadPCG_Intervals(CFile &fr,const short& ver,Struct_SectionWell &SectionWellInfor);
virtual int PCG_ReadMapsRange(CFile &fr,const short& ver);
virtual int ReadPCG_Text(CFile &fr,CXmlParse& xp,const short &ver);
virtual int ReadPCG_Ruler(CFile &fr,CXmlParse& xp,const short &ver);
virtual int ReadPCG_Picture(CFile &fr,CXmlParse& xp,const short &ver);
virtual int ReadPCG_Figure(CFile &fr,CXmlParse& xp,const short &ver);
virtual int ReadPCG_Lines(CFile &fr,CXmlParse& xp,const short &ver);
virtual int ReadPCG_Legend(CFile &fr,CXmlParse& xp,const short &ver);
virtual int ReadPCG_ScaleBox(CFile &fr,CXmlParse& xp,const short &ver);
1 month ago
virtual void WritePCG_Head(CFile &fw,int nBaseTabNum); //pcg文件中 头部分
virtual void WritePCG_Tail(CFile &fw,int nBaseTabNum); //pcg文件中 尾部分
virtual void WritePCG_Feature(CFile &fw,int nBaseTabNum); //pcg文件中 特征
virtual void WritePCG_Sections(CFile &fw,int nBaseTabNum); //pcg文件中 剖面
virtual void WritePCG_Wells(CFile &fw,int nBaseTabNum); //pcg文件中 井
virtual void WritePCG_VirtualWells(CFile &fw,int nBaseTabNum); //pcg文件中 虚井
virtual void WritePCG_Faults(CFile &fw,int nBaseTabNum); //pcg文件中 断层
virtual void WritePCG_Bends(CFile &fw,int nBaseTabNum); //pcg文件中连层
virtual void WritePCG_Datas(CFile &fw,int nBaseTabNum); //pcg文件中 数据
virtual void WritePCG_Strata(CFile &fw,int nBaseTabNum); //pcg文件中连层
virtual void WritePCG_Callouts(CFile &fw, const short& ver,int nBaseTabNum); //pcg文件中文本框以及标注
1 month ago
virtual void WritePCG_Title(CFile &fw,int nBaseTabNum);
virtual void WritePCG_Styles(CFile &fw,int nBaseTabNum);
virtual void WritePCG_Marks(CFile &fw,int nBaseTabNum);
virtual void WritePCG_ShowRange(CFile &fw,int nBaseTabNum);
virtual void WritePCG_MapsRange(CFile &fw,int nBaseTabNum);
virtual void WritePCG_SectionWells(CFile &fw,int nBaseTabNum);
1 month ago
virtual void WriteDML_Head(CFile &fw,int nBaseTabNum); //pcg文件中 头部分
virtual void WriteDML_Tail(CFile &fw,int nBaseTabNum); //pcg文件中 尾部分
virtual void WriteDML_Feature(CFile &fw,int nBaseTabNum); //pcg文件中 特征
virtual void WriteDML_Sections(CFile &fw,int nBaseTabNum); //pcg文件中 剖面
virtual void WriteDML_Wells(CFile &fw,int nBaseTabNum); //pcg文件中 井
virtual void WriteDML_VirtualWells(CFile &fw,int nBaseTabNum); //pcg文件中 虚井
virtual void WriteDML_Faults(CFile &fw,int nBaseTabNum); //pcg文件中 断层
virtual void WriteDML_Datas(CFile &fw,int nBaseTabNum); //pcg文件中 数据
virtual void WriteDML_Strata(CFile &fw,int nBaseTabNum); //pcg文件中连层
virtual void WriteDML_Callouts(CFile &fw, const short& ver,int nBaseTabNum); //pcg文件中文本框以及标注
1 month ago
virtual int ReadDML_Feature(CXmlParse &xp,const short& ver);
protected:
void WriteXml_Strata(CFile &fw,int nBaseTabNum,int xmlId = 1); // xmlId = 1(dml), xmlId=2(pcg);
1 month ago
1 month ago
void PCG1_0_SetBend();
void SetWellForBend(CBendObj *pBend);
public:
DWORD ComputedBends(std::vector<CBendObj*>* pBendVcs);
1 month ago
void ComputeAllBendsTopBottomForResForm();
void ComputeAllBendsByThreads();
1 month ago
1 month ago
CBendObj* FindBend(CWellBaseObj* pLeftLayer, CWellBaseObj* pRightLayer, CWellPole* pLeftWell, CWellPole* pRightWell);
virtual void DeleteInTrackObj(CWellBaseObj* pBaseObj);
1 month ago
public :
virtual int ReadPCG(CKXmlParse& xp, const short &ver);
virtual int ReadDML_Feature(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Head(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Feature(CKXmlParse &xp, const short& ver);
1 month ago
virtual int ReadPCG_Section(CKXmlParse &xp, const short& ver ,BOOL bOnlyProperties = FALSE);
1 month ago
virtual int ReadPCG_Wells(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_VirtualWells(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Faults(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Bends(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Strata(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Datas(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Callouts(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_DoucmentTextBox(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_StylesSection(CKXmlParse& xp, const short& ver);
virtual int ReadPCG_TitleSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_MarkSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_RangeSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_WellsSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_StrataSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_FaultsSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_CalloutsSection(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Intervals(CKXmlParse &xp, const short& ver, Struct_SectionWell &SectionWellInfor);
virtual int PCG_ReadMapsRange(CKXmlParse &xp, const short& ver);
virtual int ReadPCG_Text(CKXmlParse &xp, const short &ver);
virtual int ReadPCG_Ruler(CKXmlParse &xp, const short &ver);
virtual int ReadPCG_Picture(CKXmlParse &xp, const short &ver);
virtual int ReadPCG_Figure(CKXmlParse &xp, const short &ver);
virtual int ReadPCG_Lines(CKXmlParse &xp, const short &ver);
virtual int ReadPCG_Legend(CKXmlParse &xp, const short &ver);
virtual int ReadPCG_ScaleBox(CKXmlParse &xp, const short &ver);
1 month ago
//层中连层链表的重新排序;BendList连层链表 按照连层nInt1=左或者2=右)边的层由高到底排序
static void ReOrederBendList(WELLOBJLIST& BendList, int nInt);
void* CloneElementWithoutWells(void);//克隆一个不包含井的剖面在undo/redo时用来保存变化的bend和fault可以加快速度
void ExchangeBendsAndFaults(CWellSection* pOther);
protected:
void SerializeSelf(CArchive& ar, const short &ver, BOOL haveWells);
void SerializeWithoutWells(CArchive& ar, const short &ver);
void ReSetScaleHor_old(double dScale);
void ReSetScaleHor_Resform(double dScale);
void ReSetWellDistanse_old(double dDis);
int ReadPCG_Stratification(CKXmlParse& xp, const short& ver); //读取地层分层级别数据
void ReadPCG_WellLayerDivision(CKXmlParse& xp, const short& ver);
void ReadPCG_StratumDivision(CKXmlParse& xp, const short& ver);
void WritePCG_Stratification(CFile& fw, int nBaseTabNum); //写地层分层级别数据
virtual void WritePCG_WellDataTables(CFile& fw, const short& ver, int nBaseTabNum);
public:
CTreeBase m_WellStratiTree; //井分层树
CString m_WellStratificationJson;
CTreeBase m_StratumDivisionTree; //地质分层树
CString m_strStratumDivisionJson;
virtual BOOL SetWellStratification(CString& jsonStr);
virtual BOOL SetStratumDivision(CString& jsonStr);
public:
void ExchangeModifiedSizeWell(CWellPole* pOldWell, CWellPole* pNewWell); //当只有井或井内部对象数据发生变化时,可以使用备份井进行替换(如果发生删除,增加等操作,不要使用)。
virtual int ReadPCG_TableDatas(CKXmlParse& xp, const short& ver);
void ReSetWellRealDistance(BOOL bAvg, double AvgDis = 0); //是否平均距离,
int GetWellPosInList(CWellPole*);
CWellPole* GetWellFromiPos(int ipos);
virtual void ComputeSectionRect();
CString GetNewFaultName();
void SetWellPoleDisplayMode(int iMode); //imode=0直井模式、=1斜井模式、=2垂深模式
1 month ago
};
#endif