Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

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