#include "stdafx.h" #include "ZMYCDlg.h" #include "KKSJDlg.h" #include "AecDbEarthWorm.h" IMPLEMENT_DYNAMIC(CZMYCDlg, CBaseDialog) CZMYCDlg::CZMYCDlg(CWnd* pParent /*=NULL*/) : CBaseDialog(CZMYCDlg::IDD, _T("ZMYC"), IDC_STATIC_FRM, pParent) , m_dA(1000.0f) , m_dB(1000.0f) , m_dC(500.0f) , m_dF(9000.0f) , m_dG(3000.0f) , m_dH(400.0f) { } CZMYCDlg::~CZMYCDlg() { } void CZMYCDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDITH, m_dA); DDX_Text(pDX, IDC_EDITH2, m_dB); DDX_Text(pDX, IDC_EDITH3, m_dC); DDX_Text(pDX, IDC_EDITH5, m_dF); DDX_Text(pDX, IDC_EDITH7, m_dG); DDX_Text(pDX, IDC_EDITH9, m_dH); DDX_Control(pDX, IDC_LIST1, m_wndListCtrl); } BEGIN_MESSAGE_MAP(CZMYCDlg, CBaseDialog) ON_BN_CLICKED(IDC_BTADD, &CZMYCDlg::OnBnClickedBtadd) ON_BN_CLICKED(IDC_BTREMOVE, &CZMYCDlg::OnBnClickedBtremove) ON_BN_CLICKED(IDOK, &CZMYCDlg::OnBnClickedOk) END_MESSAGE_MAP() BOOL CZMYCDlg::OnInitDialog() { CBaseDialog::OnInitDialog(); CString sScr; GetCrossSectionScr(sScr); AecDbEarthWorm worm; worm.SetCrossSectionScr(sScr); int nCount = worm.GetRoomCount(); for (int i = 0;i < nCount;i++) { AcArray* pHoleRoom = new AcArray; m_arHolesOFRoom.append(pHoleRoom); } m_dA = AS_M2MM(m_data.fNodeDef[0]); m_dB = AS_M2MM(m_data.fNodeDef[1]); m_dC = AS_M2MM(m_data.fNodeDef[2]); m_dF = AS_M2MM(m_data.fNodeDef[3]); m_dG = AS_M2MM(m_data.fNodeDef[4]); m_dH = AS_M2MM(m_data.fNodeDef[5]); UpdateData(FALSE); ShowEarthWorm(); InitLstCtrl(); /* EWFnctNode fncNode; memset(&fncNode, 0, sizeof(EWFnctNode)); fncNode.dDistFromPre = AS_MUNIT(5000.0);//5米位置 fncNode.eFnType = kBDOutLetHouse; _tcscpy(fncNode.szNodeSpec, _T("直埋引出")); fncNode.nRoomIndex = 999;//全部 fncNode.fNodeDef[0] = AS_MUNITF(1000.0f);// fncNode.fNodeDef[1] = AS_MUNITF(1000.0f);// fncNode.fNodeDef[2] = AS_MUNITF(500.0f);// fncNode.fNodeDef[3] = AS_MUNITF(9000.0f);// fncNode.fNodeDef[4] = AS_MUNITF(3000.0f);// fncNode.fNodeDef[5] = AS_MUNITF(400.0f);// //开口 fncNode.fNodeDef[9] = 0.0f;//0舱 fncNode.fNodeDef[10] = AS_MUNITF(1000.0f);//离内顶距离 fncNode.fNodeDef[11] = AS_MUNITF(1200.0f);//左侧距离 fncNode.fNodeDef[12] = AS_MUNITF(300.0f);//孔直径 fncNode.fNodeDef[13] = AS_MUNITF(300.0f);//孔间距 fncNode.fNodeDef[14] = 3.0f;//3个 fncNode.fNodeDef[15] = -1.0f//结束 //... //开口 fncNode.fNodeDef[16] = 1.0f;//1舱 fncNode.fNodeDef[17] = AS_MUNITF(1000.0f);//离内顶距离 fncNode.fNodeDef[18] = AS_MUNITF(1200.0f);//左侧距离 fncNode.fNodeDef[19] = AS_MUNITF(300.0f);//孔直径 fncNode.fNodeDef[20] = AS_MUNITF(300.0f);//孔间距 fncNode.fNodeDef[21] = 3.0f;//3个 fncNode.fNodeDef[n] = -1.0f//结束 //开口 fncNode.fNodeDef[23] = 2.0f;//2舱 fncNode.fNodeDef[24] = AS_MUNITF(1000.0f);//离内顶距离 fncNode.fNodeDef[25] = AS_MUNITF(1200.0f);//左侧距离 fncNode.fNodeDef[26] = AS_MUNITF(300.0f);//孔直径 fncNode.fNodeDef[27] = AS_MUNITF(300.0f);//孔间距 fncNode.fNodeDef[28] = 3.0f;//3个 fncNode.fNodeDef[n] = -1.0f//结束 */ return TRUE; } extern void SplitStrintToArray(LPCTSTR pszDescr,CStringArray& arInfo,TCHAR tcSpace); void CZMYCDlg::InitLstCtrl() { m_wndListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT); m_wndListCtrl.InsertColumn(0, _T("离屋顶距离(毫米)"), LVCFMT_LEFT, 100); m_wndListCtrl.InsertColumn(1, _T("距左侧距离(毫米)"), LVCFMT_LEFT, 100); m_wndListCtrl.InsertColumn(2, _T("孔直径(毫米)"), LVCFMT_LEFT, 90); m_wndListCtrl.InsertColumn(3, _T("孔间距(毫米)"), LVCFMT_LEFT, 90); m_wndListCtrl.InsertColumn(4, _T("数量(个)"), LVCFMT_LEFT, 50); m_wndListCtrl.InsertColumn(5, _T("用途"), LVCFMT_LEFT, 80); SelectRoom(0); int nRooms = m_arHolesOFRoom.length(); int nFrom = 9,nRoom = 0,nItem = 0; HoleRec rc; CString sPurpose,sText; CStringArray arPurposes; SplitStrintToArray(m_data.szNodeDefSpec,arPurposes,_T(';')); while(nFrom < 63) { nRoom = (int)( m_data.fNodeDef[nFrom + 0] ); if (nRoom > -1 && nRoom < nRooms) { rc.m_dVal[0] = AS_M2MM(m_data.fNodeDef[nFrom + 1]);//离内顶距离 rc.m_dVal[1] = AS_M2MM(m_data.fNodeDef[nFrom + 2]);//左侧距离 rc.m_dVal[2] = AS_M2MM(m_data.fNodeDef[nFrom + 3]);//孔直径 rc.m_dVal[3] = AS_M2MM(m_data.fNodeDef[nFrom + 4]);//孔间距 rc.m_dVal[4] = m_data.fNodeDef[nFrom + 5];//数量 //m_data.fNodeDef[nFrom + 6] = -1.0f//结束 if (rc.m_dVal[2] < 0.001f || rc.m_dVal[4] < 0.001f) { break; } AcArray* pHoldRecs = m_arHolesOFRoom.at(nRoom); if (arPurposes.GetSize() > 0) { sPurpose = arPurposes.GetAt(0); arPurposes.RemoveAt(0); _tcscpy(rc.szSpec,sPurpose); } pHoldRecs->append(rc); if (nRoom == 0) { nItem = m_wndListCtrl.GetItemCount(); sText.Format(_T("%.f"),rc.m_dVal[0]); m_wndListCtrl.InsertItem(nItem,sText); sText.Format(_T("%.f"),rc.m_dVal[1]); m_wndListCtrl.SetItemText(nItem,1,sText); sText.Format(_T("%.f"),rc.m_dVal[2]); m_wndListCtrl.SetItemText(nItem,2,sText); sText.Format(_T("%.f"),rc.m_dVal[3]); m_wndListCtrl.SetItemText(nItem,3,sText); sText.Format(_T("%.f"),rc.m_dVal[4]); m_wndListCtrl.SetItemText(nItem,4,sText); m_wndListCtrl.SetItemText(nItem,5,rc.szSpec); } } nFrom += 7; } } void CZMYCDlg::OnViewLButtonDownMsg() { m_wndListCtrl.DeleteAllItems(); int nItem = 0; CString sText; AcArray* pHoldRecs = m_arHolesOFRoom.at(GetIdxOfRoom()); for (int i = 0;i < pHoldRecs->length();i++) { HoleRec& rc = pHoldRecs->at(i); nItem = m_wndListCtrl.GetItemCount(); sText.Format(_T("%.f"),rc.m_dVal[0]); m_wndListCtrl.InsertItem(nItem,sText); sText.Format(_T("%.f"),rc.m_dVal[1]); m_wndListCtrl.SetItemText(nItem,1,sText); sText.Format(_T("%.f"),rc.m_dVal[2]); m_wndListCtrl.SetItemText(nItem,2,sText); sText.Format(_T("%.f"),rc.m_dVal[3]); m_wndListCtrl.SetItemText(nItem,3,sText); sText.Format(_T("%.f"),rc.m_dVal[4]); m_wndListCtrl.SetItemText(nItem,4,sText); m_wndListCtrl.SetItemText(nItem,5,rc.szSpec); } } void CZMYCDlg::SetDefaultFnctNode(EWFnctNode &fncNode) { memset(&fncNode, 0, sizeof(EWFnctNode)); fncNode.dDistFromPre = AS_MUNIT(5000.0);//5米位置 fncNode.eFnType = kBDOutLetHouse; _tcscpy(fncNode.szNodeSpec, _T("直埋引出")); _tcscpy(fncNode.szNodeDefSpec, _T("水管引出;电缆引出;燃气管引出")); fncNode.nRoomIndex = 999;//全部 fncNode.dDistFromPre = AS_MUNIT(5000.0);//5米位置 fncNode.eFnType = kBDOutLetHouse; _tcscpy(fncNode.szNodeSpec, _T("直埋引出")); _tcscpy(fncNode.szNodeDefSpec, _T("水管引出;电缆引出;燃气管引出")); fncNode.nRoomIndex = 999;//全部 fncNode.fNodeDef[0] = AS_MUNITF(1000.0f);//a fncNode.fNodeDef[1] = AS_MUNITF(1000.0f);//b fncNode.fNodeDef[2] = AS_MUNITF(500.0f);//c fncNode.fNodeDef[3] = AS_MUNITF(9000.0f);//f fncNode.fNodeDef[4] = AS_MUNITF(3000.0f);//g fncNode.fNodeDef[5] = AS_MUNITF(400.0f);//h //开口 fncNode.fNodeDef[9] = 0.0f;//0舱 fncNode.fNodeDef[10] = AS_MUNITF(1000.0f);//离内顶距离 fncNode.fNodeDef[11] = AS_MUNITF(400.0f);//左侧距离 fncNode.fNodeDef[12] = AS_MUNITF(500.0f);//孔直径 fncNode.fNodeDef[13] = AS_MUNITF(600.0f);//孔间距 fncNode.fNodeDef[14] = 3.0f;//3个 fncNode.fNodeDef[15] = -1.0f;//结束 //开口 fncNode.fNodeDef[16] = 1.0f;//1舱 fncNode.fNodeDef[17] = AS_MUNITF(1000.0f);//离内顶距离 fncNode.fNodeDef[18] = AS_MUNITF(500.0f);//左侧距离 fncNode.fNodeDef[19] = AS_MUNITF(150.0f);//孔直径 fncNode.fNodeDef[20] = AS_MUNITF(200.0f);//孔间距 fncNode.fNodeDef[21] = 4.0f;//4个 fncNode.fNodeDef[22] = -1.0f;//结束 //开口 fncNode.fNodeDef[23] = 2.0f;//2舱 fncNode.fNodeDef[24] = AS_MUNITF(1000.0f);//离内顶距离 fncNode.fNodeDef[25] = AS_MUNITF(200.0f);//左侧距离 fncNode.fNodeDef[26] = AS_MUNITF(800.0f);//孔直径 fncNode.fNodeDef[27] = AS_MUNITF(900.0f);//孔间距 fncNode.fNodeDef[28] = 2.0f;//3个 fncNode.fNodeDef[29] = -1.0f;//结束 } void CZMYCDlg::OnBnClickedBtadd() { CKKSJDlg dlg; int nRes = dlg.DoModal(); if (IDOK == nRes) { HoleRec rc; rc.m_dVal[0] = dlg.m_fNeiDing_Dis; rc.m_dVal[1] = dlg.m_fChe_Dis; rc.m_dVal[2] = dlg.m_fD; rc.m_dVal[3] = dlg.m_fSpacing; rc.m_dVal[4] = dlg.m_fCount; _tcscpy(rc.szSpec,dlg.m_sPurpose); AcArray* pHoldRecs = m_arHolesOFRoom.at(GetIdxOfRoom()); pHoldRecs->append(rc); CString sText; int nItem = m_wndListCtrl.GetItemCount(); sText.Format(_T("%.f"),dlg.m_fNeiDing_Dis); m_wndListCtrl.InsertItem(nItem,sText); sText.Format(_T("%.f"),dlg.m_fChe_Dis); m_wndListCtrl.SetItemText(nItem,1,sText); sText.Format(_T("%.f"),dlg.m_fD); m_wndListCtrl.SetItemText(nItem,2,sText); sText.Format(_T("%.f"),dlg.m_fSpacing); m_wndListCtrl.SetItemText(nItem,3,sText); sText.Format(_T("%.f"),dlg.m_fCount); m_wndListCtrl.SetItemText(nItem,4,sText); m_wndListCtrl.SetItemText(nItem,5,dlg.m_sPurpose); } } void CZMYCDlg::OnBnClickedBtremove() { POSITION ps = m_wndListCtrl.GetFirstSelectedItemPosition(); int nItem = m_wndListCtrl.GetNextSelectedItem(ps); if (nItem != -1) { AcArray* pHoldRecs = m_arHolesOFRoom.at(GetIdxOfRoom()); pHoldRecs->removeAt(nItem); m_wndListCtrl.DeleteItem(nItem); } } void CZMYCDlg::OnBnClickedOk() { UpdateData(TRUE); if (m_dA < 1.0f || m_dB < 1.0f || m_dC < 1.0f) { AfxMessageBox(_T("开口尺寸数据不正确!请检查开口数据!")); return; } if (m_dF < 500.0f || m_dG < 500.0f || m_dH < 10.0f) { AfxMessageBox(_T("引出室房子数据不正确!请检查引出室房子!")); return; } m_data.fNodeDef[0] = AS_MUNITF(m_dA);//a m_data.fNodeDef[1] = AS_MUNITF(m_dB);//b m_data.fNodeDef[2] = AS_MUNITF(m_dC);//c m_data.fNodeDef[3] = AS_MUNITF(m_dF);//f m_data.fNodeDef[4] = AS_MUNITF(m_dG);//g m_data.fNodeDef[5] = AS_MUNITF(m_dH);//h CString sPuporses; int nHoles = 0,nFrom = 9; for (int i = 0;i < m_arHolesOFRoom.length();i++) { AcArray* pHoldRecs = m_arHolesOFRoom.at(i); nHoles += pHoldRecs->length(); for (int j = 0;j < pHoldRecs->length();j++) { HoleRec& rc = pHoldRecs->at(j); //to m_data m_data.fNodeDef[nFrom + 0] = 1.0f * i; m_data.fNodeDef[nFrom + 1] = AS_MUNITF(rc.m_dVal[0]);// m_data.fNodeDef[nFrom + 2] = AS_MUNITF(rc.m_dVal[1]); m_data.fNodeDef[nFrom + 3] = AS_MUNITF(rc.m_dVal[2]); m_data.fNodeDef[nFrom + 4] = AS_MUNITF(rc.m_dVal[3]); m_data.fNodeDef[nFrom + 5] = rc.m_dVal[4]; m_data.fNodeDef[nFrom + 6] = -1.0f; sPuporses += rc.szSpec; sPuporses += _T(";"); nFrom += 7; } } if (nHoles == 0) { AfxMessageBox(_T("没有开口尺寸!请添加开口记录!")); return; } CBaseDialog::OnOK(); }