|
|
#pragma once
|
|
|
|
|
|
#include "TrackObj.h"
|
|
|
|
|
|
class AFX_EXT_CLASS CTrackGroup : public CTrackObj
|
|
|
{
|
|
|
public:
|
|
|
CTrackGroup();
|
|
|
CTrackGroup(const CRect8& position);
|
|
|
~CTrackGroup();
|
|
|
|
|
|
void operator=(const CTrackGroup &trackGroupObj);
|
|
|
public:
|
|
|
TRACKLIST& GetTrackList() { return m_trackList; }
|
|
|
|
|
|
void SetGroupType(EGroupType type) { m_eGroupType = type; }
|
|
|
EGroupType GetGroupType() { return m_eGroupType; }
|
|
|
protected:
|
|
|
void Initialize(); //初始化参数
|
|
|
|
|
|
public:
|
|
|
virtual void Clear(void);
|
|
|
|
|
|
virtual void SetParent(CWellBaseObj * pobjParent);
|
|
|
virtual void SetParentXY(void* pXy);
|
|
|
|
|
|
//添加道链表
|
|
|
virtual void AddTrack(CTrackObj* pTrackObj);
|
|
|
////获得指定的索引道
|
|
|
//POSITION GetTrack(int nIndex);
|
|
|
/*仅移除指定道,并不释放pTrackObj对象,
|
|
|
本函数使用时最好从井或被删道的爷爷开始,因为对于只有两个道的组合道,删除一个子道,会涉及只包含一个子道的组合道的处理问题,此时只有该组合道的父道能处理这个包含一个道的组合道。
|
|
|
如果直接使用父道删除子道,则只能简单删除,不处理包含一个道的组合道*/
|
|
|
bool RemoveTrack(CTrackObj* pDelTrack);
|
|
|
//删除所有子道
|
|
|
void DeleteAllTrack();
|
|
|
//删除指定道(移除并删除对象)
|
|
|
//void DeleteTrack(TRACKLIST::iterator pos);
|
|
|
//查找是否包含指定的道,bIncludeSub是否包含内部的子道
|
|
|
BOOL FindTrack(CTrackObj* pTrackObj, bool bIncludeSub);
|
|
|
//根据道类型查找对象,查找第一个
|
|
|
CTrackObj* FindTrack(ETrackType type);
|
|
|
//根据道名称查找道
|
|
|
CTrackObj* FindTrack(ETrackType type, LPCTSTR strTrackName);
|
|
|
//根据pcg数据索引找到道对象
|
|
|
CTrackObj* FindDataRefTrack(LPCTSTR strDataRef,BOOL bReadData);
|
|
|
//找到指定坐标下的道
|
|
|
CTrackObj* FindTrack(CPoint2D pt);
|
|
|
//找到当前范围所属的组(移动道头使用)
|
|
|
CTrackGroup* FindTrackGroup(CPoint2D pt);
|
|
|
|
|
|
///////判断是否存在同标题的道
|
|
|
virtual BOOL FindTrackTitle(CString str);
|
|
|
///////判断是否存在同名称的道
|
|
|
virtual BOOL FindTrackName(CString str);
|
|
|
///////取出所有的道(非组)对象,可以指定道的类型,默认情况下,所有的道都有
|
|
|
virtual void GetAllTrack(TRACKLIST* TrackList, int type = -1);
|
|
|
////////////////////////////////////////
|
|
|
virtual int GetTrackRow();
|
|
|
//查找井内的边界道
|
|
|
CTrackObj* FindTrackLeft();
|
|
|
CTrackObj* FindTrackRight();
|
|
|
|
|
|
//找到当前点所在右边界上的组合道
|
|
|
CTrackGroup* FindTrackGroupOnRight(CPoint2D pt, double dHandleSize);
|
|
|
|
|
|
/// 获得组内所有实际道的个数(不包含组对象本身)
|
|
|
virtual int GetTrackCount();
|
|
|
int GetTrackCount(ETrackType trackType, bool bIncludeSub); //根据类型统计个数
|
|
|
|
|
|
virtual void SetTrackWidthRatio(double r);
|
|
|
|
|
|
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 BOOL ReadCurveData(BOOL bInit = TRUE);
|
|
|
////// 2016.3.16 曲线、散点道清除曲线段数据统计以及岩性归为时添加的深度段child对象
|
|
|
virtual void ClearCurveSegmentObj();
|
|
|
virtual void ResetChildPosition(double oldProportion, double newProportion, double depthDelta);
|
|
|
virtual void ResetChildPosition(double offsetY = 0.0);
|
|
|
|
|
|
//移动道宽
|
|
|
void MoveTrackWidth(double width);
|
|
|
|
|
|
virtual void SetFontGridMark(GDFLOGFONTEXT& font);
|
|
|
virtual void SetSpace(double major, double minor);
|
|
|
|
|
|
virtual void DivideTrack(TRACKLIST* CurveList, TRACKLIST* OtherList);
|
|
|
virtual void GetTrackCurve(TRACKLIST* CurveList);
|
|
|
|
|
|
virtual CWellBaseObj* ObjectAt(const CRect8& rect, double dHandleSize, BOOL bNesting = FALSE);
|
|
|
virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
|
|
|
virtual void CalculateSize(CPoint2D point); // 计算道组合范围
|
|
|
virtual void GetHeadPts(double cx, double cy, double angle, double offx = 0, double offy = 0); //计算斜井情况下的道头区域,cx,cy旋转中心,angle旋转角度
|
|
|
virtual double GetWidth();
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
virtual void Serialize_TrackList(CArchive& ar, const short &ver);
|
|
|
virtual void SetTitle(CString title);
|
|
|
|
|
|
virtual void MoveToActiveTrackHead(CRect8& positon);
|
|
|
virtual void MoveTo(CRect8& position);
|
|
|
virtual void MoveHandleTo(int nHandle, CPoint2D point);
|
|
|
|
|
|
virtual void DrawTrackHead(CXyDC* pDC);
|
|
|
virtual void DrawTrackHeadLine(CXyDC* pDC, BOOL bFirst = FALSE);
|
|
|
virtual void DrawTrackBodyLine(CXyDC* pDC, BOOL bFirst = FALSE);
|
|
|
virtual void DrawActiveTrackHead(CXyDC*pDC);
|
|
|
virtual void Draw(CXyDC* pDC);
|
|
|
//绘制井体边线
|
|
|
virtual void DrawWellBodyLine(CXyDC* pDC);
|
|
|
|
|
|
//virtual void AddLineEntity(); //创建线对象
|
|
|
//virtual void AddTextEntity(); //创建文本对象
|
|
|
////添加道标题
|
|
|
//virtual void AddTrackHead();
|
|
|
////添加道头线
|
|
|
//virtual void AddTrackHeadLine();
|
|
|
|
|
|
|
|
|
virtual void WritePCG_WellTemp(CFile &fw, int nBaseTabNum);//pcg文件中 井模板
|
|
|
virtual void WritePCG_Traces(CFile &fw, int nBaseTabNum); //pcg文件中 道部分
|
|
|
virtual void WritePCG_Datas(CFile &fw, int nBaseTabNum); //pcg文件中 道数据
|
|
|
//写自定义的扩展数据,写pcg及dml格式都可以用
|
|
|
virtual void WritePCG_Ext(CFile &fw, int nBaseTabNum);
|
|
|
virtual int ReadPCG_Exts(CFile &fr, const short &ver);
|
|
|
|
|
|
//void GetChildTracks(std::vector<CTrackObj*> &trackVec); //高峰.2016.03.24 得到一个trackGroup中所有非Group的道
|
|
|
virtual void DrawTrajectory(CXyDC* pDC);
|
|
|
|
|
|
virtual void SetActionNoSaveData(BOOL b);
|
|
|
|
|
|
int GetTrackPosInList(CTrackObj* pTrack);
|
|
|
void AddTarckToPos(int ipos, CTrackObj* pTrack);
|
|
|
void GetMaxVGroupTrackNum(int& totalNum);
|
|
|
|
|
|
virtual CRect8 GetDragMoveRect();
|
|
|
|
|
|
virtual void SetFontScale(double yScale);// 字符缩放先按照y同比例缩放
|
|
|
virtual void afterCalculateSize();
|
|
|
|
|
|
virtual void GetTypeTrackList(TRACKLIST* trackList,ETrackType trackType);
|
|
|
protected:
|
|
|
TRACKLIST m_trackList;
|
|
|
EGroupType m_eGroupType;
|
|
|
public:
|
|
|
virtual int ReadPCG_Exts(CKXmlParse& xp, const short &ver);
|
|
|
};
|
|
|
|