|
|
#ifndef TRACKDEPTH_H
|
|
|
#define TRACKDEPTH_H
|
|
|
#pragma once
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
//文件 TrackdepthObj.h
|
|
|
//主要功能:
|
|
|
// 深度道类
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
class CInclinedTrack;
|
|
|
class AFX_EXT_CLASS CTrackDepth : public CInclinedTrack
|
|
|
{
|
|
|
protected:
|
|
|
//DECLARE_SERIAL(CTrackDepth);
|
|
|
void Init();
|
|
|
public:
|
|
|
CTrackDepth();
|
|
|
CTrackDepth(const CRect8& position);
|
|
|
virtual ~CTrackDepth();
|
|
|
CLONE_WELLOBJECT(CTrackDepth)
|
|
|
virtual void operator=(CTrackDepth& object);
|
|
|
|
|
|
public:
|
|
|
double m_fLevel; // 补心海拔
|
|
|
double m_fMajorGrid; // 主刻度间隔
|
|
|
double m_fMinorGrid; // 次刻度间隔
|
|
|
double m_fMajorWidth; // 主刻度宽度占道宽比例
|
|
|
double m_fMinorWidth; // 次刻度宽度占道宽比例
|
|
|
GDFLOGPENEXT m_penGridMajor; // 主刻度笔
|
|
|
GDFLOGPENEXT m_penGridMinor; // 次刻度笔
|
|
|
GDFLOGFONTEXT m_fontGridMark; // 标注字体
|
|
|
CString m_TextAlign; // 对齐方式
|
|
|
|
|
|
protected:
|
|
|
DWORD m_nTrackDepthFlags; // 深度道状态
|
|
|
// 曲线道Flags
|
|
|
enum TrackCurveFlags
|
|
|
{
|
|
|
TrackDepthFlagMarkUnit = 0x0001, // 显示标注单位
|
|
|
TrackDepthFlagGridMinor = 0x0002, // 画次刻线
|
|
|
TrackDepthFlagMarkLeft = 0x0004, // 左标注
|
|
|
TrackDepthFlagHideTitle = 0x0008, // 隐藏标题
|
|
|
TrackDepthFlagMarkLevel = 0x0010, // 海拔刻度
|
|
|
TrackDepthFlagMarkFeet = 0x0020, // 英制单位
|
|
|
TrackDepthFlagGrid = 0x0040, // 显示刻标
|
|
|
TrackDepthFlagMarkArrange = 0x0080, // 竖直显示标注
|
|
|
TrackDepthFlagGridMin = 0x0100, // 画最小刻线
|
|
|
TrackDepthFlagGridFit = 0x0200, // 固定刻线大小
|
|
|
TrackDepthFlagMarkBk = 0x0400 // 显示标注背景(白色)
|
|
|
};
|
|
|
//DWORD m_nDepthTraceStyleFlags; //分层道绘制样式 0-不绘制边线 1-绘制左边线 2-绘制上边线 4-绘制右边线 8-绘制下边线 11-仅绘制左边线
|
|
|
////14-仅绘制右边线 15-绘制全部边线
|
|
|
|
|
|
//enum LayerTraceStyleFlags
|
|
|
//{
|
|
|
// TraceStyleFlagNoLine = 0x0000, //
|
|
|
// TraceStyleFlagLeftLine = 0x0001, //
|
|
|
// TraceStyleFlagTopLine = 0x0002, //
|
|
|
// TraceStyleFlagRightLine = 0x0004, //
|
|
|
// TraceStyleFlagBottomLine = 0x0008,
|
|
|
// TraceStyleFlagOnlyLeftLine = TraceStyleFlagBottomLine|TraceStyleFlagTopLine|TraceStyleFlagLeftLine,
|
|
|
// TraceStyleFlagOnlyRightLine = TraceStyleFlagBottomLine|TraceStyleFlagTopLine|TraceStyleFlagRightLine,
|
|
|
// TraceStyleFlagAllLine = TraceStyleFlagBottomLine|TraceStyleFlagTopLine|TraceStyleFlagLeftLine|TraceStyleFlagRightLine
|
|
|
//};
|
|
|
|
|
|
// Implementation
|
|
|
public:
|
|
|
|
|
|
virtual void DrawdepthMark(CXyDC* pDC); // 画道标
|
|
|
|
|
|
virtual void Draw(CXyDC* pDC);
|
|
|
virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
//设置格子属性
|
|
|
virtual void SetPenGrid(GDFLOGPENEXT& penmajor, GDFLOGPENEXT& penminor);
|
|
|
//设置道字体属性
|
|
|
virtual void SetFontGridMark(GDFLOGFONTEXT& font);
|
|
|
//设置刻度间隔
|
|
|
virtual void SetSpace(double major, double minor);
|
|
|
|
|
|
//开关变量值
|
|
|
virtual void SetTrackDepthFlags(DWORD flags);
|
|
|
virtual void SetShowMarkUnit(BOOL bFlag);
|
|
|
virtual void SetShowGridMinor(BOOL bFlag);
|
|
|
virtual void SetShowGrid(BOOL bFlag);
|
|
|
virtual void SetMarkLeft(BOOL bFlag);
|
|
|
virtual void SetMarkFeet(BOOL bFlag);
|
|
|
virtual void SetMarkArrange(BOOL bFlag);
|
|
|
virtual void SetMarkLevel(BOOL bFlag);
|
|
|
virtual void SetShowGridMin(BOOL bFlag);
|
|
|
virtual void SetGridFit(BOOL bFlag);
|
|
|
virtual void SetShowMrakBk(BOOL bFlag);
|
|
|
|
|
|
virtual DWORD GetTrackDepthFlags();
|
|
|
virtual BOOL IsShowMarkUnit();
|
|
|
virtual BOOL IsShowGridMinor();
|
|
|
virtual BOOL IsShowGrid();
|
|
|
virtual BOOL IsMarkLeft();
|
|
|
virtual BOOL IsMarkFeet();
|
|
|
virtual BOOL IsMarkArrange();
|
|
|
virtual BOOL IsMarkLevel();
|
|
|
virtual BOOL IsShowGridMin();
|
|
|
virtual BOOL IsGridFit();
|
|
|
virtual BOOL IsShowMrakBk();
|
|
|
//计算刻度线标
|
|
|
virtual void CalcBorders();
|
|
|
|
|
|
public:
|
|
|
//读深度道属性
|
|
|
virtual int ReadPCG_Self(CFile &fr,CXmlParse& xp,const short& ver );
|
|
|
//读多井深度道属性
|
|
|
virtual int ReadPCG_SelfSection(CFile &fr,CXmlParse& xp,const short& ver);
|
|
|
//新版pcg读取welltrace头
|
|
|
virtual int ReadPCG_TraceSelf(CXmlParse& xp);
|
|
|
//读取网格
|
|
|
virtual int ReadPCG_GridStyle(CXmlParse& xp,const short& ver);
|
|
|
|
|
|
/// 2015.05.04 删状图读取字体以及网格属性
|
|
|
virtual int ReadPCG_Font(CXmlParse& xp,const short& ver);
|
|
|
virtual int ReadPCG_Major(CXmlParse& xp,const short& ver);
|
|
|
virtual int ReadPCG_Minor(CXmlParse& xp,const short& ver);
|
|
|
|
|
|
//写pcg格式的道
|
|
|
virtual void WritePCG_Trace(CFile &fw,int nBaseTabNum);
|
|
|
//写pcg格式的道内数据
|
|
|
virtual void WritePCG_Data(CFile &fw,int nBaseTabNum);
|
|
|
//写pcg格式的道
|
|
|
virtual void WritePCG_TraceSection(CFile &fw,int nBaseTabNum);
|
|
|
//写pcg格式的道内数据
|
|
|
virtual void WritePCG_DataSection(CFile &fw,int nBaseTabNum);
|
|
|
|
|
|
struct STick //刻度标
|
|
|
{
|
|
|
CPoint2D pt1; //边界上的端点
|
|
|
CPoint2D pt2; //道内部的端点
|
|
|
CString text; //标注的文字
|
|
|
};
|
|
|
|
|
|
virtual void SetFontScale(double yScale);// 字符缩放先按照y同比例缩放
|
|
|
protected:
|
|
|
//画斜井道深度道标
|
|
|
void DrawdepthMarkInclined(CXyDC* pDC);
|
|
|
//画直井深度道标
|
|
|
void DrawdepthMarkStraight(CXyDC* pDC);
|
|
|
//根据桩号,获取刻线,startIndex为开始序号,lratio 为目标桩号占总桩号比例,widRatio为刻度线宽度占道宽比例
|
|
|
void GetTick(int& sIndexLeft, int& sIndexRight, CPoint2D& ptHead, CPoint2D& ptTail, double lratio, double widRatio );
|
|
|
//根据桩号,获取刻线,和对侧点,startIndex为开始序号,lratio 为目标桩号占总桩号比例,widRatio为刻度线宽度占道宽比例
|
|
|
void GetTick(int& sIndexLeft, int& sIndexRight, CPoint2D& ptHead, CPoint2D& ptTail, CPoint2D& ptOpposit, double lratio, double widRatio );
|
|
|
|
|
|
//获取深度间隔delt_dep对应的桩号长度
|
|
|
double GetDeltL(double delt_dep);
|
|
|
//由已知直线的向量,和直线上一端点pt1,斜率k 和长度dist < 0为左侧点,dist > 0 为右侧点 计算线段另一端点pt2
|
|
|
//已修改,需事先指定变量a,b,k k2 ks
|
|
|
void CalcSegPoint(/*double a, double b,*/ CPoint2D& pt1, CPoint2D& pt2,/* double k,*/ double dist);
|
|
|
//计算曲线第i点到i+1点之间的向量, a,b,垂向斜率k,k2
|
|
|
void CalcCoefficient(CCurve& curve,int index);
|
|
|
//根据与pt1的距离计算线段上某点
|
|
|
CPoint2D CalcMidPoint(CPoint2D& pt1, CPoint2D& pt2,double dist2pt1);
|
|
|
|
|
|
double a,b;
|
|
|
double k,k2;
|
|
|
double s; //s = sqrt((1/(k2 + 1)));
|
|
|
//刻度标集
|
|
|
list<STick> m_ticks;
|
|
|
|
|
|
public:
|
|
|
virtual int ReadPCG_Self(CKXmlParse& xp, const short& ver);
|
|
|
//读多井深度道属性
|
|
|
virtual int ReadPCG_SelfSection( CKXmlParse& xp, const short& ver);
|
|
|
//新版pcg读取welltrace头
|
|
|
virtual int ReadPCG_TraceSelf(CKXmlParse& xp);
|
|
|
//读取网格
|
|
|
virtual int ReadPCG_GridStyle(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Font(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Major(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Minor(CKXmlParse& xp, const short& ver);
|
|
|
};
|
|
|
|
|
|
#endif |