// 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_)