303 lines
9.8 KiB
C++
303 lines
9.8 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();
|
|
}
|