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

303 lines
10 KiB
C++

#include "stdafx.h"
#include "KTFKDlg.h"
#include "CCSYDlg.h"
#include "coreTools.h"
static void FreeBuffer(AcDbVoidPtrArray& arTextPtrs)
{
AcDbEntity* pEnt = NULL;
while(arTextPtrs.length() > 0)
{
pEnt = (AcDbEntity*)arTextPtrs.first();
arTextPtrs.removeFirst();
DELETE_PTR(pEnt);
}
}
IMPLEMENT_DYNAMIC(CKTFKDlg, CDialog)
CKTFKDlg::CKTFKDlg(CWnd* pParent)
: CBaseDialog(CKTFKDlg::IDD, _T("KTFK"), IDC_STATIC_FRM, pParent)
, m_fL1(0)
, m_fL2(0)
, m_fL3(0)
, m_sDoorNum(_T(""))
, m_sDoorFactory(_T(""))
, m_fWin_W(0)
, m_fWin_H(0)
, m_fFireWall_Thickness(0)
, m_fFireWall_Door_W(0)
, m_fFireWall_Door_H(0)
, m_fFireWall_Door_Pos(0)
, m_fFangZi_Size(0)
, m_fFangZi_Thickness(0)
, m_fFangZi_HengXiang_W(0)
, m_fFangZi_DiXiang_H(0)
, m_fFangZi_GaoXiang_H(0)
, m_fFangZi_ZhongXiang_W(0)
, m_fFuTi_D(0)
, m_fFuTi_W(0)
, m_fFuTi_Spacing(0)
, m_fFuTi_Out_Len(0)
, m_fFuTi_Wall_Deep(0)
, m_fFuTi_Wall_Len(0)
, m_fL4(0)
, m_fLWin(1800.0f)
, m_bAddFireWall(FALSE)
, m_bFireWallAddTongFengKou(FALSE)
, m_fX(9000.0)
, m_nDirPos(0)
{ }
CKTFKDlg::~CKTFKDlg() { }
void CKTFKDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_fL1);
DDV_MinMaxFloat(pDX, m_fL1, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT2, m_fL2);
DDV_MinMaxFloat(pDX, m_fL2, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT3, m_fL3);
DDV_MinMaxFloat(pDX, m_fL3, 0.1f, 500000.0f);
DDX_CBString(pDX, IDC_COMBO4, m_sDoorNum);
DDX_CBString(pDX, IDC_COMBO5, m_sDoorFactory);
DDX_Text(pDX, IDC_EDIT26, m_fWin_W);
DDV_MinMaxFloat(pDX, m_fWin_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT27, m_fWin_H);
DDV_MinMaxFloat(pDX, m_fWin_H, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT4, m_fFireWall_Thickness);
DDV_MinMaxFloat(pDX, m_fFireWall_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT5, m_fFireWall_Door_W);
DDV_MinMaxFloat(pDX, m_fFireWall_Door_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT6, m_fFireWall_Door_H);
DDV_MinMaxFloat(pDX, m_fFireWall_Door_H, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT7, m_fFireWall_Door_Pos);
DDV_MinMaxFloat(pDX, m_fFireWall_Door_Pos, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT14, m_fFangZi_Size);
DDV_MinMaxFloat(pDX, m_fFangZi_Size, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT15, m_fFangZi_Thickness);
DDV_MinMaxFloat(pDX, m_fFangZi_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT16, m_fFangZi_HengXiang_W);
DDV_MinMaxFloat(pDX, m_fFangZi_HengXiang_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT17, m_fFangZi_DiXiang_H);
DDV_MinMaxFloat(pDX, m_fFangZi_DiXiang_H, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT18, m_fFangZi_GaoXiang_H);
DDV_MinMaxFloat(pDX, m_fFangZi_GaoXiang_H, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT19, m_fFangZi_ZhongXiang_W);
DDV_MinMaxFloat(pDX, m_fFangZi_ZhongXiang_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT20, m_fFuTi_D);
DDV_MinMaxFloat(pDX, m_fFuTi_D, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT21, m_fFuTi_W);
DDV_MinMaxFloat(pDX, m_fFuTi_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT22, m_fFuTi_Spacing);
DDV_MinMaxFloat(pDX, m_fFuTi_Spacing, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT23, m_fFuTi_Out_Len);
DDV_MinMaxFloat(pDX, m_fFuTi_Out_Len, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT24, m_fFuTi_Wall_Deep);
DDV_MinMaxFloat(pDX, m_fFuTi_Wall_Deep, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT25, m_fFuTi_Wall_Len);
DDV_MinMaxFloat(pDX, m_fFuTi_Wall_Len, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT8, m_fL4);
DDV_MinMaxFloat(pDX, m_fL4, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT33, m_fLWin);
DDV_MinMaxFloat(pDX, m_fLWin, 0.1f, 500000.0f);
DDX_Check(pDX, IDC_CHECK1, m_bAddFireWall);
DDX_Check(pDX, IDC_CHECK2, m_bFireWallAddTongFengKou);
DDX_Text(pDX, IDC_EDIT39, m_fX);
DDX_Control(pDX, IDC_LIST1, m_wndRoomCheckList);
DDX_Radio(pDX, IDC_RADIO1, m_nDirPos);
}
BEGIN_MESSAGE_MAP(CKTFKDlg, CBaseDialog)
ON_BN_CLICKED(IDOK, &CKTFKDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, &CKTFKDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
void CKTFKDlg::OnBnClickedOk()
{
UpdateData(TRUE);
m_idxRoom = (int)(m_data.fNodeDef[16] + 0.1);
m_data.fNodeDef[0] = AS_MUNITF(m_fL1);
m_data.fNodeDef[1] = AS_MUNITF(m_fL2);
m_data.fNodeDef[2] = AS_MUNITF(m_fL3);
m_data.fNodeDef[3] = AS_MUNITF(m_fL4);
m_data.fNodeDef[20] = AS_MUNITF(m_fWin_W);
m_data.fNodeDef[21] = AS_MUNITF(m_fWin_H);
m_data.fNodeDef[23] = AS_MUNITF(m_fFireWall_Thickness);
m_data.fNodeDef[24] = AS_MUNITF(m_fFireWall_Door_W);
m_data.fNodeDef[25] = AS_MUNITF(m_fFireWall_Door_H);
m_data.fNodeDef[26] = AS_MUNITF(m_fFireWall_Door_Pos);
m_data.fNodeDef[10] = AS_MUNITF(m_fFangZi_Size);
m_data.fNodeDef[11] = AS_MUNITF(m_fFangZi_Thickness);
m_data.fNodeDef[12] = AS_MUNITF(m_fFangZi_HengXiang_W);
m_data.fNodeDef[13] = AS_MUNITF(m_fFangZi_DiXiang_H);
m_data.fNodeDef[14] = AS_MUNITF(m_fFangZi_GaoXiang_H);
m_data.fNodeDef[15] = AS_MUNITF(m_fFangZi_ZhongXiang_W);
m_data.fNodeDef[16] = 1.0f * GetIdxOfRoom();//n室.
int nPos = 0;
CString sRooms = _T(""),sTemp = _T("");
for (int i = 0;i < m_wndRoomCheckList.GetHeaderCtrl()->GetItemCount();i++)
{
BOOL bCheck = m_wndRoomCheckList.GetCheck(0,i);
if (bCheck)
{
nPos = i + 1;
sTemp.Format(_T("%d"),nPos);
sRooms += sTemp;
}
}
if (sRooms.IsEmpty())
{
AfxMessageBox(_T("没有选择要开通风口的舱室!请勾选舱室开通风口"));
return;
}
m_data.fNodeDef[16] = 1.0f * _ttof(sRooms);//新的方式
m_data.fNodeDef[17] = AS_MUNITF(m_fLWin);
m_data.fNodeDef[18] = AS_MUNITF(m_fX);
m_data.fNodeDef[19] = 1.0f * m_nDirPos;
m_data.fNodeDef[30] = .0f;
m_data.fNodeDef[31] = AS_MUNITF(m_fFuTi_D);
m_data.fNodeDef[32] = AS_MUNITF(m_fFuTi_W);
m_data.fNodeDef[33] = AS_MUNITF(m_fFuTi_Spacing);
m_data.fNodeDef[34] = AS_MUNITF(m_fFuTi_Out_Len);
m_data.fNodeDef[35] = AS_MUNITF(m_fFuTi_Wall_Deep);
m_data.fNodeDef[36] = AS_MUNITF(m_fFuTi_Wall_Len);
std::vector<CString> strs(0);
strs.push_back(m_sDoorNum);
strs.push_back(m_sDoorFactory);
CString str = CoreTools::ConnectString(strs, _T("|"));
_tcscpy(m_data.szNodeDefSpec, str);
CBaseDialog::OnOK();
}
BOOL CKTFKDlg::OnInitDialog()
{
CBaseDialog::OnInitDialog();
// 通风器
m_idxRoom = (int)(m_data.fNodeDef[16]+0.1);
SelectRoom(m_idxRoom);
m_fL1 = AS_M2MM(m_data.fNodeDef[0]);
m_fL2 = AS_M2MM(m_data.fNodeDef[1]);
m_fL3 = AS_M2MM(m_data.fNodeDef[2]);
m_fL4 = AS_M2MM(m_data.fNodeDef[3]);
// 百叶窗
m_fWin_W = AS_M2MM(m_data.fNodeDef[20]);
m_fWin_H = AS_M2MM(m_data.fNodeDef[21]);
// 防火墙
m_fFireWall_Thickness = AS_M2MM(m_data.fNodeDef[23]);
m_fFireWall_Door_W = AS_M2MM(m_data.fNodeDef[24]);
m_fFireWall_Door_H = AS_M2MM(m_data.fNodeDef[25]);
m_fFireWall_Door_Pos = AS_M2MM(m_data.fNodeDef[26]);
// 房子
m_fFangZi_Size = AS_M2MM(m_data.fNodeDef[10]);
m_fFangZi_Thickness = AS_M2MM(m_data.fNodeDef[11]);
m_fFangZi_HengXiang_W = AS_M2MM(m_data.fNodeDef[12]);
m_fFangZi_DiXiang_H = AS_M2MM(m_data.fNodeDef[13]);
m_fFangZi_GaoXiang_H = AS_M2MM(m_data.fNodeDef[14]);
m_fFangZi_ZhongXiang_W = AS_M2MM(m_data.fNodeDef[15]);
m_fLWin = AS_M2MM(m_data.fNodeDef[17]);
m_fX = AS_M2MM(m_data.fNodeDef[18]);
// 扶梯
m_fFuTi_D = AS_M2MM(m_data.fNodeDef[31]);
m_fFuTi_W = AS_M2MM(m_data.fNodeDef[32]);
m_fFuTi_Spacing = AS_M2MM(m_data.fNodeDef[33]);
m_fFuTi_Out_Len = AS_M2MM(m_data.fNodeDef[34]);
m_fFuTi_Wall_Deep = AS_M2MM(m_data.fNodeDef[35]);
m_fFuTi_Wall_Len = AS_M2MM(m_data.fNodeDef[36]);
std::vector<CString> strs(0);
CoreTools::SplitString(m_data.szNodeDefSpec, _T("|"), strs);
if (strs.size() == 2)
{
m_sDoorNum = strs[0];
m_sDoorFactory = strs[1];
}
m_ImageList.Create(IDB_BITMAP4,16,1,RGB(0, 255, 255));
m_wndRoomCheckList.SetImageList(&m_ImageList,LVSIL_SMALL);
m_wndRoomCheckList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
for (int i = 0;i < m_roomTypes.size();i++)
{
m_wndRoomCheckList.InsertColumn(i,m_roomTypes.at(i),LVCFMT_LEFT,80,80);
m_wndRoomCheckList.SetColumnItemData(i,NULL,ET_Check);
}
m_wndRoomCheckList.InsertItem(0,_T(""));
for (int i = 0;i < m_roomTypes.size();i++)
{
m_wndRoomCheckList.SetItemText(0,i,_T("√"),TRUE);
}
UpdateData(FALSE);
return TRUE;
}
void CKTFKDlg::SetDefaultFnctNode(EWFnctNode &fncNode)
{
memset(&fncNode, 0, sizeof(EWFnctNode));
fncNode.dDistFromPre = AS_MUNIT(8500.0); //分段节点的8.5米位置
fncNode.eFnType = kVenDoghouse; //通风口
_tcscpy(fncNode.szNodeSpec, _T("通风口")); //口位置
fncNode.fNodeDef[0] = AS_MUNITF(800.0f); //沿管廊方向内长
fncNode.fNodeDef[1] = AS_MUNITF(800.0f); //管廊断面方向内宽
fncNode.fNodeDef[2] = AS_MUNITF(2050.0f); //口1 左室定位尺寸,左对齐
fncNode.fNodeDef[3] = AS_MUNITF(500.0f); //其他左室定位尺寸,左对齐
_tcscpy(fncNode.szNodeDefSpec, _T("通风口"));
//房子描述尺寸
fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸,左对齐
fncNode.fNodeDef[11] = AS_MUNITF(250.0f); //墙厚
fncNode.fNodeDef[12] = AS_MUNITF(8600.0f);//横向室内宽度,
fncNode.fNodeDef[13] = AS_MUNITF(2200.0f);//房子高度
fncNode.fNodeDef[14] = AS_MUNITF(4200.0f);//房子和通风井总高度
fncNode.fNodeDef[15] = AS_MUNITF(2500.0f);//房子纵向内长,
fncNode.fNodeDef[16] = 0.0f;//n室(旧). 改为->新的方式 如 23.0f 为第2,3 舱室加
fncNode.fNodeDef[17] = AS_MUNITF(1800.0f);//房子出风口宽度:
fncNode.fNodeDef[18] = AS_MUNITF(9000.0f);//房子伸出距离 X:
fncNode.fNodeDef[19] = 0.0f; //通风巷道布置方向
fncNode.fNodeDef[20] = AS_MUNITF(1300.0f);//百叶窗总高
fncNode.fNodeDef[21] = AS_MUNITF(1800.0f);//百叶窗总高
fncNode.fNodeDef[23] = AS_MUNITF(250.0f); //墙厚
fncNode.fNodeDef[24] = AS_MUNITF(1000.0f);//门宽
fncNode.fNodeDef[25] = AS_MUNITF(2100.0f);//门高
fncNode.fNodeDef[26] = AS_MUNITF(600.0f);//位置
fncNode.fNodeDef[30] = 0.0f; //0 扶梯 1直梯
fncNode.fNodeDef[31] = AS_MUNITF(20.0f); //扶梯钢管直径
fncNode.fNodeDef[32] = AS_MUNITF(500.0f); //扶梯宽度
fncNode.fNodeDef[33] = AS_MUNITF(300.0f); //扶梯间距
fncNode.fNodeDef[34] = AS_MUNITF(180.0f); //扶梯踏脚伸出长度
fncNode.fNodeDef[35] = AS_MUNITF(120.0f); //扶梯固入墙纵向深
fncNode.fNodeDef[36] = AS_MUNITF(250.0f); //扶梯固入墙横向长
}
void CKTFKDlg::OnBnClickedButton1()
{
CCCSYDlg dlg;
dlg.SetBmpFileName(_T("KTFK.bmp"));
dlg.DoModal();
}