384 lines
10 KiB
C++
384 lines
10 KiB
C++
#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<HoleRec>* pHoleRoom = new AcArray<HoleRec>;
|
|
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<HoleRec>* 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<HoleRec>* 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<HoleRec>* 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<HoleRec>* 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<HoleRec>* 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();
|
|
}
|