Files
envi-code/SourceCode/Code2026/EarthWormCmd/RLYCDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

167 lines
5.0 KiB
C++

#include "stdafx.h"
#include "RLYCDlg.h"
#include "KTCADUtilityEx.h"
#include "AecDbEarthWorm.h"
#include "CCSYDlg.h"
#include "UITools.h"
#include "KKSJDlg.h"
IMPLEMENT_DYNAMIC(CRLYCDlg, CBaseDialog)
CRLYCDlg::CRLYCDlg(CWnd* pParent /*=NULL*/)
: CBaseDialog(CRLYCDlg::IDD, _T("RLYC"), IDC_STATIC_FRM, pParent)
, m_fYinChuKou_HengXiang_W(0)
, m_fYinChuKou_ZhongXiang_W(0)
, m_fYinChuKou_Thickness(0)
, m_fQiangTi_Size(0)
, m_fGuanLang_Thinckness(0) { }
CRLYCDlg::~CRLYCDlg() { }
void CRLYCDlg::DoDataExchange(CDataExchange* pDX)
{
CBaseDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_fYinChuKou_HengXiang_W);
DDV_MinMaxFloat(pDX, m_fYinChuKou_HengXiang_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT3, m_fYinChuKou_ZhongXiang_W);
DDV_MinMaxFloat(pDX, m_fYinChuKou_ZhongXiang_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT4, m_fYinChuKou_Thickness);
DDV_MinMaxFloat(pDX, m_fYinChuKou_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT5, m_fQiangTi_Size);
DDV_MinMaxFloat(pDX, m_fQiangTi_Size, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT6, m_fGuanLang_Thinckness);
DDV_MinMaxFloat(pDX, m_fGuanLang_Thinckness, 0.1f, 500000.0f);
DDX_Control(pDX, IDC_LIST1, m_LstCtrl);
}
BEGIN_MESSAGE_MAP(CRLYCDlg, CBaseDialog)
ON_BN_CLICKED(IDOK, &CRLYCDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON5, &CRLYCDlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON1, &CRLYCDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON4, &CRLYCDlg::OnBnClickedButton4)
END_MESSAGE_MAP()
BOOL CRLYCDlg::OnInitDialog()
{
CBaseDialog::OnInitDialog();
m_fYinChuKou_HengXiang_W = m_data.fNodeDef[0];
m_fYinChuKou_ZhongXiang_W = m_data.fNodeDef[1];
m_fYinChuKou_Thickness = m_data.fNodeDef[2];
m_fQiangTi_Size = m_data.fNodeDef[3];
m_fGuanLang_Thinckness = m_data.fNodeDef[4];
UpdateData(FALSE);
InitLstCtrl();
RefreshLstCtrl();
return TRUE;
}
void CRLYCDlg::SetDefaultFnctNode(EWFnctNode &fncNode)
{
memset(&fncNode, 0, sizeof(EWFnctNode));
fncNode.dDistFromPre = AS_MUNIT(9000.0);//3米位置,距离凸起前侧
fncNode.eFnType = kHTOutLetHouse;
_tcscpy(fncNode.szNodeSpec, _T("热力舱引出口"));
fncNode.nRoomIndex = 1;//舱0
fncNode.fNodeDef[0] = AS_MUNITF(5300.0f);//管廊方向 长度尺寸含壁厚回水,供水口侧
fncNode.fNodeDef[1] = AS_MUNITF(3200.0f);//管廊方向 长度尺寸含壁厚供水侧
fncNode.fNodeDef[2] = AS_MUNITF(6000.0f);//高 含壁厚
fncNode.fNodeDef[3] = AS_MUNITF(2400.0f);//腔体水平向外增加尺寸 含壁厚
fncNode.fNodeDef[4] = AS_MUNITF(2400.0f);//管廊顶部凸出 尺寸含壁厚
//开口
fncNode.fNodeDef[5] = AS_MUNITF(1000.0f);//离内顶距离
fncNode.fNodeDef[6] = AS_MUNITF(1200.0f);//内侧方向距离
fncNode.fNodeDef[7] = AS_MUNITF(800.0f);//孔直径
fncNode.fNodeDef[8] = AS_MUNITF(2100.0f);//孔间距
fncNode.fNodeDef[9] = 2.0f;//3个
fncNode.fNodeDef[10] = AS_MUNITF(0.0f);//结束
_tcscpy(fncNode.szNodeDefSpec, _T("热力舱引出口"));
}
void CRLYCDlg::OnBnClickedOk()
{
UpdateData(TRUE);
if (m_idxRoom < 0)
{
AfxMessageBox(_T("请选择一个舱室!"));
return;
}
m_data.fNodeDef[0] = m_fYinChuKou_HengXiang_W;
m_data.fNodeDef[1] = m_fYinChuKou_ZhongXiang_W;
m_data.fNodeDef[2] = m_fYinChuKou_Thickness;
m_data.fNodeDef[3] = m_fQiangTi_Size;
m_data.fNodeDef[4] = m_fGuanLang_Thinckness;
CBaseDialog::OnOK();
}
void CRLYCDlg::OnBnClickedButton5()
{
CCCSYDlg dlg;
dlg.SetBmpFileName(_T("rlyc.bmp"));
dlg.DoModal();
}
void CRLYCDlg::InitLstCtrl()
{
m_LstCtrl.InsertColumn(0, _T("离内顶距离"), LVCFMT_LEFT, 80);
m_LstCtrl.InsertColumn(1, _T("侧方向距离"), LVCFMT_LEFT, 80);
m_LstCtrl.InsertColumn(2, _T("孔直径"), LVCFMT_LEFT, 50);
m_LstCtrl.InsertColumn(3, _T("孔间距"), LVCFMT_LEFT, 50);
m_LstCtrl.InsertColumn(4, _T("数量"), LVCFMT_LEFT, 50);
}
void CRLYCDlg::RefreshLstCtrl()
{
// 从索引4开始,每6个为一节,视为一排
// 如果第一个元素为0则视为无,则认为从此不会有新排
m_LstCtrl.DeleteAllItems();
int nRow(0);
for (int i = 4, j = 0; i < 64; i += 6, ++j)
{
if (m_data.fNodeDef[i] < AS_MUNITF(.1)) // 小于.1毫米,视为0
return;
nRow = m_LstCtrl.InsertItem(0, TypeConvert::f2s(m_data.fNodeDef[i]));
m_LstCtrl.SetItemText(nRow, 1, TypeConvert::f2s(m_data.fNodeDef[i + 1]));
m_LstCtrl.SetItemText(nRow, 2, TypeConvert::f2s(m_data.fNodeDef[i + 2]));
m_LstCtrl.SetItemText(nRow, 3, TypeConvert::f2s(m_data.fNodeDef[i + 3]));
m_LstCtrl.SetItemText(nRow, 4, TypeConvert::i2s((int)m_data.fNodeDef[i + 4]));
}
}
void CRLYCDlg::OnBnClickedButton1()
{
int count = m_LstCtrl.GetItemCount();
int idx = 4 + count * 6;
if (idx + 6 > 63) return;
CKKSJDlg dlg;
if (dlg.DoModal() != IDOK) return;
m_data.fNodeDef[idx] = AS_MUNITF(dlg.m_fNeiDing_Dis);
m_data.fNodeDef[idx + 1] = AS_MUNITF(dlg.m_fChe_Dis);
m_data.fNodeDef[idx + 2] = AS_MUNITF(dlg.m_fD);
m_data.fNodeDef[idx + 3] = AS_MUNITF(dlg.m_fSpacing);
m_data.fNodeDef[idx + 4] = dlg.m_fCount;
m_data.fNodeDef[idx + 5] = .0f;
RefreshLstCtrl();
}
void CRLYCDlg::OnBnClickedButton4()
{
int nRow = m_LstCtrl.GetSelectionMark();
if (nRow != -1)
m_LstCtrl.DeleteItem(nRow);
}