This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -0,0 +1,57 @@
#ifndef AFX_C_2D_SIMULATION_DLG_H_20191223_INCLUDE_H
#define AFX_C_2D_SIMULATION_DLG_H_20191223_INCLUDE_H
#pragma once
// C2DSimulationDlg 对话框
#define WM_MSG_UPDATE_CROSSHOLEMAINWND_BTN WM_USER+1000
class C2DSimulationDlg : public CDialog
{
DECLARE_DYNAMIC(C2DSimulationDlg)
public:
// 对话框数据
enum { IDD = IDD_DIALOG_SIMULATION_BOARD };
static C2DSimulationDlg* GetInstance();
void AddBoreholePointToVector(std::map<STWellPoints, std::vector<STBoreHolePoints>> mapNewPoints); //将坐标点添加到井下集合
void AddSurfacePointsToVector(std::vector<STBoreHolePoints> vecNewPoints); //将坐标点添加到地表集合
void DeleteCoordinatesPoint();
//设置时间间隔
void SetTimeInterval(int iTimeInterval);
//获取整个测试列表
void SetSingleChannelSimulationRunMethod(vector<STDatabaseABMNInfo> vecAllBoreholeABMNInfo);
void SetMultiChannelSimulationRunMethod(map<int, map<int, map<int, STDatabaseABMNInfo>>> mapPointsSortedByABMN);
BOOL StartSimulation(); //开始模拟
BOOL StopSimulation(); //结束模拟
BOOL IsSimulating(); //是否正在模拟中
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
C2DSimulationDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~C2DSimulationDlg();
//模拟脚本跑极方式
static UINT SimulateScriptRunMethodThread(LPVOID lParam);
//用户保存需要绘制的点
std::map<STWellPoints, std::vector<STBoreHolePoints>> m_mapBoreholePoints; //保存井下所有的点,,int存放X用于区分是否在同一个孔
std::vector<STBoreHolePoints> m_vecSurfacePoints; //地表所有的点,只有一条测线
BOOL m_bStopSimulation; //停止模拟
int m_iA;
int m_iB;
int m_iM;
int m_iN;
int m_iTimeInterval; //模拟跑极间隔
CRect m_rcWnd; //模拟器窗口大小
CRect m_rcBrush; //绘制电缆示意图区域
vector<STDatabaseABMNInfo> m_vecAllBoreholeABMNInfo; //单通道ABMN信息
map<int, map<int, map<int, STDatabaseABMNInfo>>> m_mapPointsSortedByABMN; //多通道ABMN信息,第一个int用于存放A,第二个int用于存放B,第三个int对应M,改变了的作用主要是用来控制多通道/单通道测点跑极方式的
};
#endif
@@ -0,0 +1,66 @@
#ifndef AFX_C_3D_SIMULATION_DLG_H_20191223_INCLUDE_H
#define AFX_C_3D_SIMULATION_DLG_H_20191223_INCLUDE_H
#pragma once
// C2DSimulationDlg 对话框
#define WM_MSG_UPDATE_CROSSHOLEMAINWND_BTN WM_USER+1000
class C3DSimulationDlg : public CDialog
{
DECLARE_DYNAMIC(C3DSimulationDlg)
public:
// 对话框数据
enum { IDD = IDD_DIALOG_SIMULATION_BOARD };
static C3DSimulationDlg* GetInstance();
void AddBoreholePointToVector(map<STWellPoints, vector<STBoreHolePoints>> mapNewPoint); //将坐标点添加到井下集合
void AddSurfaceXPointsToVector(map<int, std::vector<STBoreHolePoints>> mapXNewPoints); //将坐标点添加到地表集合
void AddSurfaceYPointsToVector(map<int, std::vector<STBoreHolePoints>> mapYNewPoints); //将坐标点添加到地表集合
void DeleteCoordinatesPoint();
//设置时间间隔
void SetTimeInterval(int iTimeInterval);
//获取整个测试列表
void SetSingleChannelSimulationRunMethod(vector<STDatabaseABMNInfo> vecAllBoreholeABMNInfo);
void SetMultiChannelSimulationRunMethod(map<int, map<int, map<int, STDatabaseABMNInfo>>> mapPointsSortedByABMN);
BOOL StartSimulation(); //开始模拟
BOOL StopSimulation(); //结束模拟
BOOL IsSimulating(); //是否正在模拟中
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
float CalcMaxCableLength(); //计算X/Y/Z线缆最大长度
DECLARE_MESSAGE_MAP()
private:
C3DSimulationDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~C3DSimulationDlg();
//模拟脚本跑极方式
static UINT SimulateScriptRunMethodThread(LPVOID lParam);
//用户保存需要绘制的点
map<STWellPoints, vector<STBoreHolePoints>> m_mapBoreholePoints; //STWellPoints存放X/Y坐标,vector<STBoreHolePoints>存放井电极坐标
std::map<int, std::vector<STBoreHolePoints>> m_mapSurfaceXPoints; //地表X方向坐标
std::map<int, std::vector<STBoreHolePoints>> m_mapSurfaceYPoints; //地表Y方向坐标
BOOL m_bStopSimulation; //停止模拟
int m_iA;
int m_iB;
int m_iM;
int m_iN;
int m_iTimeInterval; //模拟跑极间隔
CRect m_rcWnd; //模拟器窗口大小
CRect m_rcBrush; //绘制电缆示意图区域
float m_fMaxCableLength; //X/Y/Z三个方向线缆最大长度
int m_iEachSmallSize; //每个单元格对应的像素
BOOL m_isNeedCalc; //是否需要计算值
CFont* m_pFont; //绘制字体大小
vector<STDatabaseABMNInfo> m_vecAllBoreholeABMNInfo; //单通道ABMN信息
map<int, map<int, map<int, STDatabaseABMNInfo>>> m_mapPointsSortedByABMN; //存放写入数据库ABMN信息,用于多通道,第一个int用于存放A,第二个int用于存放B,第三个int对应M,改变了的作用主要是用来控制多通道/单通道测点跑极方式的
};
#endif
@@ -0,0 +1,65 @@
#ifndef C_CROSSHOLE_CONFIG_MAIN_DLG_H_20190319
#define C_CROSSHOLE_CONFIG_MAIN_DLG_H_20190319
#pragma once
#include "afxcmn.h"
#include "CtrlProtocolDef.h"
#include "crossHole/COption2DBoreholeDlg.h"
#include "crossHole/COption2DGeometryDlg.h"
#include "crossHole/COption2DSurfaceDlg.h"
#include "crossHole/COption2DSettingDlg.h"
#include "crossHole/CCrosshole2dDrawingBoardDlg.h"
// CCrossHoleConfig2DMainDlg 对话框
class CCrossHoleConfig2DMainDlg : public CDialog
{
DECLARE_DYNAMIC(CCrossHoleConfig2DMainDlg)
public:
static CCrossHoleConfig2DMainDlg* GetInstance();
virtual BOOL OnInitDialog();
afx_msg void OnTcnSelchangeTabArChange(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedBtnLoadGeometry();
afx_msg void OnBnClickedBtnCreate();
afx_msg void OnBnClickedBtnStartSimulation();
afx_msg void OnBnClickedBtnStopSimulation();
afx_msg void OnBnClickedBtnClose();
afx_msg void OnDestroy();
LRESULT OnMsgCrossHoleMainWndBtn(WPARAM wParam, LPARAM lParam);
// 对话框数据
enum { IDD = IDD_DIALOG_2D_CROSS_HOLE_CONFIG };
void ChangeTabPage(EN_TAB_PAGE pageType, std::vector<STBoreHolePoints> vecPoints, STBoreHoleParam stBoreholeParam);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
//计算L值
std::vector<int> CalcLValue(std::vector<STBoreHolePoints> vecPointBH1, std::vector<STBoreHolePoints> vecPointBH2);
//生成测试点
void TwoBoreholeGenerateScript(std::vector<STBoreHolePoints> vecPointBH1, std::vector<STBoreHolePoints> vecPointBH2);
//写入数据库
BOOL SaveTestPointToDB();
float GetUniSptXPos(int iA, int iB, int iM, int iN);
private:
CCrossHoleConfig2DMainDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CCrossHoleConfig2DMainDlg();
CTabCtrl m_tabChange;
_ConnectionPtr m_pConnection;
CString m_strScriptName;
CString m_strTimeInterval;
CString m_strOperator;
CString m_strNote;
UINT32 m_uiEamount; //电极数量
UINT32 m_uiCHamount; //通道数量
UINT32 m_uiTPamount; //测点数量
CRect m_rcRect;
CRect m_rcRectLoc;
CString m_strPoleDistance;
CString m_strPoleStep;
vector<STDatabaseABMNInfo> m_vecAllBoreholeABMNInfo;//存放单通道,绘制模拟跑极的测点,依次取值绘制
map<int, map<int, map<int, STDatabaseABMNInfo>>> m_mapDatabaseABMNInfo; //存放多通道,写入数据库ABMN信息,用于多通道,第一个int用于存放A,第二个int用于存放B,第三个int对应M
};
#endif
@@ -0,0 +1,71 @@
#ifndef C_CROSSHOLE_CONFIG_3D_MAIN_DLG_H_20190716
#define C_CROSSHOLE_CONFIG_3D_MAIN_DLG_H_20190716
#pragma once
#include "afxcmn.h"
#include "CtrlProtocolDef.h"
#include "crossHole/COption3DBoreholeDlg.h"
#include "crossHole/COption3DGeometryDlg.h"
#include "crossHole/COption3DSurfaceDlg.h"
#include "crossHole/COption3DSettingDlg.h"
#include "crossHole/CCrosshole3dDrawingBoardDlg.h"
// CCrossHoleConfig3DMainDlg 对话框
class CCrossHoleConfig3DMainDlg : public CDialog
{
DECLARE_DYNAMIC(CCrossHoleConfig3DMainDlg)
public:
static CCrossHoleConfig3DMainDlg* GetInstance();
virtual BOOL OnInitDialog();
afx_msg void OnTcnSelchangeTabArChange(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedBtnLoadGeometry();
afx_msg void OnBnClickedBtnCreate();
afx_msg void OnBnClickedBtnStartSimulation();
afx_msg void OnBnClickedBtnStopSimulation();
afx_msg void OnBnClickedBtnClose();
afx_msg void OnDestroy();
LRESULT OnMsgCrossHoleMainWndBtn(WPARAM wParam, LPARAM lParam);
// 对话框数据
enum { IDD = IDD_DIALOG_3D_CROSS_HOLE_CONFIG };
void ChangeTabPage(EN_TAB_PAGE pageType, std::vector<STBoreHolePoints> vecPoints,STBoreHoleParam stBoreholeParam);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
//计算L值
std::vector<int> CalcLValue(std::vector<STBoreHolePoints> vecPointBH1, std::vector<STBoreHolePoints> vecPointBH2);
//生成测试点
void TwoBoreholeGenerateScript(std::vector<STBoreHolePoints> vecPointBH1, std::vector<STBoreHolePoints> vecPointBH2);
//写入数据库
BOOL SaveTestPointToDB();
//四井 AM装置生成测点
void OneBoreHoleGenerateScriptAM(std::map<int,std::vector<STBoreHolePoints>> mapPointBH);
void OneBoreHoleGenerateScriptAM(std::vector<STBoreHolePoints> vecPointBH);
void TwoBoreHoleGenerateScriptAM(int iDirectionType,std::vector<STBoreHolePoints> vecPointBH1, std::vector<STBoreHolePoints> vecPointBH2);
float GetUniSptXPos(int iA, int iB, int iM, int iN);
private:
CCrossHoleConfig3DMainDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CCrossHoleConfig3DMainDlg();
CTabCtrl m_tabChange;
_ConnectionPtr m_pConnection;
CString m_strScriptName;
CString m_strTimeInterval;
CString m_strOperator;
CString m_strNote;
UINT32 m_uiEamount; //电极数量
UINT32 m_uiCHamount; //通道数量
UINT32 m_uiTPamount; //测点数量
CRect m_rcRect;
CRect m_rcRectLoc;
CString m_strPoleDistance;
CString m_strPoleStep;
vector<STDatabaseABMNInfo> m_vecAllBoreholeABMNInfo;//存放单通道写入数据库ABMN信息,绘制模拟跑极的测点,依次取值绘制
int m_iMediumType;//m_iMediumType 0:跨孔(Geomative) 1:井地井(Geomative),2:跨孔AMGeomative
map<int, map<int, map<int, STDatabaseABMNInfo>>> m_mapDatabaseABMNInfo; //存放多通道写入数据库ABMN信息,用于多通道,第一个int用于存放A,第二个int用于存放B,第三个int对应M
};
#endif
@@ -0,0 +1,37 @@
#ifndef C_CROSS_HOLE_2D_DRAWING_BOARD_DLG_H_20190411
#define C_CROSS_HOLE_2D_DRAWING_BOARD_DLG_H_20190411
#pragma once
// CCrosshole2dDrawingBoardDlg 对话框
class CCrosshole2dDrawingBoardDlg : public CDialog
{
DECLARE_DYNAMIC(CCrosshole2dDrawingBoardDlg)
public:
// 对话框数据
enum { IDD = IDD_DIALOG_DRAWING_BOARD };
static CCrosshole2dDrawingBoardDlg* GetInstance();
void AddBoreholePointToVector(std::map<STWellPoints, std::vector<STBoreHolePoints>> mapNewPoints); //将坐标点添加到井下集合
void AddSurfacePointsToVector(std::vector<STBoreHolePoints> vecNewPoints); //将坐标点添加到地表集合
void DeleteCoordinatesPoint();
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
CCrosshole2dDrawingBoardDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CCrosshole2dDrawingBoardDlg();
//用户保存需要绘制的点
std::map<STWellPoints, std::vector<STBoreHolePoints>> m_mapBoreholePoints; //保存井下所有的点,,int存放X用于区分是否在同一个孔
std::vector<STBoreHolePoints> m_vecSurfacePoints; //地表所有的点,只有一条测线
CRect m_rcWnd; //模拟器窗口大小
CRect m_rcBrush; //绘制电缆示意图区域
};
#endif
@@ -0,0 +1,41 @@
#ifndef CCROSS_HOLE_3D_DRAWING_BOARD_DLG_H_20190411
#define CCROSS_HOLE_3D_DRAWING_BOARD_DLG_H_20190411
#pragma once
// CDrawingBoardDlg 对话框
class CCrosshole3dDrawingBoardDlg : public CDialog
{
DECLARE_DYNAMIC(CCrosshole3dDrawingBoardDlg)
public:
// 对话框数据
enum { IDD = IDD_DIALOG_DRAWING_BOARD };
static CCrosshole3dDrawingBoardDlg* GetInstance();
void AddBoreholePointToVector(map<STWellPoints, vector<STBoreHolePoints>> mapNewPoint); //将坐标点添加到井下集合
void AddSurfaceXPointsToVector(map<int, std::vector<STBoreHolePoints>> mapXNewPoints); //将坐标点添加到地表集合
void AddSurfaceYPointsToVector(map<int, std::vector<STBoreHolePoints>> mapYNewPoints); //将坐标点添加到地表集合
void DeleteCoordinatesPoint();
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
float CalcMaxCableLength(); //计算X/Y/Z线缆最大长度
private:
CCrosshole3dDrawingBoardDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CCrosshole3dDrawingBoardDlg();
//用户保存需要绘制的点
map<STWellPoints, vector<STBoreHolePoints>> m_mapBoreholePoints; //保存井下所有的点,,int存放X用于区分是否在同一个孔
map<int, std::vector<STBoreHolePoints>> m_mapSurfaceXPoints; //地表X方向电缆电极坐标
map<int, std::vector<STBoreHolePoints>> m_mapSurfaceYPoints; //地表Y方向电缆电极坐标
CRect m_rcWnd; //模拟器窗口大小
CRect m_rcBrush; //绘制电缆示意图区域
CFont* m_pFont;
};
#endif
@@ -0,0 +1,28 @@
#ifndef COPTION_2D_BOREHOLEDLG_H_20190319
#define COPTION_2D_BOREHOLEDLG_H_20190319
#pragma once
#include "CtrlProtocolDef.h"
#define WM_NOTIFY_TAB_CHANGE WM_USER+666
// COption2DBoreholeDlg 对话框
class COption2DBoreholeDlg : public CDialog
{
DECLARE_DYNAMIC(COption2DBoreholeDlg)
public:
static COption2DBoreholeDlg* GetInstance();
virtual BOOL OnInitDialog();
// 对话框数据
enum { IDD = IDD_DIALOG_OPTION_2D_BOREHOLE };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedBtnAddOneBorehole();
//生成对应的坐标
void generatedCoordinates(STBoreHoleParam stBoreholeParam);
private:
COption2DBoreholeDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption2DBoreholeDlg();
};
#endif
@@ -0,0 +1,94 @@
#ifndef COPTION_2D_GEOMETRYDLG_H_20190319
#define COPTION_2D_GEOMETRYDLG_H_20190319
#pragma once
#include "afxcmn.h"
#include "CtrlProtocolDef.h"
// COption2DGeometryDlg 对话框
class COption2DGeometryDlg : public CDialog
{
DECLARE_DYNAMIC(COption2DGeometryDlg)
public:
static COption2DGeometryDlg* GetInstance();
virtual BOOL OnInitDialog();
// 对话框数据
enum { IDD = IDD_DIALOG_OPTION_2D_GEOMETRY };
//从界面添加坐标,添加borehole或者surface坐标点
void AddCoordinatesPoints(EN_COORDINATES_TYPE eType,std::vector<STBoreHolePoints> vecNewPoints);
//从Geomative坐标文件添加坐标,用于还原之前List列表
void AddNoSortCoordinatesFromFile(std::vector<STBoreHolePoints> vecNewPoints);
//删除已有点
void DeleteCoordinatesPoint();
//获取所有电极坐标,没有排序的
std::vector<STBoreHolePoints> GetAllCoordinatesPoints()
{
return m_vecNoSortAllPoints;
}
UINT32 GetAllCoordinatesPointsCount()
{
return m_vecNoSortAllPoints.size();
}
//获取排序后的关于孔的坐标信息
std::map<STWellPoints, std::vector<STBoreHolePoints>> GetBoreholeCoordinates()
{
return m_mapBoreholeCoordinates;
}
//获取排序后的关于地表的坐标信息
std::vector<STBoreHolePoints> GetSurfaceCoordinates()
{
return m_vecSurfaceCoordinates;
}
void AddElecCoordinatesInfo(STBoreHoleParam stBoreHoleParam)
{
m_vecAllElecCoordinatesInfo.push_back(stBoreHoleParam);
}
//获取所有测线的电极坐标及电极间距
std::vector<STBoreHoleParam> GetAllElecCoordinatesInfo()
{
return m_vecAllElecCoordinatesInfo;
}
void SetElectrodeDistance(float fElecDistance)
{
m_fElecDistance = fElecDistance;
}
float GetElectrodeDistance()
{
return m_fElecDistance;
}
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
void ShowCoordinatesPoints();//显示borehole或者surface坐标点
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedBtnSort();
afx_msg void OnBnClickedSaveGeometry();
afx_msg void OnBnClickedBtnClearAll();
void AddBoreholePointToVector(std::vector<STBoreHolePoints> vecNewPoints); //将坐标点排序添加到井下集合
void AddSurfacePointsToVector(std::vector<STBoreHolePoints> vecNewPoints); //将坐标点排序添加到地表集合
void DeletePointsToVector(); //删除集合的数据
private:
COption2DGeometryDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption2DGeometryDlg();
CListCtrl m_geometryList;
std::vector<STBoreHolePoints> m_vecNoSortAllPoints; //未排序的集合用于显示到列表
//用户计算脚本
map<STWellPoints, vector<STBoreHolePoints>> m_mapBoreholeCoordinates; //保存井下所有的点,,int存放X用于区分是否在同一个孔
std::vector<STBoreHolePoints> m_vecSurfaceCoordinates; //地表所有的点,只有一条测线
std::vector<STBoreHoleParam> m_vecAllElecCoordinatesInfo; //获取所有电极坐标信息
float m_fElecDistance; //保存测井的电极间距
};
#endif
@@ -0,0 +1,38 @@
#ifndef C_OPTION_2D_SETTING_DIALOG_H_201904131746
#define C_OPTION_2D_SETTING_DIALOG_H_201904131746
#include "afxwin.h"
#pragma once
// COption2DSettingDlg 对话框
class COption2DSettingDlg : public CDialog
{
DECLARE_DYNAMIC(COption2DSettingDlg)
public:
static COption2DSettingDlg* GetInstance();
// 对话框数据
enum { IDD = IDD_DIALOG_OPTION_2D_SETTING };
virtual BOOL OnInitDialog();
int GetMediumType(); //获取选中的装置类型
CString GetScriptName(); //获取脚本名称
CString GetTimeInterval(); //获取时间间隔
CString GetOperator(); //获取操作员
CString GetNote(); //获取备注
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
COption2DSettingDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption2DSettingDlg();
CComboBox m_comMediumType;
CEdit m_editScriptName;
CEdit m_editTimeInterval;
CEdit m_editOperator;
CEdit m_editNote;
};
#endif
@@ -0,0 +1,27 @@
#ifndef COPTION_2D_SURFACEDLG_H_20190408
#define COPTION_2D_SURFACEDLG_H_20190408
#pragma once
// COption2DSurfaceDlg 对话框
class COption2DSurfaceDlg : public CDialog
{
DECLARE_DYNAMIC(COption2DSurfaceDlg)
public:
static COption2DSurfaceDlg* GetInstance();
// 对话框数据
virtual BOOL OnInitDialog();
enum { IDD = IDD_DIALOG_OPTION_2D_SURFACE };
afx_msg void OnBnClickedBtnAddOneSurface();
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
//生成对应的坐标
void generatedCoordinates(STBoreHoleParam stBoreholeParam);
DECLARE_MESSAGE_MAP()
private:
COption2DSurfaceDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption2DSurfaceDlg();
};
#endif
@@ -0,0 +1,34 @@
#ifndef COPTION_3D_BOREHOLEDLG_H_20190718
#define COPTION_3D_BOREHOLEDLG_H_20190718
#pragma once
#include "CtrlProtocolDef.h"
#define WM_NOTIFY_TAB_CHANGE WM_USER+666
// COption3DBoreholeDlg 对话框
class COption3DBoreholeDlg : public CDialog
{
DECLARE_DYNAMIC(COption3DBoreholeDlg)
public:
static COption3DBoreholeDlg* GetInstance();
virtual BOOL OnInitDialog();
float GetMaxWellDepth()
{
return m_fWellMaxDepth;
}
// 对话框数据
enum { IDD = IDD_DIALOG_OPTION_3D_BOREHOLE };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedBtnAddOneBorehole();
//生成对应的坐标
void generatedCoordinates(STBoreHoleParam stBoreholeParam);
private:
COption3DBoreholeDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption3DBoreholeDlg();
float m_fWellMaxDepth; //孔的最大深度
};
#endif
@@ -0,0 +1,91 @@
#ifndef COPTION_3D_GEOMETRYDLG_H_20190718
#define COPTION_3D_GEOMETRYDLG_H_20190718
#pragma once
#include "afxcmn.h"
#include "CtrlProtocolDef.h"
// COption3DGeometryDlg 对话框
class COption3DGeometryDlg : public CDialog
{
DECLARE_DYNAMIC(COption3DGeometryDlg)
public:
static COption3DGeometryDlg* GetInstance();
virtual BOOL OnInitDialog();
// 对话框数据
enum { IDD = IDD_DIALOG_OPTION_3D_GEOMETRY };
//从界面添加坐标,添加borehole或者surface坐标点
void AddCoordinatesPoints(EN_COORDINATES_TYPE eType,std::vector<STBoreHolePoints> vecNewPoints);
//从Geomative坐标文件添加坐标,用于还原之前List列表
void AddNoSortCoordinatesFromFile(std::vector<STBoreHolePoints> vecNewPoints);
//删除已有点
void DeleteCoordinatesPoint();
//获取所有电极坐标,没有排序的
std::vector<STBoreHolePoints> GetAllCoordinatesPoints()
{
return m_vecNoSortAllPoints;
}
UINT32 GetAllCoordinatesPointsCount()
{
return m_vecNoSortAllPoints.size();
}
//获取排序后的关于孔的坐标信息
map<STWellPoints, vector<STBoreHolePoints>> GetBoreholeCoordinates()
{
return m_mapBoreholeCoordinates;
}
//获取排序后的关于地表X方向的坐标信息
std::map<int, std::vector<STBoreHolePoints>> GetSurfaceXDirectionCoordinates()
{
return m_mapSurfaceXCoordinates;
}
//获取排序后的关于地表Y方向的坐标信息
std::map<int, std::vector<STBoreHolePoints>> GetSurfaceYDirectionCoordinates()
{
return m_mapSurfaceYCoordinates;
}
void AddElecCoordinatesInfo(STBoreHoleParam stBoreHoleParam)
{
m_vecAllElecCoordinatesInfo.push_back(stBoreHoleParam);
}
//获取所有测线的电极坐标及电极间距
std::vector<STBoreHoleParam> GetAllElecCoordinatesInfo()
{
return m_vecAllElecCoordinatesInfo;
}
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
void ShowCoordinatesPoints();//显示borehole或者surface坐标点
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedBtnSort();
afx_msg void OnBnClickedSaveGeometry();
afx_msg void OnBnClickedBtnClearAll();
void AddBoreholePointToVector(std::vector<STBoreHolePoints> vecNewPoints); //将坐标点排序添加到井下集合
void AddSurfacePointsToVector(std::vector<STBoreHolePoints> vecNewPoints); //将坐标点排序添加到地表集合
void DeletePointsToVector(); //删除集合的数据
private:
COption3DGeometryDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption3DGeometryDlg();
CListCtrl m_geometryList;
std::vector<STBoreHolePoints> m_vecNoSortAllPoints; //未排序的集合用于显示到列表
//用户计算脚本
map<STWellPoints, vector<STBoreHolePoints>> m_mapBoreholeCoordinates; //STWellPoints存放X/Y坐标,vector<STBoreHolePoints>存放井电极坐标
//std::vector<STBoreHolePoints> m_vecSurfaceCoordinates; //地表所有的点,只有一条测线
std::map<int, std::vector<STBoreHolePoints>> m_mapSurfaceXCoordinates; //地表X方向坐标
std::map<int, std::vector<STBoreHolePoints>> m_mapSurfaceYCoordinates; //地表Y方向坐标
std::vector<STBoreHoleParam> m_vecAllElecCoordinatesInfo; //获取所有电极坐标信息
};
#endif
@@ -0,0 +1,40 @@
#ifndef C_OPTION_3D_SETTING_DIALOG_H_20190718
#define C_OPTION_3D_SETTING_DIALOG_H_20190718
#include "afxwin.h"
#pragma once
// COption3DSettingDlg 对话框
class COption3DSettingDlg : public CDialog
{
DECLARE_DYNAMIC(COption3DSettingDlg)
public:
static COption3DSettingDlg* GetInstance();
// 对话框数据
enum { IDD = IDD_DIALOG_OPTION_3D_SETTING };
virtual BOOL OnInitDialog();
//0:跨孔(Geomative) 1:井地井(Geomative)2:赛盈跨孔AM
int GetMediumType(); //获取选中的装置类型
CString GetScriptName(); //获取脚本名称
CString GetTimeInterval(); //获取时间间隔
CString GetOperator(); //获取操作员
CString GetNote(); //获取备注
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
COption3DSettingDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption3DSettingDlg();
CComboBox m_comMediumType;
CEdit m_editScriptName;
CEdit m_editTimeInterval;
CEdit m_editOperator;
CEdit m_editNote;
};
#endif
@@ -0,0 +1,40 @@
#ifndef COPTION_3D_SURFACEDLG_H_20190718
#define COPTION_3D_SURFACEDLG_H_20190718
#include "afxwin.h"
#pragma once
// COption3DSurfaceDlg 对话框
enum EN_CABLE_DIRECTION_TYPE
{
EN_CABLE_DIRECTION_X = 1,
EN_CABLE_DIRECTION_Y = 2,
EN_CABLE_DIRECTION_Z = 4
};
class COption3DSurfaceDlg : public CDialog
{
DECLARE_DYNAMIC(COption3DSurfaceDlg)
public:
static COption3DSurfaceDlg* GetInstance();
// 对话框数据
virtual BOOL OnInitDialog();
enum { IDD = IDD_DIALOG_OPTION_3D_SURFACE };
afx_msg void OnBnClickedBtnAddOneSurface();
EN_CABLE_DIRECTION_TYPE GetCableDirectionType()
{
return m_eCableDirection;
}
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
//生成对应的坐标
void generatedCoordinates(STBoreHoleParam stBoreholeParam);
DECLARE_MESSAGE_MAP()
private:
COption3DSurfaceDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~COption3DSurfaceDlg();
CComboBox m_comCableDirection;
EN_CABLE_DIRECTION_TYPE m_eCableDirection;
};
#endif