⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logcurve.h

📁 是有关石油物理测井曲线的分层方法
💻 H
字号:
#if !defined(AFX_LOGCURVE_H__AED9A0FB_8A82_4DAA_836B_96CE6F766E96__INCLUDED_)
#define AFX_LOGCURVE_H__AED9A0FB_8A82_4DAA_836B_96CE6F766E96__INCLUDED_
//#ifndef _INCLUDED_VISUAL_CPP_LOGCURVE
//#define _INCLUDED_VISUAL_CPP_LOGCURVE

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// LogCurve.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CLogCurve document

class CLogCurve : public CObject
{
protected:
	
	DECLARE_DYNCREATE(CLogCurve)

// Attributes
public:
	CLogCurve();           // protected constructor used by dynamic creation

// Operations
public:
const CLogCurve& CLogCurve::operator =(const CLogCurve &Cur)
{
	nID=Cur.nID;				//曲线编号——对应数据编号	
	tmpnID=Cur.tmpnID;				//曲线编号——对应数据编号	
	strCurName.Format("%s",Cur.strCurName);				//曲线名称
	strOthCurName.Format("%s",Cur.strOthCurName);		//曲线别名(显示时用)
	StrCurDanwei.Format("%s",Cur.StrCurDanwei);			//曲线单位
	crColor=Cur.crColor;				//曲线颜色
	nStyle=Cur.nStyle ;					//曲线线型
	nWidth=Cur.nWidth ;					//曲线线宽
	nLeft=Cur.nLeft;					//曲线左边界刻度值
	nRight=Cur.nRight;					//曲线右边界刻度值
	nKeduType=Cur.nKeduType;			//曲线刻度类型(0——线性刻度,1——对数刻度)
	return *this;
}

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CLogCurve)
	public:
	virtual void Serialize(CArchive& ar);   // overridden for document i/o
	protected:
	//}}AFX_VIRTUAL

// Implementation
public:
	int GetnID();
	void SetnId(int id);
	BOOL flagEditd;				//是否编辑过
	int  tmpnID;				//数据编辑时的临时数据编号	
	CString strCurName;			//曲线名称
	CString strOthCurName;		//曲线别名(显示时用)
	CString StrCurDanwei;		//曲线单位
	COLORREF crColor;			//曲线颜色
	int nStyle;					//曲线线型
	int nWidth;					//曲线线宽
	float nLeft,nRight;			//曲线左、右边界刻度值
	int nKeduType;				//曲线刻度类型(0——线性刻度,1——对数刻度)
	virtual ~CLogCurve();
#ifdef _DEBUG
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:
	int nID;					//曲线编号——对应数据编号,
};

/////////////////////////////////////////////////////////////////////////////
/////剖面填充类型
/*
struct CPMTC
{
//	int		m_nID;					//序号
//	BOOL	m_bflag;				//是否填充
	CString strName;				//岩性名称
	int		m_nSign;				//岩性符号次序
};
*/

class CPMTC : public CObject
{
protected:	
	DECLARE_DYNCREATE(CPMTC)
public:
	CPMTC()
	{
		strName.Format("%s","UNKNOW");
		m_nSign=-1;
		m_nSouCur=-1;
	};
	~CPMTC()
	{
	}
	
// Operations
public:
	const CPMTC& CPMTC::operator =(const CPMTC &tPmtc)
	{
		strName.Format("%s",tPmtc.strName);
		m_nSign=tPmtc.m_nSign;
		m_nSouCur=tPmtc.m_nSouCur; 
		return *this;
	};
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CYXTC)
	public:
	virtual void Serialize(CArchive& ar);   // overridden for document i/o
	protected:
	//}}AFX_VIRTUAL

public:
	int		m_nSouCur;				//起始曲线在道中的位置
	CString strName;					//岩性名称
	int		m_nSign;					//岩性符号次序
};
/////////////////////////////////////////////////////////////////////////////
/////岩性填充类

class CYXTC : public CObject
{
protected:	
	DECLARE_DYNCREATE(CYXTC)
public:
	CYXTC()
	{
//		ZeroMemory( this, sizeof(CYXTC) );		//初始化结构
		m_bflag=false;
		YxName.Format("%s","UNKNOW");
		m_nType=0;
		m_nDesCur=-1;
//		m_DesCurName="左边界";
	};
	~CYXTC()
	{
	}
	
// Operations
public:
	const CYXTC& CYXTC::operator =(const CYXTC &tYxtc)
	{
		m_bflag=tYxtc.m_bflag;
		YxName.Format("%s",tYxtc.YxName);
		m_nType=tYxtc.m_nType;
		m_nSouCur=tYxtc.m_nSouCur; 
		m_nDesCur=tYxtc.m_nDesCur;
		m_nSign=tYxtc.m_nSign;		
		return *this;
	};
const BOOL CYXTC::operator ==(const CYXTC &tYxtc)
	{		
		if((m_nDesCur==tYxtc.m_nDesCur && m_nSouCur==tYxtc.m_nSouCur)||
			(m_nDesCur==tYxtc.m_nSouCur && m_nSouCur==tYxtc.m_nDesCur))
			return true;
		else
			return false;
};
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CYXTC)
	public:
	virtual void Serialize(CArchive& ar);   // overridden for document i/o
	protected:
	//}}AFX_VIRTUAL

public:
	BOOL	m_bflag;				//是否填充
	CString YxName;					//岩性名称
	int		m_nID;					//序号
	int		m_nSign;				//岩性符号次序
	int		m_nType;				//填充类型 0——岩性剖面、1——岩性成份剖面
	int		m_nSouCur;				//起始曲线在道中的位置
	int		m_nDesCur,m_nDesCur1;	//目标曲线在道中的位置(-1,-2——左,右边界,其它——测井曲线)
	int		daoID;					//在的道序号
};

/////////////////////////////////////////////////////////////////////////////
// CDao document
/////绘图道类
class CDao : public CObject
{
protected:
	DECLARE_DYNCREATE(CDao)

// Attributes
public:	
	CDao();           // protected constructor used by dynamic creation
	friend class CTestView;

// Operations
public:
	friend class CTestDoc;
	const CDao& CDao::operator =(const CDao &tDao)
	{
		int i;
		for(i=0;i<MaxNumDaoInDao;i++)
			Curve[i]=tDao.Curve[i];					//道中的曲线
		for(i=0;i<MaxNumPouMianInDao;i++)
		{
			m_Pmtc[i]=tDao.m_Pmtc[i]; 
		}
		nID=tDao.nID ;							//道号——道位置
		nType=tDao.nType;						//类型(-2——成分填充道,-1——岩性填充道,0——绘图道,1——深度刻度道)
		nKeduType=tDao.nKeduType;				//刻度类型(0——线性刻度,1——对数刻度)
		rcHead=tDao.rcHead;						//道头部矩形框
		rcBody=tDao.rcBody;						//道体部矩形框
		nLeft=tDao.nLeft; 
		nRight=tDao.nRight ;					//对数刻度时的左右刻度值
		crBkColor=tDao.crBkColor; 
		crColor=tDao.crColor;	
		nNumCur=tDao.nNumCur;
		return *this;
	};

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CYXTC)
	public:
	enum{MaxNumDaoInDao=30,MaxNumPouMianInDao=30,MaxNumYanxingInDao=10};
	virtual void Serialize(CArchive& ar);   // overridden for document i/o
	protected:
	//}}AFX_VIRTUAL

// Implementation
public:
	int GetType();
	void SetType(int nTp);
	BOOL AddACur(CString &CurName,int nDaoID,float LeftVal,float RightVal);
	BOOL AddACur(CString  &CurName,int nDaoID);
	void AddACur( CLogCurve &Cur);

	CLogCurve Curve[MaxNumDaoInDao];	//道中的曲线
	int nID;							//道号——道位置
	int nKeduType;						//刻度类型(0——线性刻度,1——对数刻度)
	CRect rcHead,rcBody;				//道头部、体部矩形框
	float nLeft,nRight;					//对数刻度或者线性刻度时的左右刻度值
	int nLwz,nRwz,nWidth;				//道的左右位置、宽度
	COLORREF crBkColor,crColor;	
	int nNumCur;
//岩性填充标记
	int numYXTC;						//已经进行的岩性填充数目
	CYXTC m_yxtc[MaxNumYanxingInDao];
//剖面填充标记
	int numPMTC;
	CPMTC m_Pmtc[MaxNumPouMianInDao];	
//曲线绘制时的横向坐标数据指针
//	CPoint* Pt[MaxNumPouMianInDao];
	int* ptY[MaxNumPouMianInDao];
	virtual ~CDao();
#ifdef _DEBUG
	virtual void Dump(CDumpContext& dc) const;
#endif
	// Generated message map functions
protected:
	int nType;							//类型(-1——深度刻度道,0——绘图道,1——岩性剖面填充道,2——岩性成分填充道)
	float XianZhiX(float ll , float lr ,float x );
	//{{AFX_MSG(CDao)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG
};

/////////////////////////////////////////////////////////////////////////////
// CPAGE document页面设置类

class CPAGE : public CObject
{
protected:
	DECLARE_DYNCREATE(CPAGE)

// Attributes
public:
	int left,right,top,bottom;
	int nHightHead,nHightBody;							//曲线显示时头部区域、曲线区域的高度值
// Operations
public:
	CPAGE();           // protected constructor used by dynamic creation

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CPAGE)
	public:
	virtual void Serialize(CArchive& ar);   // overridden for document i/o
	protected:
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CPAGE();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

	// Generated message map functions
protected:
	//{{AFX_MSG(CPAGE)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG
//	DECLARE_MESSAGE_MAP()
};


/////////////////////////////////////////////////////////////////////////////
// CWellHead document

class CWellHead : public CObject
{
protected:
	//CWellHead();           // protected constructor used by dynamic creation
	DECLARE_DYNCREATE(CWellHead)
// Attributes
public:
	CWellHead();
// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CWellHead)
	public:
	enum{MaxNumDaoInWell=10,MaxNumCurInDao=30,MaxNumCurInWell=80,MaxNumPoint=4000};
	virtual void Serialize(CArchive& ar);   // overridden for document i/o
	protected:
	//}}AFX_VIRTUAL
// Implementation
public:
	void SetHeadHight(int newHignt);
	void SetMaxNCD();
	int GetMaxNCD();
	void InitWellPage();
	virtual ~CWellHead();
//模板数据
	CDao myDao[MaxNumDaoInWell];
	CPAGE page;
	int nScal;
	int nNumDao;
	int nStPoint,nEndPoint;								//需要绘图的起止采样点位置
	int tnStPoint,tnEndPoint;							//需要绘图的起止采样点位置
	CLogCurve Curve[MaxNumCurInWell];
	BOOL bWell;											//是否有井数据 
	float (*pLogData)[81];		//实际测井数据
//	float pLogData[MaxNumPoint][MaxNumCurInWell];		//实际测井数据
	CString WellName,FileName;							
	float STDEP,ENDDEP,RLEV;							//实际测量井段起止深度、采样间隔
	float dispSTDEP,dispENDDEP;							//需要显示井段起止深度
	float tdispSTDEP,tdispENDDEP;						//页面显示井段起止深度
//	float YxSTDEP,YxENDDEP;								//岩性填充井段起止深度
	int  nNumCur,tnNumCur;
	long nTotalNumPoint,tnTotalNumPoint;				//总采样点数、需要绘制井段的采样点数
//	int strCurName[200][10];
//	double strOthCurName[200][10];
//	char StrCurDawei[200][10];
	int nVBili;
	CRgn rgnT;

#ifdef _DEBUG
	virtual void Dump(CDumpContext& dc) const;
#endif
	// Generated message map functions
protected:
	int nMaxNCD;										//所有道中最多曲线条数
};
#endif // !defined(AFX_LOGCURVE_H__AED9A0FB_8A82_4DAA_836B_96CE6F766E96__INCLUDED_)
//_INCLUDED_VISUAL_CPP_LOGCURVE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -