694 lines
19 KiB
C++
694 lines
19 KiB
C++
// PrinciplePubFeedDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "DbEquipment.h"
|
|
#include "AcDbObjectPtr.h"
|
|
#include "PickEntSet.h"
|
|
#include "dbpipe.h"
|
|
|
|
#include "PrinciplePubFeedDlg.h"
|
|
#include "DistFloorDlg.h"
|
|
#include "SanitaryDangDlg.h"
|
|
#include "SantaryIndustryDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
extern void DrawFloorLine(XPoint p1, XPoint p2, const TCHAR*szPipeLayer, const TCHAR*szText, double nHeight, const TCHAR*szSerial);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 工业建筑给水原理
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
extern AcDbObjectId InitLayer(const TCHAR *szLayer, AcDbDatabase *pDb = NULL);
|
|
extern AcDbObjectId DrawSysPipeByLayer(XPoint ptStart, XPoint ptEnd, const TCHAR *szLayer, int iLevel = 0);
|
|
extern AcDbObjectId InsEquipmentByName(const TCHAR *szName, XPoint pt, double nAng, const TCHAR *szLayer, BOOL bReversal, BOOL bHidePipe);
|
|
extern TCHAR *LAY_PIPE_FEED;
|
|
extern TCHAR *LAY_EQ_FEED;
|
|
|
|
void PrincipleIndustryFeed()
|
|
{
|
|
CTemporaryResourceOverride vTemp;
|
|
CPrinciplePubFeedDlg dlg(1);
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
|
|
|
|
CString csLayer = LAY_PIPE_FEED;
|
|
GlobalFunc::InitPipeLayer(LAY_PIPE_FEED);
|
|
InitLayer(LAY_EQ_FEED);
|
|
|
|
|
|
XPoint ptIns, ptStart, ptEnd, ptFloor;
|
|
xg_getvar(_T("VIEWCTR"), ptIns);
|
|
ptIns = GlobalFunc::Ucs2Wcs(ptIns);
|
|
PickSet ss(SS_FREE);
|
|
ss.IncludeBegin();
|
|
ptStart = ptIns;
|
|
ads_polar(ptStart, PI/2*3, 1000, ptStart);
|
|
ptFloor = ptIns;
|
|
CString csDwb = g_csDwbPath + _T("TwtSys");
|
|
|
|
double nCountHeight(0);
|
|
GlobalFunc::InitTwtTextStyle(g_Option::instance().g_csTwtDimStyle);
|
|
int idx(1);
|
|
for(int i=0;i<dlg.m_lstData.Length();i++){
|
|
double dCurFloorHeight = dlg.m_lstData[i]->m_dHeight;
|
|
for(int j=0;j<dlg.m_lstData[i]->m_iNum;j++){
|
|
ptStart = ptFloor;
|
|
XPoint ptVerPipeS, ptVerPipeE;
|
|
ads_polar(ptStart, PI/2, dlg.m_nElevation*1000, ptVerPipeS);
|
|
ads_polar(ptVerPipeS, PI/2*3, dCurFloorHeight, ptVerPipeE);
|
|
|
|
//绘制每层立管
|
|
AcDbObjectId idPipe = DrawSysPipeByLayer(ptVerPipeE, ptVerPipeS, LAY_PIPE_FEED);
|
|
OPENOBJ_BEGIN(idPipe, AcDb::kForWrite, CDbPipe, pPipe);
|
|
if(pPipe){
|
|
pPipe->SetSysLabel(XString(_T("%d楼立管-1"), idx));
|
|
}
|
|
OPENOBJ_END();
|
|
if(dlg.m_bFloor){
|
|
//楼板线和字
|
|
ads_polar(ptStart, PI, dlg.m_nFloorLen*6, ptStart);
|
|
ads_polar(ptFloor, 0, dlg.m_nFloorLen, ptEnd);
|
|
CString csText;
|
|
csText.Format(_T("%d楼"), idx);
|
|
DrawFloorLine(ptStart, ptEnd, csLayer, csText, nCountHeight,_T(""));
|
|
nCountHeight += dCurFloorHeight/1000;
|
|
}
|
|
//干管
|
|
XPoint ptPipeS, ptPipeE, ptValve, ptAmmeter;
|
|
ads_polar(ptFloor, PI/2, dlg.m_nElevation*1000, ptPipeS);
|
|
|
|
BOOL bLeft = FALSE;
|
|
double nRotate(0);
|
|
|
|
int len = dlg.m_lstData[i]->m_lstFloor.Length();
|
|
for(int m=0;m<len;m++){
|
|
CString csName = dlg.m_lstData[i]->m_lstFloor[m]->m_csName;
|
|
int iNum = dlg.m_lstData[i]->m_lstFloor[m]->m_iNum;
|
|
double dNg = dlg.m_lstData[i]->m_lstFloor[m]->m_dNg;
|
|
double dQ = dlg.m_lstData[i]->m_lstFloor[m]->m_dQ;
|
|
|
|
CString csBlkRec;
|
|
if(csName == _T("大便器(延时自闭式冲洗阀)") || csName == _T("大便器自闭式冲洗阀"))
|
|
csBlkRec = _T("00000291");
|
|
else if(csName == _T("小便器") || csName.Find(_T("小便器")) > -1)
|
|
csBlkRec = _T("00000046");
|
|
else if(csName == _T("洗手盆") || csName == _T("洗脸盆") || csName.Find(_T("洗脸盆")) > -1)
|
|
csBlkRec = _T("00000038");
|
|
else if(csName.Find(_T("洗涤盆")) > -1)
|
|
csBlkRec = _T("00000037");
|
|
else if(csName.Find(_T("大便器(冲洗水箱浮球阀)")) > -1 || csName.Find(_T("大便器冲洗水箱")) > -1)
|
|
csBlkRec = _T("00000296");
|
|
else if(csName == _T("浴盆") || csName == _T("淋浴器") || csName.Find(_T("淋浴器")) > -1)
|
|
csBlkRec = _T("00000048");
|
|
if(csBlkRec == _T(""))
|
|
continue;
|
|
|
|
|
|
for(int m=0;m<iNum;m++){
|
|
ads_polar(ptPipeS, nRotate, dlg.m_nLen, ptPipeE);
|
|
if(bLeft)
|
|
DrawSysPipeByLayer(ptPipeE, ptPipeS, csLayer);
|
|
else
|
|
DrawSysPipeByLayer(ptPipeS, ptPipeE, csLayer);
|
|
|
|
XString xsTmp;
|
|
if(GlobalFunc::LoadDwbBlock(csDwb, csBlkRec, xsTmp) != RTNORM)
|
|
continue;
|
|
|
|
InsEquipmentByName(xsTmp, ptPipeE, nRotate, LAY_EQ_FEED, FALSE, FALSE);
|
|
Entity entLast;
|
|
entLast.GetLast();
|
|
OPENOBJ_BEGIN(entLast, AcDb::kForWrite, CDbEquipment, pEquipTmp);
|
|
if(pEquipTmp){
|
|
pEquipTmp->SetDang(dNg);
|
|
pEquipTmp->SetSpare(dQ);
|
|
}
|
|
OPENOBJ_END();
|
|
ptPipeS = ptPipeE;
|
|
}
|
|
|
|
}
|
|
|
|
idx++;
|
|
if(j == dlg.m_lstData[i]->m_iNum - 1){
|
|
if(i != dlg.m_lstData.Length() -1){
|
|
dCurFloorHeight = dlg.m_lstData[i+1]->m_dHeight;
|
|
}
|
|
}
|
|
ads_polar(ptFloor, PI/2, dCurFloorHeight, ptFloor);
|
|
}
|
|
}
|
|
|
|
ss.IncludeEnd();
|
|
|
|
PickSet ssCopy(SS_FREE);
|
|
for(long m=0;m<ss.Length();m++){
|
|
Entity entTmp = ss[m];
|
|
if(!(entTmp.Is(_T("LINE")) || entTmp.Is(_T("ATS_ELEVATION")) || entTmp.Is(_T("ATS_TEXT"))))
|
|
ssCopy += entTmp;
|
|
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, CDbPipe, pPipe);
|
|
if(pPipe){
|
|
pPipe->SetMaterial(dlg.m_iMaterial);
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
int nOsMode=0;
|
|
xg_getvar(_T("OSMODE"), &nOsMode);
|
|
nOsMode &= ~0x4000;
|
|
nOsMode |= OS_INT|OS_END|OS_NEA|OS_MID;
|
|
XPushVar<int> vOsMode(_T("OSMODE"), nOsMode);
|
|
|
|
ptIns = GlobalFunc::Wcs2Ucs(ptIns);
|
|
|
|
ss.Redraw(2);
|
|
XPoint ptFinal;
|
|
actrTransactionManager->flushGraphics(); //acad 刷新
|
|
int nRet = GlobalFunc::DragMovePickSet(ss, _T("\n请点取系统图位置<退出>: "), ptIns, ptFinal);
|
|
if(nRet != RTNORM){
|
|
ss.Erase();
|
|
//TPipePerDocData *pData = GetCurPipeDocData();
|
|
//pData->EnableWork(FALSE);
|
|
return;
|
|
}
|
|
ss.Redraw(1);
|
|
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 公共建筑给水原理
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
void PrinciplePubFeed()
|
|
{
|
|
CTemporaryResourceOverride vTemp;
|
|
CPrinciplePubFeedDlg dlg(0);
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
|
|
|
|
CString csLayer = LAY_PIPE_FEED;
|
|
GlobalFunc::InitPipeLayer(LAY_PIPE_FEED);
|
|
InitLayer(LAY_EQ_FEED);
|
|
|
|
|
|
XPoint ptIns, ptStart, ptEnd, ptFloor;
|
|
xg_getvar(_T("VIEWCTR"), ptIns);
|
|
ptIns = GlobalFunc::Ucs2Wcs(ptIns);
|
|
PickSet ss(SS_FREE);
|
|
ss.IncludeBegin();
|
|
ptStart = ptIns;
|
|
ads_polar(ptStart, PI/2*3, 1000, ptStart);
|
|
ptFloor = ptIns;
|
|
CString csDwb = g_csDwbPath + _T("TwtSys");
|
|
|
|
double nCountHeight(0);
|
|
GlobalFunc::InitTwtTextStyle(g_Option::instance().g_csTwtDimStyle);
|
|
int idx(1);
|
|
for(int i=0;i<dlg.m_lstData.Length();i++){
|
|
double dCurFloorHeight = dlg.m_lstData[i]->m_dHeight;
|
|
for(int j=0;j<dlg.m_lstData[i]->m_iNum;j++){
|
|
ptStart = ptFloor;
|
|
XPoint ptVerPipeS, ptVerPipeE;
|
|
ads_polar(ptStart, PI/2, dlg.m_nElevation*1000, ptVerPipeS);
|
|
ads_polar(ptVerPipeS, PI/2*3, dCurFloorHeight, ptVerPipeE);
|
|
|
|
//绘制每层立管
|
|
AcDbObjectId idPipe = DrawSysPipeByLayer(ptVerPipeE, ptVerPipeS, LAY_PIPE_FEED);
|
|
OPENOBJ_BEGIN(idPipe, AcDb::kForWrite, CDbPipe, pPipe);
|
|
if(pPipe){
|
|
pPipe->SetSysLabel(XString(_T("%d楼立管-1"), idx));
|
|
}
|
|
OPENOBJ_END();
|
|
if(dlg.m_bFloor){
|
|
//楼板线和字
|
|
ads_polar(ptStart, PI, dlg.m_nFloorLen*6, ptStart);
|
|
ads_polar(ptFloor, 0, dlg.m_nFloorLen, ptEnd);
|
|
CString csText;
|
|
csText.Format(_T("%d楼"), idx);
|
|
DrawFloorLine(ptStart, ptEnd, csLayer, csText, nCountHeight,_T(""));
|
|
nCountHeight += dCurFloorHeight/1000;
|
|
}
|
|
//干管
|
|
XPoint ptPipeS, ptPipeE, ptValve, ptAmmeter;
|
|
ads_polar(ptFloor, PI/2, dlg.m_nElevation*1000, ptPipeS);
|
|
|
|
BOOL bLeft = FALSE;
|
|
double nRotate(0);
|
|
|
|
int len = dlg.m_lstData[i]->m_lstFloor.Length();
|
|
for(int m=0;m<len;m++){
|
|
CString csName = dlg.m_lstData[i]->m_lstFloor[m]->m_csName;
|
|
int iNum = dlg.m_lstData[i]->m_lstFloor[m]->m_iNum;
|
|
double dNg = dlg.m_lstData[i]->m_lstFloor[m]->m_dNg;
|
|
double dQ = dlg.m_lstData[i]->m_lstFloor[m]->m_dQ;
|
|
|
|
CString csBlkRec;
|
|
if(csName == _T("大便器(延时自闭式冲洗阀)"))
|
|
csBlkRec = _T("00000291");
|
|
else if(csName == _T("小便器"))
|
|
csBlkRec = _T("00000046");
|
|
else if(csName == _T("洗手盆") || csName == _T("洗脸盆"))
|
|
csBlkRec = _T("00000038");
|
|
else if(csName.Find(_T("洗涤盆")) > -1)
|
|
csBlkRec = _T("00000037");
|
|
else if(csName.Find(_T("大便器(冲洗水箱浮球阀)")) > -1)
|
|
csBlkRec = _T("00000296");
|
|
else if(csName == _T("浴盆") || csName == _T("淋浴器"))
|
|
csBlkRec = _T("00000048");
|
|
if(csBlkRec == _T(""))
|
|
continue;
|
|
|
|
|
|
for(int m=0;m<iNum;m++){
|
|
ads_polar(ptPipeS, nRotate, dlg.m_nLen, ptPipeE);
|
|
if(bLeft)
|
|
DrawSysPipeByLayer(ptPipeE, ptPipeS, csLayer);
|
|
else
|
|
DrawSysPipeByLayer(ptPipeS, ptPipeE, csLayer);
|
|
|
|
XString xsTmp;
|
|
if(GlobalFunc::LoadDwbBlock(csDwb, csBlkRec, xsTmp) != RTNORM)
|
|
continue;
|
|
|
|
InsEquipmentByName(xsTmp, ptPipeE, nRotate, LAY_EQ_FEED, FALSE, FALSE);
|
|
Entity entLast;
|
|
entLast.GetLast();
|
|
OPENOBJ_BEGIN(entLast, AcDb::kForWrite, CDbEquipment, pEquipTmp);
|
|
if(pEquipTmp){
|
|
pEquipTmp->SetDang(dNg);
|
|
pEquipTmp->SetSpare(dQ);
|
|
}
|
|
OPENOBJ_END();
|
|
ptPipeS = ptPipeE;
|
|
}
|
|
|
|
}
|
|
|
|
idx++;
|
|
if(j == dlg.m_lstData[i]->m_iNum - 1){
|
|
if(i != dlg.m_lstData.Length() -1){
|
|
dCurFloorHeight = dlg.m_lstData[i+1]->m_dHeight;
|
|
}
|
|
}
|
|
ads_polar(ptFloor, PI/2, dCurFloorHeight, ptFloor);
|
|
}
|
|
}
|
|
|
|
ss.IncludeEnd();
|
|
|
|
PickSet ssCopy(SS_FREE);
|
|
for(long m=0;m<ss.Length();m++){
|
|
Entity entTmp = ss[m];
|
|
if(!(entTmp.Is(_T("LINE")) || entTmp.Is(_T("ATS_ELEVATION")) || entTmp.Is(_T("ATS_TEXT"))))
|
|
ssCopy += entTmp;
|
|
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, CDbPipe, pPipe);
|
|
if(pPipe){
|
|
pPipe->SetMaterial(dlg.m_iMaterial);
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
int nOsMode=0;
|
|
xg_getvar(_T("OSMODE"), &nOsMode);
|
|
nOsMode &= ~0x4000;
|
|
nOsMode |= OS_INT|OS_END|OS_NEA|OS_MID;
|
|
XPushVar<int> vOsMode(_T("OSMODE"), nOsMode);
|
|
|
|
ptIns = GlobalFunc::Wcs2Ucs(ptIns);
|
|
|
|
ss.Redraw(2);
|
|
XPoint ptFinal;
|
|
actrTransactionManager->flushGraphics(); //acad 刷新
|
|
int nRet = GlobalFunc::DragMovePickSet(ss, _T("\n请点取系统图位置<退出>: "), ptIns, ptFinal);
|
|
if(nRet != RTNORM){
|
|
ss.Erase();
|
|
//TPipePerDocData *pData = GetCurPipeDocData();
|
|
//pData->EnableWork(FALSE);
|
|
return;
|
|
}
|
|
ss.Redraw(1);
|
|
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
TGridPubFeed::TGridPubFeed()
|
|
{
|
|
m_iOld=0;
|
|
}
|
|
|
|
void TGridPubFeed::OnCurChanged()
|
|
{
|
|
WDGrid::OnCurChanged();
|
|
int idx = GetCurRowIndex();
|
|
if(IsValidRow(idx))
|
|
{
|
|
CPrinciplePubFeedDlg *pDlg=(CPrinciplePubFeedDlg*)GetParent();
|
|
if(pDlg!=NULL){
|
|
pDlg->UpdateSanGrid2List();
|
|
pDlg->UpdateSanGrid();
|
|
pDlg->UpdateGrid2List();
|
|
m_iOld = idx;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPrinciplePubFeedDlg dialog
|
|
|
|
CString CPrinciplePubFeedDlg::m_csMaterial = "";
|
|
|
|
CPrinciplePubFeedDlg::CPrinciplePubFeedDlg(int mode, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPrinciplePubFeedDlg::IDD, pParent), m_spinLen(50)
|
|
{
|
|
m_iMode = mode;
|
|
//{{AFX_DATA_INIT(CPrinciplePubFeedDlg)
|
|
m_nLen = 800;
|
|
m_nFloorLen = 500;
|
|
m_nElevation = 0.3;
|
|
m_bFloor = TRUE;
|
|
m_iMaterial = -1;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CPrinciplePubFeedDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPrinciplePubFeedDlg)
|
|
DDX_Control(pDX, IDC_COMBO_MATERIAL, m_comboMat);
|
|
DDX_Control(pDX, IDC_SPIN_LEN, m_spinLen);
|
|
DDX_Text(pDX, IDC_FLOOR_LEN, m_nLen);
|
|
DDX_Text(pDX, IDC_FLOOR_LEN2, m_nFloorLen);
|
|
DDX_Text(pDX, IDC_EDIT_ELEVATION, m_nElevation);
|
|
DDX_Check(pDX, IDC_CHECK_FLOOR, m_bFloor);
|
|
DDX_CBIndex(pDX, IDC_COMBO_MATERIAL, m_iMaterial);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPrinciplePubFeedDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CPrinciplePubFeedDlg)
|
|
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
|
|
ON_WM_PAINT()
|
|
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
|
|
ON_BN_CLICKED(IDC_BUTTON_ADD2, OnButtonAdd2)
|
|
ON_BN_CLICKED(IDC_BUTTON_DEL2, OnButtonDel2)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPrinciplePubFeedDlg message handlers
|
|
|
|
BOOL CPrinciplePubFeedDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
m_spinLen.SetRange(50, 5000);
|
|
|
|
if(m_iMode == 0)
|
|
{
|
|
this->SetWindowText(_T("绘制公共建筑给水原理图"));
|
|
m_grid.AppendCol(_T("卫生器具"), 160);
|
|
m_grid.AppendCol(_T("数量"), 50);
|
|
m_grid.AppendCol(_T("当量"), 50);
|
|
m_grid.AppendCol(_T("额定流量"), 50);
|
|
}
|
|
else
|
|
{
|
|
this->SetWindowText(_T("绘制工业建筑给水原理图"));
|
|
m_grid.AppendCol(_T("卫生器具"), 150);
|
|
m_grid.AppendCol(_T("数量"), 30);
|
|
m_grid.AppendCol(_T("同时给水百分数"), 80);
|
|
m_grid.AppendCol(_T("额定流量"), 50);
|
|
}
|
|
|
|
m_grid.Clear();
|
|
m_grid.Create(this, IDC_LIST_FLOOR);
|
|
m_grid.FitLastCol();
|
|
m_grid.SetNoAppendButton(TRUE);
|
|
m_grid.SetNoDefaultMenu(true);
|
|
m_grid.Refresh();
|
|
|
|
//////////////////////////////////////////////////
|
|
m_gridFloor.AppendCol(_T("楼层"), 30);
|
|
m_gridFloor.AppendCol(_T("标准层数"), 50);
|
|
m_gridFloor.AppendCol(_T("层高"), 50);
|
|
m_gridFloor.Clear();
|
|
m_gridFloor.Create(this, IDC_LIST_LAYER);
|
|
m_gridFloor.FitLastCol();
|
|
m_gridFloor.SetNoAppendButton(TRUE);
|
|
m_gridFloor.SetNoDefaultMenu(true);
|
|
m_gridFloor.Refresh();
|
|
|
|
TPubFeedData *pData = new TPubFeedData();
|
|
pData->m_csName = _T("1层");
|
|
pData->m_iNum = 6;
|
|
pData->m_dHeight = 3000;
|
|
m_lstData.Append(pData);
|
|
UpdateGrid();
|
|
m_gridFloor.SetCurRowIndex(0);
|
|
|
|
|
|
XStringList lstMat;
|
|
GlobalFunc::GetPipeMaterialList(lstMat);
|
|
for(int i=0;i<lstMat.Length();i++){
|
|
m_comboMat.AddString(lstMat[i]);
|
|
CString csTmp = lstMat[i];
|
|
if(m_csMaterial == csTmp)
|
|
m_iMaterial = i;
|
|
}
|
|
if(m_iMaterial < 0)
|
|
m_iMaterial = g_Option::instance().g_iPipeMaterial[0];
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::UpdateSanGrid()
|
|
{
|
|
m_grid.Clear();
|
|
long idx = m_gridFloor.GetCurRowIndex();
|
|
if(idx < 0)
|
|
return;
|
|
|
|
|
|
int len = m_lstData[idx]->m_lstFloor.Length();
|
|
for(int i=0;i<len;i++){
|
|
m_grid.AppendRow();
|
|
m_grid.GetCell(i, 0).SetText(m_lstData[idx]->m_lstFloor[i]->m_csName);
|
|
CString csNum, csNg, csQ;
|
|
csNum.Format(_T("%d"), m_lstData[idx]->m_lstFloor[i]->m_iNum);
|
|
m_grid.GetCell(i, 1).SetText(csNum);
|
|
csNg.Format(_T("%.2f"), m_lstData[idx]->m_lstFloor[i]->m_dNg);
|
|
m_grid.GetCell(i, 2).SetText(csNg);
|
|
csQ.Format(_T("%.2f"), m_lstData[idx]->m_lstFloor[i]->m_dQ);
|
|
m_grid.GetCell(i, 3).SetText(csQ);
|
|
}
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::UpdateGrid()
|
|
{
|
|
m_gridFloor.Clear();
|
|
int len = m_lstData.Length();
|
|
for(int i=0;i<len;i++){
|
|
m_gridFloor.AppendRow();
|
|
m_gridFloor.GetCell(i, 0).SetText(m_lstData[i]->m_csName);
|
|
CString csNum, csHeight;
|
|
csNum.Format(_T("%d"), m_lstData[i]->m_iNum);
|
|
m_gridFloor.GetCell(i, 1).SetText(csNum);
|
|
csHeight.Format(_T("%.0f"), m_lstData[i]->m_dHeight);
|
|
m_gridFloor.GetCell(i, 2).SetText(csHeight);
|
|
}
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::UpdateSanGrid2List()
|
|
{
|
|
UpdateData(TRUE);
|
|
long idx = m_gridFloor.m_iOld;
|
|
if(idx < 0)
|
|
return;
|
|
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
CString csName = (LPCTSTR)(*pRow)[0].GetText();
|
|
CString csNum = (LPCTSTR)(*pRow)[1].GetText();
|
|
CString csNg = (LPCTSTR)(*pRow)[2].GetText();
|
|
CString csQ = (LPCTSTR)(*pRow)[3].GetText();
|
|
int iRow = pRow->GetIndex();
|
|
m_lstData[idx]->m_lstFloor[iRow]->m_iNum = _ttoi(csNum);
|
|
m_lstData[idx]->m_lstFloor[iRow]->m_dNg = _tstof(csNg);
|
|
m_lstData[idx]->m_lstFloor[iRow]->m_dQ = _tstof(csQ);
|
|
}
|
|
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::UpdateGrid2List()
|
|
{
|
|
UpdateData(TRUE);
|
|
for(m_gridFloor.MoveToFirst(); !m_gridFloor.IsOut(); m_gridFloor.MoveToNext()){
|
|
WDGridRow *pRow = m_gridFloor.CurRow();
|
|
CString csName = (LPCTSTR)(*pRow)[0].GetText();
|
|
CString csNum = (LPCTSTR)(*pRow)[1].GetText();
|
|
CString csHeight = (LPCTSTR)(*pRow)[2].GetText();
|
|
int iRow = pRow->GetIndex();
|
|
m_lstData[iRow]->m_csName = csName;
|
|
m_lstData[iRow]->m_iNum = _ttoi(csNum);
|
|
m_lstData[iRow]->m_dHeight = _tstof(csHeight);
|
|
}
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::OnButtonAdd2()
|
|
{
|
|
UpdateGrid2List();
|
|
int len = m_lstData.Length();
|
|
TPubFeedData *pData = new TPubFeedData();
|
|
pData->m_csName = XString(_T("%d层"), len+1);
|
|
pData->m_iNum = 1;
|
|
pData->m_dHeight = 3000;
|
|
m_lstData.Append(pData);
|
|
UpdateGrid();
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::OnButtonDel2()
|
|
{
|
|
UpdateGrid2List();
|
|
long idx = m_gridFloor.GetCurRowIndex();
|
|
if(idx < 0)
|
|
return;
|
|
if(m_lstData.Length() < 1)
|
|
return;
|
|
m_gridFloor.m_iOld = -1;
|
|
m_lstData.Remove(idx);
|
|
UpdateGrid();
|
|
}
|
|
|
|
|
|
void CPrinciplePubFeedDlg::OnButtonAdd()
|
|
{
|
|
UpdateSanGrid2List();
|
|
long idx = m_gridFloor.GetCurRowIndex();
|
|
if(idx < 0)
|
|
return;
|
|
if(m_lstData.Length() < 1)
|
|
return;
|
|
|
|
UpdateData();
|
|
if(m_iMode == 0)
|
|
{
|
|
CTemporaryResourceOverride vTemp;
|
|
CSanitaryDangDlg dlg;
|
|
if(dlg.DoModal() == IDOK){
|
|
TPubFeedFloorData *pData = new TPubFeedFloorData();
|
|
pData->m_csName = dlg.m_csRetName;
|
|
pData->m_dNg = dlg.m_nRet;
|
|
pData->m_dQ = dlg.m_nRet2;
|
|
pData->m_iNum = 1;
|
|
m_lstData[idx]->m_lstFloor.Append(pData);
|
|
UpdateSanGrid();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CTemporaryResourceOverride vTemp;
|
|
CSantaryIndustryDlg dlg;
|
|
if(dlg.DoModal() == IDOK){
|
|
TPubFeedFloorData *pData = new TPubFeedFloorData();
|
|
pData->m_csName = dlg.m_csRetName;
|
|
pData->m_dNg = dlg.m_nRet;
|
|
pData->m_dQ = dlg.m_nRet2;
|
|
pData->m_iNum = 1;
|
|
m_lstData[idx]->m_lstFloor.Append(pData);
|
|
UpdateSanGrid();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::OnButtonDel()
|
|
{
|
|
UpdateSanGrid2List();
|
|
long idx = m_gridFloor.GetCurRowIndex();
|
|
if(idx < 0)
|
|
return;
|
|
if(m_lstData.Length() < 1)
|
|
return;
|
|
|
|
long idx2 = m_grid.GetCurRowIndex();
|
|
|
|
if(idx2 < 0 || !m_grid.IsValidRow(idx2)){
|
|
MessageBox(_T("没有选中的行!请点击表格左侧的行标!"));
|
|
return;
|
|
}
|
|
|
|
m_lstData[idx]->m_lstFloor.Remove(idx2);
|
|
UpdateSanGrid();
|
|
}
|
|
|
|
void CPrinciplePubFeedDlg::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
}
|
|
|
|
|
|
void CPrinciplePubFeedDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
UpdateSanGrid2List();
|
|
UpdateGrid2List();
|
|
|
|
|
|
m_comboMat.GetLBText(m_iMaterial, m_csMaterial);
|
|
|
|
BOOL bHasEq(FALSE);
|
|
for(int i=0;i<m_lstData.Length();i++){
|
|
int len = m_lstData[i]->m_lstFloor.Length();
|
|
if(len > 0){
|
|
bHasEq = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
if(!bHasEq){
|
|
AfxMessageBox(_T("\n公建给水系统没有用水设备!"));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|