#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 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 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(); }