#include "stdafx.h" #include "CTSKDlg.h" #include "AecDbEarthWorm.h" #include "KTCADUtilityEx.h" #include "CCSYDlg.h" #include "UITools.h" IMPLEMENT_DYNAMIC(CCTSKDlg, CBaseDialog) CCTSKDlg::CCTSKDlg(CWnd* pParent /*=NULL*/) : CBaseDialog(CCTSKDlg::IDD, _T("TSCK"), IDC_STATIC_FRM, pParent) , m_fKaiKou_Len(0) , m_fKaiKou_W(0) , m_fKaiKou_Left(0) , m_fTaoShengShi_Left(0) , m_fTaoShengShi_W(0) , m_fTaoShengShi_Len(0) , m_fTaoShengShi_H(0) , mm_fFuTi_Dia(0) , mm_fFuTi_W(0) , mm_fFuTi_Spacing(0) , mm_fFuTi_OutLen(0) , mm_fFuTi_Deep(0) , mm_fFuTi_Len(0) , mm_fRoof_Thickness(0) , mm_fChuKouJing_HengXiang(0) , mm_fChuKouJing_ZhongXiang(0) , mm_fChuKouJing_H(0) , mm_fChuKouJing_LenW(0) , mm_fChuKouJing_Deep(0) , m_fTaoShengShi_Thickness(0) , m_fX(5.05f) , m_fW1(3.0f) , m_nDirPos(0) , m_dRoomW(0) { } CCTSKDlg::~CCTSKDlg() { } void CCTSKDlg::DoDataExchange(CDataExchange* pDX) { CBaseDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_fKaiKou_Len); DDV_MinMaxFloat(pDX, m_fKaiKou_Len, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT2, m_fKaiKou_W); DDV_MinMaxFloat(pDX, m_fKaiKou_W, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT3, m_fKaiKou_Left); DDV_MinMaxFloat(pDX, m_fKaiKou_Left, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT4, m_fTaoShengShi_Left); DDV_MinMaxFloat(pDX, m_fTaoShengShi_Left, 0.0001f, 3.0f); DDX_Text(pDX, IDC_EDIT5, m_fTaoShengShi_W); DDV_MinMaxFloat(pDX, m_fTaoShengShi_W, 0.1f, 50000.0f); DDX_Text(pDX, IDC_EDIT6, m_fTaoShengShi_Len); DDV_MinMaxFloat(pDX, m_fTaoShengShi_Len, 0.1f, 50000.0f); DDX_Text(pDX, IDC_EDIT7, m_fTaoShengShi_H); DDV_MinMaxFloat(pDX, m_fTaoShengShi_H, 0.1f, 50000.0f); DDX_Text(pDX, IDC_EDIT20, mm_fFuTi_Dia); DDV_MinMaxFloat(pDX, mm_fFuTi_Dia, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT21, mm_fFuTi_W); DDV_MinMaxFloat(pDX, mm_fFuTi_W, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT22, mm_fFuTi_Spacing); DDV_MinMaxFloat(pDX, mm_fFuTi_Spacing, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT23, mm_fFuTi_OutLen); DDV_MinMaxFloat(pDX, mm_fFuTi_OutLen, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT24, mm_fFuTi_Deep); DDV_MinMaxFloat(pDX, mm_fFuTi_Deep, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT25, mm_fFuTi_Len); DDV_MinMaxFloat(pDX, mm_fFuTi_Len, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT8, mm_fRoof_Thickness); DDV_MinMaxFloat(pDX, mm_fRoof_Thickness, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT9, mm_fChuKouJing_HengXiang); DDV_MinMaxFloat(pDX, mm_fChuKouJing_HengXiang, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT28, mm_fChuKouJing_ZhongXiang); DDV_MinMaxFloat(pDX, mm_fChuKouJing_ZhongXiang, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT29, mm_fChuKouJing_H); DDV_MinMaxFloat(pDX, mm_fChuKouJing_H, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT30, mm_fChuKouJing_LenW); DDV_MinMaxFloat(pDX, mm_fChuKouJing_LenW, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT31, mm_fChuKouJing_Deep); DDV_MinMaxFloat(pDX, mm_fChuKouJing_Deep, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT11, m_fTaoShengShi_Thickness); DDV_MinMaxFloat(pDX, m_fTaoShengShi_Thickness, 0.1f, 500000.0f); DDX_Text(pDX, IDC_EDIT12, m_fX); DDX_Text(pDX, IDC_EDIT37, m_fW1); DDX_Radio(pDX, IDC_RADIO12, m_nDirPos); DDX_Control(pDX, IDC_LIST1, m_wndRoomCheckList); DDX_Text(pDX, IDC_EDIT10, m_dRoomW); } BEGIN_MESSAGE_MAP(CCTSKDlg, CBaseDialog) ON_BN_CLICKED(IDOK, &CCTSKDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON1, &CCTSKDlg::OnBnClickedButton1) END_MESSAGE_MAP() BOOL CCTSKDlg::OnInitDialog() { CBaseDialog::OnInitDialog(); m_fKaiKou_Len = m_data.fNodeDef[0]; m_fKaiKou_W = m_data.fNodeDef[1]; m_fKaiKou_Left = m_data.fNodeDef[2]; m_fTaoShengShi_Left = m_data.fNodeDef[10]; m_fTaoShengShi_W = m_data.fNodeDef[11]; m_fTaoShengShi_Len = m_data.fNodeDef[12]; m_fTaoShengShi_H = m_data.fNodeDef[13]; m_fTaoShengShi_Thickness = m_data.fNodeDef[14]; mm_fRoof_Thickness = AS_M2MM(m_data.fNodeDef[15]); mm_fChuKouJing_H = AS_M2MM(m_data.fNodeDef[17]); mm_fChuKouJing_LenW = AS_M2MM(m_data.fNodeDef[18]); mm_fChuKouJing_Deep = AS_M2MM(m_data.fNodeDef[19]); mm_fChuKouJing_HengXiang = AS_M2MM(m_data.fNodeDef[20]); mm_fChuKouJing_ZhongXiang = AS_M2MM(m_data.fNodeDef[21]); m_fX = m_data.fNodeDef[22]; m_fW1 = m_data.fNodeDef[23]; mm_fFuTi_Dia = AS_M2MM(m_data.fNodeDef[31]); mm_fFuTi_W = AS_M2MM(m_data.fNodeDef[32]); mm_fFuTi_Spacing = AS_M2MM(m_data.fNodeDef[33]); mm_fFuTi_OutLen = AS_M2MM(m_data.fNodeDef[34]); mm_fFuTi_Deep = AS_M2MM(m_data.fNodeDef[35]); mm_fFuTi_Len = AS_M2MM(m_data.fNodeDef[36]); 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 CCTSKDlg::OnViewLButtonDownMsg() { UpdateData(); if (m_idxRoom != -1 && m_pRectCell != NULL) { AcGePoint2d pt1,pt2; m_pRectCell->getPointAt(0,pt1); m_pRectCell->getPointAt(1,pt2); m_dRoomW = pt2.distanceTo(pt1); UpdateData(FALSE); } } void CCTSKDlg::OnBnClickedOk() { UpdateData(true); m_data.fNodeDef[0] = m_fKaiKou_Len; m_data.fNodeDef[1] = m_fKaiKou_W ; m_data.fNodeDef[2] = m_fKaiKou_Left; m_data.fNodeDef[10] = m_fTaoShengShi_Left; m_data.fNodeDef[11] = m_fTaoShengShi_W; m_data.fNodeDef[12] = m_fTaoShengShi_Len; m_data.fNodeDef[13] = m_fTaoShengShi_H; m_data.fNodeDef[14] = m_fTaoShengShi_Thickness; m_data.fNodeDef[15] = AS_MUNITF(mm_fRoof_Thickness); m_data.fNodeDef[17] = AS_MUNITF(mm_fChuKouJing_H); m_data.fNodeDef[18] = AS_MUNITF(mm_fChuKouJing_LenW); m_data.fNodeDef[19] = AS_MUNITF(mm_fChuKouJing_Deep); m_data.fNodeDef[20] = AS_MUNITF(mm_fChuKouJing_HengXiang); m_data.fNodeDef[21] = AS_MUNITF(mm_fChuKouJing_ZhongXiang); m_data.fNodeDef[22] = m_fX; m_data.fNodeDef[23] = m_fW1; m_data.fNodeDef[31] = AS_MUNITF(mm_fFuTi_Dia); m_data.fNodeDef[32] = AS_MUNITF(mm_fFuTi_W); m_data.fNodeDef[33] = AS_MUNITF(mm_fFuTi_Spacing); m_data.fNodeDef[34] = AS_MUNITF(mm_fFuTi_OutLen); m_data.fNodeDef[35] = AS_MUNITF(mm_fFuTi_Deep); m_data.fNodeDef[36] = AS_MUNITF(mm_fFuTi_Len); 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[9] = 1.0f * m_nDirPos; CBaseDialog::OnOK(); } void CCTSKDlg::OnBnClickedButton1() { CCCSYDlg dlg; dlg.SetBmpFileName(_T("tsk.bmp")); dlg.DoModal(); } void CCTSKDlg::SetDefaultFnctNode(EWFnctNode &fncNode) { memset(&fncNode, 0, sizeof(EWFnctNode)); fncNode.dDistFromPre = AS_MUNIT(5000.0);//5米位置 fncNode.eFnType = kEscapeHatch; fncNode.nRoomIndex = 0;//舱0 _tcscpy(fncNode.szNodeSpec, _T("逃生口")); _tcscpy(fncNode.szNodeDefSpec, _T("逃生口")); fncNode.fNodeDef[0] = AS_MUNITF(1000.0f);//沿管廊方向内长 fncNode.fNodeDef[1] = AS_MUNITF(1000.0f);//管廊断面方向宽 fncNode.fNodeDef[2] = AS_MUNITF(1850.0f);//左室定位尺寸 fncNode.fNodeDef[9] = 0.0f;//开口方向, 0 上侧 1 下侧 fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸 fncNode.fNodeDef[11] = AS_MUNITF(4000.0f);//房子横向宽 fncNode.fNodeDef[12] = AS_MUNITF(6000.0f);//房子纵向长 fncNode.fNodeDef[13] = AS_MUNITF(2450.0f);//房子高度 fncNode.fNodeDef[14] = AS_MUNITF(250.0f); //墙厚 fncNode.fNodeDef[15] = AS_MUNITF(200.0f); //屋顶楼板厚度 fncNode.fNodeDef[16] = 0.0f;//出口左侧. 改为->新的方式 如 23.0f 为第2,3 舱室加 fncNode.fNodeDef[17] = AS_MUNITF(1500.0f);//出口高度 fncNode.fNodeDef[18] = AS_MUNITF(1200.0f);//出口盖板,长&宽 fncNode.fNodeDef[19] = AS_MUNITF(100.0f); //出口盖板槽深&宽 fncNode.fNodeDef[20] = AS_MUNITF(1450.0f); //出口位置X 横向 fncNode.fNodeDef[21] = AS_MUNITF(1450.0f); //出口位置Y 纵向 fncNode.fNodeDef[22] = AS_MUNITF(4500.f); //房子伸出部分距离 X: fncNode.fNodeDef[23] = AS_MUNITF(3000.f); //房子伸出部分宽度 w: 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); //扶梯固入墙横向长 }