80 lines
3.0 KiB
C++
80 lines
3.0 KiB
C++
// Medium3D.h: interface for the CMedium3D class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_MEDIUM3D_H__71253A33_A9CF_4ED8_AC7C_0086B57C5C20__INCLUDED_)
|
|
#define AFX_MEDIUM3D_H__71253A33_A9CF_4ED8_AC7C_0086B57C5C20__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "Medium.h"
|
|
#include "scriptor.h"
|
|
|
|
#include "Script3D.h"
|
|
|
|
#include "OpCreate3DSptDlg.h"
|
|
typedef struct ST_MID_GAR_SCAN_PARAM
|
|
{
|
|
float fMinAMSpace; //AM的最小距离,其实就是指的是AM水平距离上的最小距离
|
|
float fABSpace; //AB的距离
|
|
float fAPosY; //A点的Y轴距离
|
|
ST_MID_GAR_SCAN_PARAM()
|
|
{
|
|
fMinAMSpace = 0;
|
|
fABSpace = 0;
|
|
fAPosY = 0;
|
|
}
|
|
}STMidGarScanParam;
|
|
class CMedium3D : public CMedium
|
|
{
|
|
public:
|
|
virtual void SetPoleDistance(DOUBLE f_dis_x, DOUBLE f_dis_y);
|
|
virtual void SetPoleStep(int f_step_x, int f_step_y);
|
|
virtual void SetFlags(BOOL Flags);
|
|
CMedium3D();
|
|
CMedium3D(int iAR);
|
|
virtual ~CMedium3D();
|
|
|
|
//继承而来
|
|
struct _scriptor *m_scr;
|
|
virtual bool GenerateSptRecElecVal(int iEAmount, int* pMaxLevel, int* pPtAmount, CPtrArray* pSptRecArray) = NULL;
|
|
virtual void CalculateSptPtLoc(int iMul, CSptRecord* pSptRecord) = NULL;
|
|
virtual int GenSptRecLevel(int iA, int iB, int iM, int iN) = NULL;
|
|
virtual int GenSptRecPosInLevel(int iA, int iB, int iM, int iN) = NULL;
|
|
virtual int GetMaxLevelByEAmount(int iEAmount) = NULL;
|
|
virtual float CalculateCESptKVal(float fA, float fB, float fX, float fY) = NULL;
|
|
virtual float CalculateDepth(float fA, float fFactor = 0.5);
|
|
virtual void CalculateTdPtLoc(const CRect& vRect, const int& iEAmount, int& iMaxLevel, CRect& lRect, int& iSmWidth, int& iSmHeight, CPtrArray* pTdRecArray);
|
|
virtual void Destroy();
|
|
//3D脚本算法的封装,注意:只有3D装置可调用以下函数
|
|
virtual void create() = NULL;//创建脚本
|
|
virtual void SetRect(int x0, int y0, int x1, int y1) = NULL; //设置矩形大小
|
|
virtual void setZone(bool enable, int zonec, int *zonev) = NULL; //设置需要生成测点的象限
|
|
virtual BOOL setPoleStart(int startpole) = NULL; //设置测点的起始位置
|
|
virtual BOOL generate() = NULL; //执行脚本生成
|
|
|
|
virtual int getPoleStart() = NULL; //获取起始电极
|
|
virtual int getPoleCount() = NULL; //获取电极总数
|
|
virtual struct _rect * getRect() = NULL; //获取矩阵
|
|
virtual void SaveScr() = NULL; //生成脚本文件
|
|
|
|
virtual bool GenerateSptRecElecVal3D( int nSplittedNum,CScript3D *pScript, int* pPtAmount, CPtrArray* pSptRecArray);
|
|
|
|
//Gradient装置
|
|
virtual void SetPointCPosition(char *f_type, int x, int y) = NULL; //设置Gradient装置类型的C点位置
|
|
|
|
// private:
|
|
// struct _scriptor *m_scr;
|
|
// struct _rect m_rect;
|
|
|
|
virtual BOOL CheckPointVailed(_point *point, int SplittedId,int *result);
|
|
void SetStackNumber(UINT uiStackNumber){m_uiStackNumber = uiStackNumber;}
|
|
|
|
protected:
|
|
UINT m_uiStackNumber;
|
|
};
|
|
|
|
#endif // !defined(AFX_MEDIUM3D_H__71253A33_A9CF_4ED8_AC7C_0086B57C5C20__INCLUDED_)
|