EnvelopeDlg.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. /**************************************************************************************************
  2. 版本所有(C), 2020-2022, 北京普达迪泰
  3. ***************************************************************************************************
  4. 文 件 名: EnvelopeDlg.cpp
  5. 功能描述: 静态测量-包络比对
  6. 版 本 号: 1.00初版
  7. 作 者: HYF
  8. 生成日期; 2021-12-20
  9. 最近修改:
  10. 函数列表:
  11. 修改历史:
  12. 1.日 期 :2021-12-20
  13. 作 者 : HYF
  14. 修改内容 : 创建文件
  15. **************************************************************************************************/
  16. #include "pch.h"
  17. #include "Dms.h"
  18. #include "EnvelopeDlg.h"
  19. #include "afxdialogex.h"
  20. #include "DmsDoc.h"
  21. #include "EquipDataPointManager.h"
  22. #include "CppSQLite3.h"
  23. // EnvelopeDlg 对话框
  24. IMPLEMENT_DYNAMIC(EnvelopeDlg, CDialogEx)
  25. EnvelopeDlg::EnvelopeDlg(CWnd* pParent /*=nullptr*/)
  26. : CDialogEx(IDD_DLG_ENVELOPE, pParent)
  27. {
  28. }
  29. EnvelopeDlg::EnvelopeDlg(CWnd* pParent, DWORD iTaskId)
  30. : CDialogEx(IDD_DLG_ENVELOPE, pParent)
  31. , m_taskId(iTaskId)
  32. {
  33. }
  34. EnvelopeDlg::~EnvelopeDlg()
  35. {
  36. }
  37. void EnvelopeDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39. CDialogEx::DoDataExchange(pDX);
  40. DDX_Control(pDX, IDC_STATIC_ENVELOPE_MAX, m_Static_Envelop_Max);
  41. DDX_Control(pDX, IDC_STATIC_ENVELOPE_POINT, m_Static_Envelope_point);
  42. DDX_Control(pDX, IDC_PIC, m_ImageStatic);
  43. DDX_Control(pDX, IDC_STATIC_MAX_RADIUS, m_Label_Max_Radius);
  44. DDX_Control(pDX, IDC_STATIC_MAX_POINT, m_Label_Max_Point);
  45. DDX_Control(pDX, IDC_STATIC_ENVELOPE_XYZ, m_Label_Point_XYZ);
  46. }
  47. // 获取文档对象
  48. CDmsDoc *EnvelopeDlg::GetDocument()
  49. {
  50. CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
  51. ASSERT(pFrm);
  52. CView *pView = pFrm->GetActiveView();
  53. CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument());
  54. ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc)));
  55. return pDoc;
  56. }
  57. BEGIN_MESSAGE_MAP(EnvelopeDlg, CDialogEx)
  58. ON_BN_CLICKED(IDOK, &EnvelopeDlg::OnBnClickedOk)
  59. END_MESSAGE_MAP()
  60. // EnvelopeDlg 消息处理程序
  61. BOOL EnvelopeDlg::OnInitDialog()
  62. {
  63. CDialogEx::OnInitDialog();
  64. //创建图标
  65. HICON icon;
  66. //加载图标
  67. icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  68. SetIcon(icon, true);
  69. SetIcon(icon, false);
  70. CDialogEx::SetBackgroundColor(RGB(0xff, 0xff, 0xff));
  71. // POINT数据访问入口
  72. EquipDataPointManager *pPointManager = GetDocument()->GetEquipDataPointManager();
  73. ASSERT(pPointManager != NULL);
  74. DOUBLE dValue = 0.0;
  75. DOUBLE tValue = 0.0;
  76. DOUBLE x = 0, y = 0;
  77. CString szPointTitle;
  78. CString szPointInfo;
  79. CString szMaxRadius;
  80. CppSQLite3Query q = pPointManager->Query(m_taskId);
  81. while (!q.eof()) {
  82. x = q.getFloatField("point_a_x");
  83. y = q.getFloatField("point_a_y");
  84. tValue = CS::EnvelopeValue(x, y);
  85. if (dValue < tValue)
  86. {
  87. dValue = tValue;
  88. szPointTitle.Format("%s" ,q.getStringField("point_title"));
  89. DOUBLE z = q.getFloatField("point_a_z");
  90. szPointInfo.Format("( %.3f, %.3f, %.3f)", x, y, z);
  91. }
  92. q.nextRow();
  93. }
  94. q.finalize();
  95. //显示包络示意图
  96. m_ImageStatic.SetImage(_T("envelope.png"));
  97. m_Label_Max_Radius.SetWindowText(_T("最大包络半径"));
  98. szMaxRadius.Format("%.3f", dValue);
  99. m_Static_Envelop_Max.SetFontBold(FALSE);
  100. m_Static_Envelop_Max.SetFontSize(12);
  101. m_Static_Envelop_Max.SetWindowText(szMaxRadius);
  102. m_Label_Max_Point.SetWindowText(_T("最大外包络点"));
  103. m_Static_Envelope_point.SetFontBold(FALSE);
  104. m_Static_Envelope_point.SetFontSize(12);
  105. m_Static_Envelope_point.SetWindowText(szPointTitle);
  106. m_Label_Point_XYZ.SetWindowTextA(szPointInfo);
  107. return TRUE;
  108. }
  109. /**************************************************************************************************
  110. 函 数 名 :OnBnClickedOk
  111. 功能描述 :消息处理-确认关闭
  112. 输入参数 :略
  113. 输出参数 :略
  114. 返 回 值 :略
  115. **************************************************************************************************/
  116. void EnvelopeDlg::OnBnClickedOk()
  117. {
  118. CDialogEx::OnOK();
  119. }