Files
envi-code/SourceCode/Code2026/PipelineCmd/BomReportDlg.cpp
T
2026-09-28 15:28:50 +08:00

7082 lines
190 KiB
C++

#include "stdafx.h"
#include "PipelineTools.h"
#include "BomReportDlg.h"
#include "ExcelWrite.h"
#include "AecDbEwPipe.h"
#include "AecDbEwEquipment.h"
#include "AecDbEwfitting.h"
#include "KTCadUtility.h"
#include "AecDbParamEquipment.h"
#include "AecDbXEquipment.h"
#include "AecPipeSupport.h"
#include "AecDbX3dPartEntity.h"
#include "AecDbHolder.h"
#include "AecDbHanger.h"
#include "AecDbBossHolder.h"
#include "AecDbLineStair.h"
#include "AecDbArcStair.h"
#include "AecDbClimbStair.h"
#include "AecDbGuardBar.h"
#include "AecDbOpening.h"
#include "AecDbHvacDuct.h"
#include "AecDbHvacFitting.h"
#include "AecDbECableTray.h"
#include "AecDbECFitting.h"
#include "AecDbEwFlexiblePipe.h"
#include "BomReportDef.h"
#include "AecPipeJig.h"
#include "AecPipeLine.h"
#include "makeCADTable.h"
#include "coretools.h"
#define INIT_DB_AND_CURR_SYS(db, sys)\
CString sys(_T(""));\
CUIISQLiteServer db;\
do {\
if (!PipelineTools::getSqliteDB(_T("Plumbing.db"), db))\
{\
AfxMessageBox(_T("未找到数据库文件Plumbing.db,请重新安装!"));\
return;\
}\
} while(false)
//AEC_DBDUCT,AEC_DBHVACFIT
//AEC_DBCABTRY,AEC_DBECFIT
#ifndef DXF_FORBOM
#define DXF_FORBOM _T("AEC_*")
#endif
IMPLEMENT_DYNAMIC(CBomReportDlg, CDialog)
CBomReportDlg::CBomReportDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBomReportDlg::IDD, pParent)
, m_bCheckExcel(FALSE)
, m_sProno(_T("Pro-001"))
, m_sDwgno(_T("Dwg-001"))
, m_sBomDwg(_T("WBOM.dwg"))
, m_sReportIni(_T("BOMReport.ini"))
, m_nMaxRow(27)
, m_dLenX(1.0)
, m_bNoGasket(FALSE)
{
m_bBomDwg = FALSE;
m_bBomSN = FALSE;
}
CBomReportDlg::~CBomReportDlg()
{
}
void CBomReportDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BOMLIST, m_wndBomList);
DDX_Check(pDX, IDC_CHECKEXCEL, m_bCheckExcel);
DDX_Check(pDX, IDC_CHECNOGST, m_bNoGasket);
DDX_Text(pDX, IDC_EDITPRONO, m_sProno);
DDX_Text(pDX, IDC_EDITDRWNO, m_sDwgno);
DDX_Text(pDX, IDC_EDITBOMTMPL, m_sBomDwg);
DDX_Text(pDX, IDC_EDIT_MAX_ROW, m_nMaxRow);
DDX_Text(pDX, IDC_EDITLENX, m_dLenX);
DDV_MinMaxInt(pDX, m_nMaxRow, 0, 1000);
}
BEGIN_MESSAGE_MAP(CBomReportDlg, CDialog)
ON_MESSAGE( WM_ACAD_KEEPFOCUS, &CBomReportDlg::onAcadKeepFocus )
ON_BN_CLICKED(IDC_BTSELFILE, &CBomReportDlg::OnBnClickedBtselfile)
ON_BN_CLICKED(IDC_BTSELENTS, &CBomReportDlg::OnBnClickedBtselents)
ON_BN_CLICKED(IDC_BTTMPL, &CBomReportDlg::OnBnClickedBtTmpl)
ON_BN_CLICKED(IDOK, &CBomReportDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CBomReportDlg::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BUTTON2,&CBomReportDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3,&CBomReportDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BTN_WRITE_ENT, &CBomReportDlg::OnBnClickedWriteEntBtn)
ON_BN_CLICKED(IDC_BTN_MKTABLE, &CBomReportDlg::OnBnClickedMakeCADTable)
ON_BN_CLICKED(IDC_BTN_MKEXCEL, &CBomReportDlg::OnBnClickedMakeEXCELTable)
ON_WM_CLOSE()
ON_WM_DESTROY()
END_MESSAGE_MAP()
LONG_PTR CBomReportDlg::onAcadKeepFocus( UINT_PTR, LONG_PTR)
{
POINT pt;
::GetCursorPos(&pt);
CRect rect;
GetWindowRect(&rect);
if(!(rect.PtInRect(pt)))
{
return FALSE;
}
return TRUE;
}
BOOL CBomReportDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
if (!bmp.LoadBitmap (IDB_BITMAPI))
{
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAPI);
ASSERT (FALSE);
return FALSE;
}
BITMAP bmpObj;
bmp.GetBitmap (&bmpObj);
UINT nFlags = ILC_COLOR24 | ILC_MASK;
m_imageList.Create (16, bmpObj.bmHeight, nFlags, 0, 0);
m_imageList.Add (&bmp, RGB (255, 0, 0));
m_wndBomList.SetImageList(&m_imageList,LVSIL_SMALL);
/*
#define NAME_CELL _T("Name") //名称
#define SPEC_CELL _T("Spec") //规格
#define UNIT_CELL _T("Unit") //单位
#define COUNT_CELL _T("Count") //数量
#define MATERIAL_CELL _T("Mertial")//材料
#define REM_CELL _T("Rem") //备注
#define WEIGHT_CELL _T("Weight") //单重
#define TWEIGHT_CELL _T("TWeight")//总重
#define STD_CELL _T("Std") //标准号
*/
//序号 名称 规格 单位 数量 材料 备注
m_wndBomList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
m_wndBomList.InsertColumn(0,_T("序号"),LVCFMT_LEFT,80,80);
m_wndBomList.InsertColumn(1,_T("名称"),LVCFMT_LEFT,160,160);
m_wndBomList.InsertColumn(2,_T("规格"),LVCFMT_LEFT,200,200);
m_wndBomList.InsertColumn(3,_T("单位"),LVCFMT_LEFT,60,60);
m_wndBomList.InsertColumn(4,_T("数量"),LVCFMT_LEFT,80,80);
m_wndBomList.InsertColumn(5,_T("材料"),LVCFMT_LEFT,120,120);
m_wndBomList.InsertColumn(6,_T("备注"),LVCFMT_LEFT,120,120);
m_wndBomList.InsertColumn(7,_T("单重"),LVCFMT_LEFT,120,120);
m_wndBomList.InsertColumn(8,_T("总重"),LVCFMT_LEFT,120,120);
m_wndBomList.SetColumnItemData(2,NULL,ET_Edit);
m_wndBomList.SetColumnItemData(4,NULL,ET_Edit);
m_wndBomList.SetColumnItemData(5,NULL,ET_Edit);
CString sBomDwg;
sBomDwg.Format(_T("%s\\%s"), FilePath::GetSysDir(), m_sBomDwg);
m_sBomDwg = sBomDwg;
//按用户自定义 规格+材料优先 级别排序,按材料表BOMSN
if (m_bBomSN)
{
InitBomSn();
}
UpdateData(FALSE);
return TRUE;
}
void CBomReportDlg::InitBomSn()
{
INIT_DB_AND_CURR_SYS(sqlDb, sSys);
CString sSQL;
sSQL = _T("select [材质],BOMSN from AecMaterial order by BOMSN");
CMapStringToString mapMat2bomSn;
sqlDb.GetSelData(sSQL, mapMat2bomSn);
CString sMat, sBomSn;
for (POSITION ps = mapMat2bomSn.GetStartPosition();ps != NULL;)
{
mapMat2bomSn.GetNextAssoc(ps, sMat, sBomSn);
m_mapMat2BomSn.SetAt(sMat, _ttoi(sBomSn));
}
}
void CBomReportDlg::SetBomSN(LPCTSTR pszMertial,int& nBomSN)
{
nBomSN = 1;
m_mapMat2BomSn.Lookup(pszMertial, nBomSN);
}
void CBomReportDlg::OnClose()
{
CDialog::OnClose();
delete this;
}
void CBomReportDlg::OnBnClickedMakeEXCELTable()
{
AcAxDocLock lock;
ShowWindow(SW_HIDE);
TCHAR szBomXlsIni[MAX_PATH];
CString sBomXlsIni;
sBomXlsIni.Format(_T("%s\\%s"), FilePath::GetSysDir(), m_sReportIni);
CFileFind find;
if (!find.FindFile(sBomXlsIni))
{
AfxMessageBox(_T("系统没有找到报表模板配置BOMReport*.ini文件!请检查软件是否正确安装!"));
return;
}
_tcscpy(szBomXlsIni,(LPCTSTR)sBomXlsIni);
CExcelWrite ExcelWrite;
if (!ExcelWrite.ExcelWrite(&m_wndBomList, szBomXlsIni))
{
ShowWindow(SW_SHOW);
return;
}
OnOK();
delete this;
}
void CBomReportDlg::OnBnClickedMakeCADTable()
{
if (!UpdateData()) return;
if (m_wndBomList.GetItemCount() <= 0)
{
AfxMessageBox(_T("表格内没有数据。"), MB_OK | MB_ICONERROR);
return;
}
ShowWindow(SW_HIDE);
AcAxDocLock lock;
if (!MKTABLE::makeTable(m_wndBomList, _T("材料统计报表"), m_nMaxRow))
{
ShowWindow(SW_SHOW);
return;
}
OnOK();
delete this;
}
void CBomReportDlg::OnBnClickedBtselfile()
{
UpdateData();
//选一堆dwg文件
CAcModuleResourceOverride resOverride;
const TCHAR *pszFilter = _T("dwg文件 (*.dwg;)|*.dwg|");
CFileDialog dlg(TRUE, _T("dwg"), NULL,OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT | OFN_EXPLORER | OFN_ALLOWMULTISELECT, pszFilter, NULL);
TCHAR strFileName[MAX_PATH] = _T("");
TCHAR strFileTitle[] = _T("选择要物料统计的DWG文件");
int maxChar = MAX_PATH;
dlg.m_ofn.lpstrFile = strFileName;
dlg.m_ofn.nMaxFile = maxChar;
dlg.m_ofn.lpstrTitle = strFileTitle;
if(dlg.DoModal() != IDOK)
{
return;
}
CString sFileName;
POSITION ps = dlg.GetStartPosition();
while(ps != NULL)
{
sFileName = dlg.GetNextPathName(ps);
sFileName.Replace( _T("\\\\"), _T("\\"));
//读取文件统计
BomFromReadDwg(sFileName);
}
ShowtoReportlist();
}
//序号重排
void CBomReportDlg::OnBnClickedButton2()
{
CString sNo;
for (int i = 0;i < m_wndBomList.GetItemCount();i++)
{
sNo.Format(_T("%d"),i+1);
m_wndBomList.SetItemText(i,0,sNo);
}
}
//删除行
void CBomReportDlg::OnBnClickedButton3()
{
POSITION ps = m_wndBomList.GetFirstSelectedItemPosition();
if (ps != NULL)
{
int nSel = m_wndBomList.GetNextSelectedItem(ps);
if (nSel != -1)
{
CString sNo = m_wndBomList.GetItemText(nSel,0);
CString sWar;
sWar.Format(_T("行序号=%s 删除为永久删除,可能导致报表不严谨!确实要删除吗?"),sNo);
int nRes = AfxMessageBox(sWar,MB_YESNO);
if (nRes == IDYES)
{
m_wndBomList.DeleteItem(nSel);
}
}
}
}
void CBomReportDlg::OnBnClickedWriteEntBtn()
{
AcAxDocLock lock;
AcDbDatabase* pDb = acdbCurDwg();
CString sNo, sHandle;
AcDbObjectId id;
int count = m_wndBomList.GetItemCount();
CString sDebugInfo(_T(""));
for (int i(0); i < count; ++i)
{
DWORD_PTR pXData = m_wndBomList.GetItemData(i);
if (pXData == NULL) continue;
CStringArray *pszArHandles = (CStringArray *)pXData;
if (pszArHandles == NULL)
continue;
sDebugInfo.Empty();
sDebugInfo += _T("\n");
for (int i = 0; i < pszArHandles->GetSize(); i++)
{
sHandle = pszArHandles->GetAt(i);
AcDbHandle hd((LPCTSTR)sHandle);
if (Acad::eOk != pDb->getAcDbObjectId(id, false, hd)) continue;
AcDbEntityPointer ent(id, AcDb::kForWrite);
if (ent.openStatus() != Acad::eOk) continue;
sDebugInfo += sHandle + _T(", ");
AecDbObjXDataMap *pMap = NULL;
AecDbEntityBase *pEntBase = AecDbEntityBase::cast(ent);
if (pEntBase != NULL)
{
pMap = pEntBase->GetSpecialtyData(AcDb::kForWrite);
if (pMap != NULL)
{
pMap->SetAt(KEY_BOMNO, sNo);
pEntBase->UpdateDrableSpecData(BIMDATA_APP, KEY_BOMNO, sNo);
}
}
AecDbCurveBase *pCrvBase = AecDbCurveBase::cast(ent);
if (pCrvBase != NULL)
{
pMap = pCrvBase->GetSpecialtyData(AcDb::kForWrite);
if (pMap != NULL)
{
pMap->SetAt(KEY_BOMNO, sNo);
pCrvBase->UpdateDrableSpecData(BIMDATA_APP, KEY_BOMNO, sNo);
}
}
}
//acutPrintf(_T("\n%s"), sDebugInfo);
}
AfxMessageBox(_T("报表物料编号写入完毕!"));
}
void CBomReportDlg::OnBnClickedBtTmpl()
{
//选一堆dwg文件
UpdateData();
CAcModuleResourceOverride resOverride;
const TCHAR *pszFilter = _T("dwg文件 (*.dwg;)|*.dwg|");
CFileDialog dlg(TRUE, _T("dwg"), NULL,OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT | OFN_EXPLORER, pszFilter, NULL);
TCHAR strFileName[MAX_PATH] = _T("");
TCHAR strFileTitle[] = _T("选择报表模板文件");
int maxChar = MAX_PATH;
dlg.m_ofn.lpstrFile = strFileName;
dlg.m_ofn.nMaxFile = maxChar;
dlg.m_ofn.lpstrTitle = strFileTitle;
if(dlg.DoModal() != IDOK)
{
return;
}
m_sBomDwg = dlg.GetPathName();
UpdateData(FALSE);
}
void CBomReportDlg::BomFromReadDwg(CString& sFileName)
{
AcDbObjectId id;
AcDbDatabase db(Adesk::kFalse,true);
if ( Acad::eOk == db.readDwgFile(sFileName) )
{
AcDbBlockTable* pTbl = NULL;
db.getBlockTable(pTbl,AcDb::kForRead);
if (pTbl != NULL)
{
AcDbBlockTableRecord* pRec = NULL;
pTbl->getAt(ACDB_MODEL_SPACE,pRec,AcDb::kForRead);
if (pRec != NULL)
{
AcDbBlockTableRecordIterator* pIt = NULL;
pRec->newIterator(pIt);
if (pIt != NULL)
{
for (pIt->start();!pIt->done();pIt->step())
{
pIt->getEntityId(id);
ExtractBomOfEntity(id);
}
delete pIt;
}
pRec->close();
}
pTbl->close();
}
}
}
void CBomReportDlg::OnBnClickedBtselents()
{
UpdateData();
//文档锁定
AcApDocument* pDoc = acDocManager->curDocument();
acDocManager->lockDocument(pDoc);
ShowWindow(SW_HIDE);
//后期加入仪表
ads_name ss, ent;
struct resbuf* pRb = acutBuildList(RTDXF0, DXF_FORBOM, 0);
int nRes = CKTCadUtility::SelectEntities(_T("\n请选择实体:"), ss, pRb);
acutRelRb(pRb);
if (nRes == RTNORM)
{
AcDbObjectId id;
Adesk::Int32 nLen = 0;
acedSSLength(ss, &nLen);
//实体统计
for (long i = 0;i < nLen;i++)
{
acedSSName(ss, i, ent);
acdbGetObjectId(id, ent);
ExtractBomOfEntity(id);
}
}
acedSSFree(ss);
ShowtoReportlist();
acDocManager->unlockDocument(pDoc);
ShowWindow(SW_SHOW);
}
void GetFlange(AecDbEwPipe *pWpipe, AecDbEwFitting& ewFit, CUIISQLiteServer* pDb)
{
AecDbObjXDataMap *pXDataMapF = ewFit.GetSpecialtyData(AcDb::kForRead);
AecDbObjXDataMap *pXDataMapP = pWpipe->GetSpecialtyData(AcDb::kForRead);
WPipe::PipeParam *pParam = pWpipe->GetPipeParam();
pXDataMapF->CopyFrom(pXDataMapP);
pXDataMapF->SetAt(KEY_RUNTIME, eFlange);
//[法兰外径],[法兰厚度],[法兰高度]
double dWD = 0.0, dWh = 0.0, dThk = 0.0, dN = 0.0;
TDbPipeSupport::QueryFlangData(pDb, pParam->m_dDN, pParam->m_dPress, dWD, dWh, dThk, dN);
pXDataMapF->SetAt(PIPE_WD, dWD); //发兰盘外径
pXDataMapF->SetAt(PIPE_WTHICK, dWh);//大盘面厚度
pXDataMapF->SetAt(PIPE_THICK, dWh);//总厚
//pipeline工具
TDbPipeJig jig;
jig.SetAdoDb(pDb);
TDbPipeLine pipeline(&jig);
pipeline.SetPipeParam(pParam);
//装上 垫片 螺栓 螺母
pipeline.AddFitToModelSpace(&ewFit,false);
}
static void GetAppName(WPipe::EApp eApp, CString &sApp)
{
switch (eApp)
{
case WPipe::eButtweld:
{
sApp = _T("焊接");
break;
}
case WPipe::eVictaulic:
{
sApp = _T("螺纹");
break;
}
case WPipe::eSanitary:
{
sApp = _T("承插");
break;
}
case WPipe::eFlange:
{
sApp = _T("法兰");
break;
}
case WPipe::eGroove:
{
sApp = _T("沟槽");
break;
}
case WPipe::eFlxJoin:
{
sApp = _T("卡箍");
break;
}
default:
break;
}
}
void CBomReportDlg::ExtractBomOfEntity(AcDbObjectId& id)
{
INIT_DB_AND_CURR_SYS(sqlDb, sCurrSys);
//
int nFitType = 0,nTmp = 0;
CString sMater,sText,sSys,sSn,sLevel,sType, sStdNo,sSpec, sApp;
double dDn = 0.0,dLen = 0.0;
double dEDn = 0.0,dED = 0.0,dL = 0.0,dB = 0.0, dL1 = 0.0;
double dD = 0.0,dThick = 0.0,dRatio = 0.0,dE = 0.0,dM = 0.0;
//管子
PipeBom* pPipeBom = NULL;
//std::vector<PipeBom*> vtPipeBomPtrs;
//CMapStringToPtr mapPipeBom;
//弯头
ElbowBom* pElbowBom = NULL;
//std::vector<ElbowBom*> vtElbowBomPtrs;
//CMapStringToPtr mapElbowBom;
//变径弯头
RElbowBom* pRElbowBom = NULL;
//大小头
ReducerBom* pReducerBom = NULL;
//std::vector<ReducerBom*> vtReducerBomPtrs;
//CMapStringToPtr mapReducerBom;
//三通
TeeBom* pTeeBom = NULL;
//std::vector<TeeBom*> vtTeeBomPtrs;
//CMapStringToPtr mapTeeBom;
//L三通
LTeeBom* pLTeeBom = NULL;
//std::vector<LTeeBom*> vtLTeeBomPtrs;
//CMapStringToPtr mapLTeeBom;
//WYE
WyeBom* pWyeBom = NULL;
//std::vector<WyeBom*> vtWyeBomPtrs;
//CMapStringToPtr mapWyeBom;
//四通
CrossBom* pCrossBom = NULL;
//std::vector<CrossBom*> vtCrossBomPtrs;
//CMapStringToPtr mapCrossBom;
//堵头
WCapBom* pWCap = NULL;
//std::vector<WCapBom*> vtWCapBomPtrs;
//CMapStringToPtr mapWCapBom;
//补强圈
RPBom *pRPBom = NULL;
//std::vector<RPBom *> m_vtRPBomPtrs;
//CMapStringToPtr m_mapRPBom;
//半管接头
HPBom *pHPBom = NULL;
//std::vector<HPBom *> m_vtHPBomPtrs;
//CMapStringToPtr m_mapHPBom;
//八字盲板 插板
SPBBom *pSPBBom = NULL;
//std::vector<SPBBom *> m_vtSPBomPtrs;
//CMapStringToPtr m_mapSPBom;
//PVC接头
WThroughBom* pWThroughBom = NULL;
WUJoinBom* pWUJoinBoms = NULL;
WRJoinBom* pWRJoinBoms = NULL;
WOJoinBom* pWOJoinBoms = NULL;
WIJoinBom* pWIJoinBoms = NULL;
//线管
//std::vector<XGPipeBom*> vtXGPipeBomPtrs;
//CMapStringToPtr m_mapXGPipeBom
WFlangeBom* pFlangeBom = NULL;
WFlxJoinBom *pFlxJnBom = NULL;
WGasket* pWGasket = NULL;
AngSteelBom* pASteel = NULL;
//设备
CMapStringToPtr mapName2Count;
//护栏
GuarBarBom* pGBarBom = NULL;
//圆护梯子
ClimbStairBom* pCStairBom = NULL;
//直线梯子
LineStairBom* pLStairBom = NULL;
//门窗
OpeningBom* pOpeningBom = NULL;
DuctBom* pDuctBom = NULL;
HElbowBom* pHElbowBom = NULL;
HTeeBom* pHTeeBom = NULL;
HCrossBom* pHCrossBom = NULL;
HOffsetBom* pHOffBom = NULL;
//桥架
ECabletryBom* pECabBom = NULL;
ECabFitBom* pCabFitBom = NULL;
XGPipeBom *pXGPipeBom = NULL;
double dAng = 0.0;
AcGeVector3d vtOff;
AecDbObjXDataMap* pMap = NULL;
AcDbEntity* pEnt = NULL;
if (Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
{
//1.管子
AecDbEwPipe* pWpipe = AecDbEwPipe::cast(pEnt);
if (pWpipe != NULL)
{
pMap = pWpipe->GetSpecialtyData(AcDb::kForRead);
int nConnectType = 0;//焊接0 承插1 螺纹2 法兰管3
pWpipe->GetAt(PIPE_CONNECT, nConnectType);
if (nConnectType == 3 || nConnectType == 5)//法兰管
{
AecDbEwFitting ewFit;
GetFlange(pWpipe, ewFit, &sqlDb);//获取法兰规格
for (int j = 0; j < pWpipe->GetFlangeCount(TRUE); j++)
{
AddFlangeBom(&ewFit);
}
}
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIAL,sMater);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
dLen = pWpipe->GetLength();
dLen /= 1000.0;//折算为米
dLen *= m_dLenX;
sText.Format(_T("%d-%d-%.1f-%s-%s-%s"),(short)(dDn + 0.5),(short)(dD + 0.5),dThick,sMater,sLevel,sSys);
if (!m_mapPipeBom.Lookup(sText,(void*&)pPipeBom))
{
pPipeBom = new PipeBom;
memset(pPipeBom,0,sizeof(PipeBom));
pPipeBom->nDn = (short)(dDn + 0.5);
pPipeBom->nD = (short)(dD + 0.5);
pPipeBom->fThick = (float)dThick;
pPipeBom->dLen = dLen;
_tcscpy(pPipeBom->szMertial,sMater);
_tcscpy(pPipeBom->szRem,sSys);
_tcscpy(pPipeBom->szSN,sSn);
_tcscpy(pPipeBom->szLevel,sLevel);
_tcscpy(pPipeBom->szSys,sSys);
SetBomSN(pPipeBom->szMertial, pPipeBom->nBomSN);
m_mapPipeBom.SetAt(sText,pPipeBom);
m_vtPipeBomPtrs.push_back(pPipeBom);
}
else
{
pPipeBom->dLen += dLen;
}
addEntHandle(pWpipe, pPipeBom);
}
//2.管件
AecDbEwFitting* pWFit = AecDbEwFitting::cast(pEnt);
if (pWFit != NULL)
{
pMap = pWFit->GetSpecialtyData(AcDb::kForRead);
pMap->GetAt(KEY_RUNTIME,nFitType);
int nConnectType = 0;//焊接0 承插1 螺纹2 法兰管3
pWFit->GetAt(PIPE_CONNECT, nConnectType);
if (nConnectType == 3 || nConnectType == 5 || nFitType == eFlange)//有法兰 或法兰
{
AddFlangeBom(pWFit);
}
int nDir = 0;
pWFit->GetAt(PIPE_EAPP, nDir);
WPipe::EApp eApp = (WPipe::EApp)nDir;
GetAppName(eApp, sApp);
switch(nFitType)
{
case eElbow:
{
pMap->GetAt(PIPE_ELBOWANG,dAng);
AcDbArc* pArc = pWFit->GetElbowArc();
if (pArc != NULL)
{
double dE = 0,dL = 0;
pArc->getEndParam(dE);
pArc->getDistAtParam(dE,dL);
dAng = dL / pArc->radius() * 180.0 / 3.1415926;
}
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(PIPE_RATIO,dRatio);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%d-%.1f-%.1f-%s-%s-%s %s"),(short)(dDn + 0.5),(short)(dD + 0.5),
(short)(dAng + 0.5),dThick,dRatio,sMater,sLevel,sSys,sApp);
if (!m_mapElbowBom.Lookup(sText,(void*&)pElbowBom))
{
pElbowBom = new ElbowBom;
memset(pElbowBom,0,sizeof(ElbowBom));
pElbowBom->nDn = (short)(dDn + 0.5);
pElbowBom->nD = (short)(dD + 0.5);
pElbowBom->fThick = (float)dThick;
pElbowBom->fRRatio = (float)dRatio;
pElbowBom->nAngle = (short)( (dAng + 0.5));
_tcscpy(pElbowBom->szMertial,sMater);
_tcscpy(pElbowBom->szSN,sSn);
_tcscpy(pElbowBom->szLevel,sLevel);
_tcscpy(pElbowBom->szSys,sSys);
_tcscpy(pElbowBom->szApp, sApp);
SetBomSN(pElbowBom->szMertial, pElbowBom->nBomSN);
pElbowBom->nCount = 1;
m_vtElbowBomPtrs.push_back(pElbowBom);
m_mapElbowBom.SetAt(sText,pElbowBom);
}
else
{
pElbowBom->nCount += 1;
}
addEntHandle(pWFit, pElbowBom);
break;
}
case eReduceElbow:
{
pMap->GetAt(PIPE_ELBOWANG, dAng);
AcDbArc *pArc = pWFit->GetElbowArc();
if (pArc != NULL)
{
double dE = 0, dL = 0;
pArc->getEndParam(dE);
pArc->getDistAtParam(dE, dL);
dAng = dL / pArc->radius() * 180.0 / 3.1415926;
}
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(PIPE_OD, dD);
pMap->GetAt(PIPE_EDN, dEDn);
pMap->GetAt(PIPE_EOD, dED);
pMap->GetAt(PIPE_THICK, dThick);
pMap->GetAt(PIPE_RATIO, dRatio);
pMap->GetAt(KEY_Length, dL);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%d-%d-%.1f-%.1f-%.1f-%s-%s-%s %s"), __max(dDn,dEDn), __min(dDn, dEDn),
(short)(dAng + 0.5), dL,dThick,dRatio, sMater, sLevel, sSys, sApp);
if ( !m_mapRElbowBom.Lookup(sText, (void*&)pRElbowBom ) )
{
pRElbowBom = new RElbowBom;
memset(pRElbowBom, 0, sizeof(RElbowBom));
pRElbowBom->nCount = 1;
pRElbowBom->nDn = (short)(__max(dDn, dEDn) + 0.5);
pRElbowBom->nD = (short)(__max(dD, dED) + 0.5);
pRElbowBom->nTDn = (short)(__min(dDn, dEDn) + 0.5);
pRElbowBom->nTD = (short)(__min(dD, dED) + 0.5);
pRElbowBom->fThick = (float)dThick;
pRElbowBom->nAngle = (int)(dAng + 0.5);
pRElbowBom->fRRatio = (float)dRatio;
pRElbowBom->nLen = (int)(dL + 0.5);
_tcscpy(pRElbowBom->szMertial, sMater);
_tcscpy(pRElbowBom->szSN, sSn);
_tcscpy(pRElbowBom->szLevel, sLevel);
_tcscpy(pRElbowBom->szSys, sSys);
_tcscpy(pRElbowBom->szApp, sApp);
SetBomSN(pRElbowBom->szMertial, pRElbowBom->nBomSN);
pRElbowBom->nCount = 1;
m_vtRElbowBomPtrs.push_back(pRElbowBom);
m_mapRElbowBom.SetAt(sText, pRElbowBom);
}
else
{
pRElbowBom->nCount += 1;
}
addEntHandle(pWFit, pRElbowBom);
break;
}
case eReduce:
{
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_EDN,dEDn);
pMap->GetAt(PIPE_EOD,dED);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(KEY_Length,dLen);
pMap->GetAt(KEY_OFFSET,vtOff);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%d-%d-%d-%.1f-%.1f-%s-%s-%s %s"),
(short)(__min(dDn,dEDn) + 0.5),
(short)(__max(dDn,dEDn) + 0.5),
(short)(__min(dD,dED) + 0.5),
(short)(__max(dD,dED) + 0.5),
vtOff.isZeroLength(),
dThick,dRatio,sMater,sLevel,sSys,sApp);
if (!m_mapReducerBom.Lookup(sText,(void*&)pReducerBom))
{
pReducerBom = new ReducerBom;
memset(pReducerBom,0,sizeof(ReducerBom));
pReducerBom->nDn = (short)(__max(dDn,dEDn) + 0.5);
pReducerBom->nD = (short)(__max(dD,dED) + 0.5);
pReducerBom->nTDn = (short)(__min(dDn,dEDn) + 0.5);
pReducerBom->nTD = (short)(__min(dD,dED) + 0.5);
pReducerBom->nCount = 1;
pReducerBom->fThick = (float)dThick;
pReducerBom->nLen = (short)(dLen + 0.5);
_tcscpy(pReducerBom->szLevel,sLevel);
_tcscpy(pReducerBom->szMertial,sMater);
pReducerBom->nOffset = vtOff.isZeroLength() ? FALSE : TRUE;
_tcscpy(pReducerBom->szSN,sSn);
_tcscpy(pReducerBom->szSys,sSys);
_tcscpy(pReducerBom->szApp, sApp);
SetBomSN(pReducerBom->szMertial, pReducerBom->nBomSN);
m_vtReducerBomPtrs.push_back(pReducerBom);
m_mapReducerBom.SetAt(sText,pReducerBom);
}
else
{
pReducerBom->nCount += 1;
}
addEntHandle(pWFit, pReducerBom);
break;
}
case eTee:
{
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_TDN,dEDn);
pMap->GetAt(PIPE_TOD,dED);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(KEY_L,dL);
pMap->GetAt(KEY_L1, dL1);
if (dL1 > 1.e-6)
{
dL -= dL1;
}
else
{
dL *= 0.5;
dL1 = dL;
}
pMap->GetAt(KEY_T,dB);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%d-%d-%.1f-%s-%s-%s %s"),(short)(dDn + 0.5),(short)(dD + 0.5),
(short)(dEDn + 0.5),(short)(dED + 0.5),dThick,sMater,sLevel,sSys,sApp);
if (!m_mapTeeBom.Lookup(sText,(void*&)pTeeBom))
{
pTeeBom = new TeeBom;
memset(pTeeBom,0,sizeof(TeeBom));
pTeeBom->nDn = (short)(dDn + 0.5);
pTeeBom->nD = (short)(dD + 0.5);
pTeeBom->nTDn = (short)(dEDn + 0.5);
pTeeBom->nTD = (short)(dED + 0.5);
pTeeBom->nL = (short)(dL + 0.5);
pTeeBom->nL1 = (short)(dL1 + 0.5);
pTeeBom->nB = (short)(dB + 0.5);
pTeeBom->fThick = (float)dThick;
pTeeBom->nCount = 1;
_tcscpy(pTeeBom->szMertial,sMater);
_tcscpy(pTeeBom->szSN,sSn);
_tcscpy(pTeeBom->szLevel,sLevel);
_tcscpy(pTeeBom->szSys,sSys);
_tcscpy(pTeeBom->szApp, sApp);
SetBomSN(pTeeBom->szMertial, pTeeBom->nBomSN);
m_mapTeeBom.SetAt(sText,pTeeBom);
m_vtTeeBomPtrs.push_back(pTeeBom);
}
else
{
pTeeBom->nCount += 1;
}
addEntHandle(pWFit, pTeeBom);
break;
}
case eLateral:
{
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_TDN,dEDn);
pMap->GetAt(PIPE_TOD,dED);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(PIPE_E,dE);
pMap->GetAt(PIPE_M,dM);
pMap->GetAt(PIPE_B,dB);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%d-%d-%.1f-%s-%s-%s %s"),(short)(dDn + 0.5),(short)(dD + 0.5),
(short)(dEDn + 0.5),(short)(dED + 0.5),dThick,sMater,sLevel,sSys,sApp);
if (!m_mapLTeeBom.Lookup(sText,(void*&)pLTeeBom))
{
pLTeeBom = new LTeeBom;
memset(pLTeeBom,0,sizeof(LTeeBom));
pLTeeBom->nDn = (short)(dDn + 0.5);
pLTeeBom->nD = (short)(dD + 0.5);
pLTeeBom->nTDn = (short)(dEDn + 0.5);
pLTeeBom->nTD = (short)(dED + 0.5);
pLTeeBom->nE = (short)(dE + 0.5);
pLTeeBom->nM = (short)(dM + 0.5);
pLTeeBom->nB = (short)(dB + 0.5);
pLTeeBom->fThick = dThick;
_tcscpy(pLTeeBom->szMertial,sMater);
_tcscpy(pLTeeBom->szSN,sSn);
_tcscpy(pLTeeBom->szLevel,sLevel);
_tcscpy(pLTeeBom->szSys,sSys);
_tcscpy(pLTeeBom->szApp, sApp);
SetBomSN(pLTeeBom->szMertial, pLTeeBom->nBomSN);
pLTeeBom->nCount = 1;
m_mapLTeeBom.SetAt(sText,pLTeeBom);
m_vtLTeeBomPtrs.push_back(pLTeeBom);
}
else
{
pLTeeBom->nCount += 1;
}
addEntHandle(pWFit, pLTeeBom);
break;
}
case eWye:
{
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_TDN,dEDn);
pMap->GetAt(PIPE_TOD,dED);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(PIPE_M,dM);
pMap->GetAt(PIPE_B,dB);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%d-%.1f-%s-%s-%s %s"),(short)(dDn + 0.5),(short)(dD + 0.5),
(short)(dED + 0.5),dThick,sMater,sLevel,sSys,sApp);
if (!m_mapWyeBom.Lookup(sText,(void*&)pWyeBom))
{
pWyeBom = new WyeBom;
memset(pWyeBom,0,sizeof(WyeBom));
pWyeBom->nDn = (short)(dDn + 0.5);
pWyeBom->nD = (short)(dD + 0.5);
pWyeBom->nTDn = (short)(dEDn + 0.5);
pWyeBom->nTD = (short)(dED + 0.5);
pWyeBom->nM = (short)(dM + 0.5);
pWyeBom->nB = (short)(dB + 0.5);
pWyeBom->fThick = dThick;
_tcscpy(pWyeBom->szMertial,sMater);
_tcscpy(pWyeBom->szSN,sSn);
_tcscpy(pWyeBom->szLevel,sLevel);
_tcscpy(pWyeBom->szSys,sSys);
_tcscpy(pWyeBom->szApp, sApp);
SetBomSN(pWyeBom->szMertial, pWyeBom->nBomSN);
pWyeBom->nCount = 1;
m_mapWyeBom.SetAt(sText,pWyeBom);
m_vtWyeBomPtrs.push_back(pWyeBom);
}
else
{
pWyeBom->nCount += 1;
}
addEntHandle(pWFit, pWyeBom);
break;
}
case eCross:
{
//规格
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_TDN,dEDn);
pMap->GetAt(PIPE_TOD,dED);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(KEY_L,dM);
pMap->GetAt(KEY_T,dB);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%d-%d-%.1f-%s-%s-%s %s"),(short)(dDn + 0.5),(short)(dD + 0.5),
(short)(dEDn + 0.5),(short)(dED + 0.5),dThick,sMater,sLevel,sSys,sApp);
if (!m_mapCrossBom.Lookup(sText,(void*&)pCrossBom))
{
pCrossBom = new CrossBom;
memset(pCrossBom,0,sizeof(CrossBom));
pCrossBom->nDn = (short)(dDn + 0.5);
pCrossBom->nD = (short)(dD + 0.5);
pCrossBom->nTDn = (short)(dEDn + 0.5);
pCrossBom->nTD = (short)(dED + 0.5);
pCrossBom->nCount = 1;
pCrossBom->nL = (short)(dM + 0.5);
pCrossBom->fThick = (float)(dThick + 0.5);
_tcscpy(pCrossBom->szMertial,sMater);
_tcscpy(pCrossBom->szSN,sSn);
_tcscpy(pCrossBom->szLevel,sLevel);
_tcscpy(pCrossBom->szSys,sSys);
_tcscpy(pCrossBom->szApp, sApp);
SetBomSN(pCrossBom->szMertial, pCrossBom->nBomSN);
m_mapCrossBom.SetAt(sText,pCrossBom);
m_vtCrossBomPtrs.push_back(pCrossBom);
}
else
{
pCrossBom->nCount += 1;
}
addEntHandle(pWFit, pCrossBom);
break;
}
case eWcap:
{
pMap->GetAt(PIPE_DN,dDn);
pMap->GetAt(PIPE_OD,dD);
pMap->GetAt(PIPE_THICK,dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT,sMater);
pMap->GetAt(KEY_L,dM);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL,sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS,sSys);
sText.Format(_T("%d-%d-%.1f-%s-%s-%s %s"),(short)(dDn + 0.5),(short)(dD + 0.5),dThick,sMater,sLevel,sSys,sApp);
if (!m_mapWCapBom.Lookup(sText,(void*&)pWCap))
{
pWCap = new WCapBom;
memset(pWCap,0,sizeof(WCapBom));
pWCap->nDn = (short)(dDn + 0.5);
pWCap->nD = (short)(dD + 0.5);
pWCap->nL = (short)(dM + 0.5);
pWCap->fThick = (float)(dThick + 0.5);
_tcscpy(pWCap->szMertial,sMater);
_tcscpy(pWCap->szSN,sSn);
_tcscpy(pWCap->szLevel,sLevel);
_tcscpy(pWCap->szSys,sSys);
_tcscpy(pWCap->szApp, sApp);
pWCap->nCount = 1;
SetBomSN(pWCap->szMertial, pWCap->nBomSN);
m_mapWCapBom.SetAt(sText,pWCap);
m_vtWCapBomPtrs.push_back(pWCap);
}
else
{
pWCap->nCount += 1;
}
addEntHandle(pWFit, pWCap);
break;
}
case eFlange:
{
//AddFlangeBom
break;
}
case eFlxJoin:
{
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(KEY_TYPE, sType);
pMap->GetAt(PIPE_STDNO, sStdNo);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
pMap->GetAt(KEY_L, dM);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%s-%s-%s-%s"), (short)(dDn + 0.5),sMater, sLevel, sSys, sType);
if (!m_mapWFlxJoinBom.Lookup(sText, (void *&)pFlxJnBom))
{
pFlxJnBom = new WFlxJoinBom;
memset(pFlxJnBom, 0, sizeof(WFlxJoinBom));
pFlxJnBom->nDn = (short)(dDn + 0.5);
_tcscpy(pFlxJnBom->szMertial, sMater);
_tcscpy(pFlxJnBom->szSN, sSn);
_tcscpy(pFlxJnBom->szLevel, sLevel);
_tcscpy(pFlxJnBom->szSys, sSys);
sSpec.Format(_T("%s %s"),sType,sStdNo);
_tcscpy(pFlxJnBom->szDescr, sSpec);
SetBomSN(pFlxJnBom->szMertial, pFlxJnBom->nBomSN);
pFlxJnBom->nCount = 1;
m_mapWFlxJoinBom.SetAt(sText, pFlxJnBom);
m_vtWFlxJoinBomPtrs.push_back(pFlxJnBom);
}
else
{
pFlxJnBom->nCount += 1;
}
addEntHandle(pWFit, pFlxJnBom);
break;
}
case eRP:
{
pMap->GetAt(PIPE_TDN, dEDn);
pMap->GetAt(PIPE_THICK, dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sStdNo = _T("");
pMap->GetAt(PIPE_STDNO, sStdNo);
pMap->GetAt(PIPE_D, dD);
sText.Format(_T("%d-%s-%s-%s"), (short)(dEDn + 0.5), sMater, sLevel, sSys);
if (!m_mapRPBom.Lookup(sText, (void *&)pRPBom))
{
pRPBom = new RPBom;
memset(pRPBom,0,sizeof(RPBom));
pRPBom->nCount = 1;
pRPBom->nDn = (short)(dEDn+0.5);
pRPBom->dD = dD;
pRPBom->fThick = (float)(dThick);
_tcscpy(pRPBom->szMertial, sMater);
_tcscpy(pRPBom->szSN, sSn);
_tcscpy(pRPBom->szLevel, sLevel);
_tcscpy(pRPBom->szSys, sSys);
_tcscpy(pRPBom->szStd, sStdNo);
_tcscpy(pRPBom->szApp, sApp);
SetBomSN(pRPBom->szMertial, pRPBom->nBomSN);
m_mapRPBom.SetAt(sText, pRPBom);
m_vtRPBomPtrs.push_back(pRPBom);
}
else
{
pRPBom->nCount += 1;
}
addEntHandle(pWFit, pRPBom);
break;
}
case eHP:
{
pMap->GetAt(PIPE_TDN, dEDn);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sStdNo = _T("");
pMap->GetAt(PIPE_STDNO, sStdNo);
pMap->GetAt(KEY_L, dLen);//长度
sText.Format(_T("%d-%s-%s-%s"), (short)(dEDn + 0.5), sMater, sLevel, sSys);
if (!m_mapHPBom.Lookup(sText, (void *&)pHPBom))
{
pHPBom = new HPBom;
memset(pHPBom, 0, sizeof(HPBom));
pHPBom->nCount = 1;
pHPBom->nDn = (short)(dEDn + 0.5);
pHPBom->dL = dLen;
_tcscpy(pHPBom->szMertial, sMater);
_tcscpy(pHPBom->szSN, sSn);
_tcscpy(pHPBom->szLevel, sLevel);
_tcscpy(pHPBom->szSys, sSys);
_tcscpy(pHPBom->szStd, sStdNo);
_tcscpy(pHPBom->szApp, sApp);
SetBomSN(pHPBom->szMertial, pHPBom->nBomSN);
m_mapHPBom.SetAt(sText, pHPBom);
m_vtHPBomPtrs.push_back(pHPBom);
}
else
{
pHPBom->nCount += 1;
}
addEntHandle(pWFit, pHPBom);
break;
}
case eSPB:
{
pMap->GetAt(PIPE_TDN, dEDn);
nTmp = 0;
pMap->GetAt(KEY_KIND, nTmp);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sStdNo = _T("");
pMap->GetAt(PIPE_STDNO, sStdNo);
sText.Format(_T("%d-%s-%s-%s-%d"), (short)(dEDn + 0.5), sMater, sLevel, sSys,nTmp);
if (!m_mapSPBom.Lookup(sText, (void *&)pSPBBom))
{
pSPBBom = new SPBBom;
memset(pSPBBom, 0, sizeof(SPBBom));
pSPBBom->nCount = 1;
pSPBBom->nDn = (short)(dEDn + 0.5);
pSPBBom->nKind = nTmp;
_tcscpy(pSPBBom->szMertial, sMater);
_tcscpy(pSPBBom->szSN, sSn);
_tcscpy(pSPBBom->szLevel, sLevel);
_tcscpy(pSPBBom->szSys, sSys);
_tcscpy(pSPBBom->szStd, sStdNo);
_tcscpy(pSPBBom->szApp, sApp);
SetBomSN(pSPBBom->szMertial, pSPBBom->nBomSN);
m_mapSPBom.SetAt(sText, pSPBBom);
m_vtSPBomPtrs.push_back(pSPBBom);
}
else
{
pSPBBom->nCount += 1;
}
addEntHandle(pWFit, pSPBBom);
break;
}
case eThrough://直通 PVC
{
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(PIPE_OD, dD);
pMap->GetAt(PIPE_THICK, dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
pMap->GetAt(KEY_L, dM);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%d-%.1f-%s-%s-%s %s"), (short)(dDn + 0.5), (short)(dD + 0.5), dThick, sMater, sLevel, sSys, sApp);
if (!m_mapWThroughBoms.Lookup(sText, (void*&)pWThroughBom))
{
pWThroughBom = new WThroughBom;
memset(pWThroughBom, 0, sizeof(WThroughBom));
_tcscpy(pWThroughBom->szApp, _T("直通"));
pWThroughBom->nDn = (short)(dDn + 0.5);
pWThroughBom->nD = (short)(dD + 0.5);
pWThroughBom->nL = (short)(dM + 0.5);
pWThroughBom->fThick = (float)(dThick + 0.5);
_tcscpy(pWThroughBom->szMertial, sMater);
_tcscpy(pWThroughBom->szSN, sSn);
_tcscpy(pWThroughBom->szLevel, sLevel);
_tcscpy(pWThroughBom->szSys, sSys);
_tcscpy(pWThroughBom->szApp, sApp);
pWThroughBom->nCount = 1;
SetBomSN(pWThroughBom->szMertial, pWThroughBom->nBomSN);
m_mapWThroughBoms.SetAt(sText, pWThroughBom);
m_vtWThroughBomPtrs.push_back(pWThroughBom);
}
else
{
pWThroughBom->nCount += 1;
}
addEntHandle(pWFit, pWThroughBom);
break;
}
case eUJoin://活接 PVC
{
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(PIPE_OD, dD);
pMap->GetAt(PIPE_THICK, dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
pMap->GetAt(KEY_L, dM);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%d-%.1f-%s-%s-%s %s"), (short)(dDn + 0.5), (short)(dD + 0.5), dThick, sMater, sLevel, sSys, sApp);
if (!m_mapWUJoinBoms.Lookup(sText, (void*&)pWUJoinBoms))
{
pWUJoinBoms = new WUJoinBom;
memset(pWUJoinBoms, 0, sizeof(WUJoinBom));
_tcscpy(pWUJoinBoms->szApp, _T("活接"));
pWUJoinBoms->nDn = (short)(dDn + 0.5);
pWUJoinBoms->nD = (short)(dD + 0.5);
pWUJoinBoms->nL = (short)(dM + 0.5);
pWUJoinBoms->fThick = (float)(dThick + 0.5);
_tcscpy(pWUJoinBoms->szMertial, sMater);
_tcscpy(pWUJoinBoms->szSN, sSn);
_tcscpy(pWUJoinBoms->szLevel, sLevel);
_tcscpy(pWUJoinBoms->szSys, sSys);
_tcscpy(pWUJoinBoms->szApp, sApp);
pWUJoinBoms->nCount = 1;
SetBomSN(pWUJoinBoms->szMertial, pWUJoinBoms->nBomSN);
m_mapWUJoinBoms.SetAt(sText, pWUJoinBoms);
m_vtWUJoinBomPtrs.push_back(pWUJoinBoms);
}
else
{
pWUJoinBoms->nCount += 1;
}
addEntHandle(pWFit, pWUJoinBoms);
break;
}
case eRJoin://缩接 PVC 伸缩节
{
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(PIPE_OD, dD);
pMap->GetAt(PIPE_THICK, dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
pMap->GetAt(KEY_L, dM);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%d-%.1f-%s-%s-%s %s"), (short)(dDn + 0.5), (short)(dD + 0.5), dThick, sMater, sLevel, sSys, sApp);
if (!m_mapWRJoinBoms.Lookup(sText, (void*&)pWRJoinBoms))
{
pWRJoinBoms = new WRJoinBom;
memset(pWRJoinBoms, 0, sizeof(WRJoinBom));
_tcscpy(pWRJoinBoms->szApp, _T("缩接"));
pWRJoinBoms->nDn = (short)(dDn + 0.5);
pWRJoinBoms->nD = (short)(dD + 0.5);
pWRJoinBoms->nL = (short)(dM + 0.5);
pWRJoinBoms->fThick = (float)(dThick + 0.5);
_tcscpy(pWRJoinBoms->szMertial, sMater);
_tcscpy(pWRJoinBoms->szSN, sSn);
_tcscpy(pWRJoinBoms->szLevel, sLevel);
_tcscpy(pWRJoinBoms->szSys, sSys);
_tcscpy(pWRJoinBoms->szApp, sApp);
pWRJoinBoms->nCount = 1;
SetBomSN(pWRJoinBoms->szMertial, pWRJoinBoms->nBomSN);
m_mapWRJoinBoms.SetAt(sText, pWRJoinBoms);
m_vtWRJoinBomPtrs.push_back(pWRJoinBoms);
}
else
{
pWRJoinBoms->nCount += 1;
}
addEntHandle(pWFit, pWRJoinBoms);
break;
}
case eOJoin://外螺纹接头
{
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(PIPE_OD, dD);
pMap->GetAt(PIPE_THICK, dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
pMap->GetAt(KEY_L, dM);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%d-%.1f-%s-%s-%s %s"), (short)(dDn + 0.5), (short)(dD + 0.5), dThick, sMater, sLevel, sSys, sApp);
if (!m_mapWOJoinBoms.Lookup(sText, (void*&)pWOJoinBoms))
{
pWOJoinBoms = new WOJoinBom;
memset(pWOJoinBoms, 0, sizeof(WOJoinBom));
_tcscpy(pWOJoinBoms->szApp, _T("外螺纹接头"));
pWOJoinBoms->nDn = (short)(dDn + 0.5);
pWOJoinBoms->nD = (short)(dD + 0.5);
pWOJoinBoms->nL = (short)(dM + 0.5);
pWOJoinBoms->fThick = (float)(dThick + 0.5);
_tcscpy(pWOJoinBoms->szMertial, sMater);
_tcscpy(pWOJoinBoms->szSN, sSn);
_tcscpy(pWOJoinBoms->szLevel, sLevel);
_tcscpy(pWOJoinBoms->szSys, sSys);
_tcscpy(pWOJoinBoms->szApp, sApp);
pWOJoinBoms->nCount = 1;
SetBomSN(pWOJoinBoms->szMertial, pWOJoinBoms->nBomSN);
m_mapWOJoinBoms.SetAt(sText, pWOJoinBoms);
m_vtWOJoinBomPtrs.push_back(pWOJoinBoms);
}
else
{
pWOJoinBoms->nCount += 1;
}
addEntHandle(pWFit, pWOJoinBoms);
break;
}
case eIJoin://内螺纹接头
{
pMap->GetAt(PIPE_DN, dDn);
pMap->GetAt(PIPE_OD, dD);
pMap->GetAt(PIPE_THICK, dThick);
sMater = _T("");
pMap->GetAt(PIPE_MATERIALFT, sMater);
pMap->GetAt(KEY_L, dM);
sSn = _T("");
pMap->GetAt(KEY_SN, sSn);
sLevel = _T("");
pMap->GetAt(PIPE_LEVEL, sLevel);
sSys = _T("");
pMap->GetAt(PIPE_SYS, sSys);
sText.Format(_T("%d-%d-%.1f-%s-%s-%s %s"), (short)(dDn + 0.5), (short)(dD + 0.5), dThick, sMater, sLevel, sSys, sApp);
if (!m_mapWIJoinBoms.Lookup(sText, (void*&)pWIJoinBoms))
{
pWIJoinBoms = new WOJoinBom;
memset(pWIJoinBoms, 0, sizeof(WOJoinBom));
_tcscpy(pWIJoinBoms->szApp, _T("内螺纹接头"));
pWIJoinBoms->nDn = (short)(dDn + 0.5);
pWIJoinBoms->nD = (short)(dD + 0.5);
pWIJoinBoms->nL = (short)(dM + 0.5);
pWIJoinBoms->fThick = (float)(dThick + 0.5);
_tcscpy(pWIJoinBoms->szMertial, sMater);
_tcscpy(pWIJoinBoms->szSN, sSn);
_tcscpy(pWIJoinBoms->szLevel, sLevel);
_tcscpy(pWIJoinBoms->szSys, sSys);
_tcscpy(pWIJoinBoms->szApp, sApp);
pWIJoinBoms->nCount = 1;
SetBomSN(pWIJoinBoms->szMertial, pWIJoinBoms->nBomSN);
m_mapWIJoinBoms.SetAt(sText, pWIJoinBoms);
m_vtWIJoinBomPtrs.push_back(pWIJoinBoms);
}
else
{
pWIJoinBoms->nCount += 1;
}
addEntHandle(pWFit, pWIJoinBoms);
break;
}
default:
break;
}
}
//3.设备
AecDbEwEquipment* pWEqu = AecDbEwEquipment::cast(pEnt);
if (pWEqu != NULL)
{
//按名称统计
CString sName,sSpec;
pMap = pWEqu->GetSpecialtyData(AcDb::kForRead);
sName = _T("");
pMap->GetAt(KEY_NAME,sName);
if (sName.Find(_T("阀")) != -1)//是阀门
{
//法兰统计
//工厂提供的成型一体化阀门设备自带 法兰 螺栓 螺母??
//不需要统计
}
//
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sSpec = sName;
SH_BIM_BLOCK bims;
CoreTools::getBimData(*pMap, _T("规格"), sSpec);
pMap->GetAt(PIPE_LEVEL, sLevel);
sText = sName;
sText += _T(" ");
sText += sLevel;
WEquBom* pCount = NULL;
if (!m_mapName2Count.Lookup(sText,(void*&)pCount))
{
pCount = new WEquBom;
memset(pCount,0,sizeof(WEquBom));
pCount->nCount = 1;
_tcscpy(pCount->szName,sName);
_tcscpy(pCount->szSpec,sSpec);
_tcscpy(pCount->szSN,sSn);
m_mapName2Count.SetAt(sText,pCount);
}
else
{
pCount->nCount += 1;
}
addEntHandle(pWEqu, pCount);
}
AecDbParamEquipment* pParEqu = AecDbParamEquipment::cast(pEnt);
if (pParEqu != NULL)
{
//按名称统计
CString sName,sSpec;
pMap = pParEqu->GetSpecialtyData(AcDb::kForRead);
sName = _T("");
pMap->GetAt(KEY_NAME,sName);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sSpec = sName;
SH_BIM_BLOCK bims;
CoreTools::getBimData(*pMap, _T("规格"), sSpec);
pMap->GetAt(PIPE_LEVEL, sLevel);
sText = sName;
sText += _T(" ");
sText += sLevel;
WEquBom* pCount = NULL;
if (!m_mapName2Count.Lookup(sText,(void*&)pCount))
{
pCount = new WEquBom;
memset(pCount,0,sizeof(WEquBom));
pCount->nCount = 1;
_tcscpy(pCount->szName,sName);
_tcscpy(pCount->szSpec,sSpec);
_tcscpy(pCount->szSN,sSn);
m_mapName2Count.SetAt(sText,pCount);
}
else
{
pCount->nCount += 1;
}
addEntHandle(pParEqu, pCount);
}
AecDbXEquipment* pXEqu = AecDbXEquipment::cast(pEnt);
if (pXEqu != NULL)
{
//按名称统计
CString sName,sSpec;
pMap = pXEqu->GetSpecialtyData(AcDb::kForRead);
sName = _T("");
pMap->GetAt(KEY_NAME,sName);
sSn = _T("");
pMap->GetAt(KEY_SN,sSn);
sSpec = sName;
SH_BIM_BLOCK bims;
CoreTools::getBimData(*pMap, _T("规格"), sSpec);
sSpec = pXEqu->GetSpec();
pMap->GetAt(PIPE_LEVEL, sLevel);
sText = sName;
sText += _T(" ");
sText += sLevel;
sText += sSpec;
WEquBom* pCount = NULL;
if (!m_mapName2Count.Lookup(sText,(void*&)pCount))
{
pCount = new WEquBom;
memset(pCount,0,sizeof(WEquBom));
pCount->nCount = 1;
_tcscpy(pCount->szName,sName);
_tcscpy(pCount->szSpec,sSpec);
_tcscpy(pCount->szSN,sSn);
m_mapName2Count.SetAt(sText,pCount);
}
else
{
pCount->nCount += 1;
}
addEntHandle(pXEqu, pCount);
}
AecDbEwFlexiblePipe *pFxPipe = AecDbEwFlexiblePipe::cast(pEnt);
if (pFxPipe != NULL)
{
AecDbObjXDataMap *pXDataMap = pFxPipe->GetSpecialtyData(AcDb::kForRead);
XGPipeBom data;
memset(&data, 0, sizeof(XGPipeBom));
pXDataMap->GetAt(KEY_NAME, data.szPName);
pXDataMap->GetAt(KEY_MATERIAL, data.szMaterial);
pXDataMap->GetAt(PIPE_D, data.dOD);
pXDataMap->GetAt(PIPE_THICK, data.dt);
pXDataMap->GetAt(PIPE_DN, data.dDN);
pXDataMap->GetAt(PID_PIPE_DTEMPER, data.szWorkTmp);
pXDataMap->GetAt(PID_PIPE_DPRESS, data.dt);
pXDataMap->GetAt(KEY_FLAMER, data.szFlameR);
pXDataMap->GetAt(KEY_TM, data.szTM);
pXDataMap->GetAt(KEY_Model, data.szModel);
pXDataMap->GetAt(KEY_STRUF, data.szStruF);
pXDataMap->GetAt(KEY_FACTORY, data.szProvider);
pXDataMap->GetAt(KEY_BOMNO, data.szBomNo);
pFxPipe->objectId().handle().getIntoAsciiBuffer(data.szHndle);
data.dLen = pFxPipe->GetLength();
data.dLen /= 1000.0;//折算为米
sText.Format(_T("%s-%s-%.1f-%。1f"),data.szPName,data.szMaterial, data.dOD, data.dt);
pXGPipeBom = NULL;
if (!m_mapXGPipeBom.Lookup(sText, (void *&)pXGPipeBom))
{
pXGPipeBom = new XGPipeBom;
memcpy(pXGPipeBom, &data, sizeof(XGPipeBom));
m_mapXGPipeBom.SetAt(sText, pXGPipeBom);
m_vtXGPipeBomPtrs.push_back(pXGPipeBom);
}
else
{
pXGPipeBom->dLen += data.dLen;
}
addEntHandle(pFxPipe, pXGPipeBom);
}
//套管
AecDbX3dPartEntity* pXPart = AecDbX3dPartEntity::cast(pEnt);
if (pXPart != NULL)
{
CString sPipeType,sRem;
CString sName = pXPart->GetName();
if (sName.Find(_T("套管")) != -1)
{
pXPart->GetSpecialtyData(AcDb::kForRead)->GetAt(_T("dH"),dLen);
pXPart->GetSpecialtyData(AcDb::kForRead)->GetAt(_T("dD"),dD);
pXPart->GetSpecialtyData(AcDb::kForRead)->GetAt(_T("dT"),dThick);
sMater = _T("");
pXPart->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_MATERIAL,sMater);
sPipeType = _T("");
pXPart->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_PIPETYPE,sPipeType);
sSn = _T("");
pXPart->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
dDn = dD;
dLen /= 1000.0;//折算为米
sText.Format(_T("%d-%d-%.1f-%s"),(short)(dDn + 0.5),(short)(dD + 0.5),dThick,sMater);
if (!m_mapPipeBom.Lookup(sText,(void*&)pPipeBom))
{
pPipeBom = new PipeBom;
memset(pPipeBom,0,sizeof(PipeBom));
pPipeBom->nDn = (short)(dDn + 0.5);
pPipeBom->nD = (short)(dD + 0.5);
pPipeBom->fThick = (float)dThick;
pPipeBom->dLen = dLen;
_tcscpy(pPipeBom->szMertial,sMater);
sRem.Format(_T("%s %s"),_T("套管"),sPipeType);
_tcscpy(pPipeBom->szRem,sRem);
_tcscpy(pPipeBom->szSN,sSn);
m_mapPipeBom.SetAt(sText,pPipeBom);
m_vtPipeBomPtrs.push_back(pPipeBom);
}
else
{
pPipeBom->dLen += dLen;
}
addEntHandle(pXPart, pPipeBom);
}
}
AecDbHolder* pHolder = AecDbHolder::cast(pEnt);
if (pHolder != NULL)
{
ASteel atl;
pHolder->GetASteelLength(atl);
sSn = _T("");
pHolder->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
//宽-厚-材质
sText.Format(_T("%.1f-%.1f-%s"),atl.W,atl.t,atl.szMat);
if (!m_mapAngSteelBom.Lookup(sText,(void*&)pASteel))
{
pASteel = new AngSteelBom;
memset(pASteel,0,sizeof(AngSteelBom));
pASteel->dLen = atl.L / 1000.0;//米
pASteel->dW = atl.W;
pASteel->dt = atl.t;
_tcscpy(pASteel->szMertial,atl.szMat);
_tcscpy(pASteel->szSN,sSn);
m_mapAngSteelBom.SetAt(sText,pASteel);
m_vtAngSteelBomPtrs.push_back(pASteel);
}
else
{
pASteel->dLen += atl.L / 1000.0;
}
addEntHandle(pHolder, pASteel);
}
AecDbHanger* pHanger = AecDbHanger::cast(pEnt);
if (pHanger != NULL)
{
ASteel atl;
pHanger->GetASteelLength(atl);
sSn = _T("");
pHanger->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
//宽-厚-材质
sText.Format(_T("%.1f-%.1f-%s"),atl.W,atl.t,atl.szMat);
if (!m_mapAngSteelBom.Lookup(sText,(void*&)pASteel))
{
pASteel = new AngSteelBom;
memset(pASteel,0,sizeof(AngSteelBom));
pASteel->dLen = atl.L / 1000.0;//米
pASteel->dW = atl.W;
pASteel->dt = atl.t;
_tcscpy(pASteel->szMertial,atl.szMat);
_tcscpy(pASteel->szSN,sSn);
m_mapAngSteelBom.SetAt(sText,pASteel);
m_vtAngSteelBomPtrs.push_back(pASteel);
}
else
{
pASteel->dLen += atl.L / 1000.0;
}
addEntHandle(pHanger, pASteel);
}
AecDbBossHolder* pBHolder = AecDbBossHolder::cast(pEnt);
if (pBHolder != NULL)
{
ASteel atl;
if ( pBHolder->GetASteelLength(atl) )
{
sSn = _T("");
pBHolder->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
//宽-厚-材质
sText.Format(_T("%.1f-%.1f-%s"),atl.W,atl.t,atl.szMat);
if (!m_mapAngSteelBom.Lookup(sText,(void*&)pASteel))
{
pASteel = new AngSteelBom;
memset(pASteel,0,sizeof(AngSteelBom));
pASteel->dLen = atl.L / 1000.0;//米
pASteel->dW = atl.W;
pASteel->dt = atl.t;
_tcscpy(pASteel->szMertial,atl.szMat);
_tcscpy(pASteel->szSN,sSn);
m_mapAngSteelBom.SetAt(sText,pASteel);
m_vtAngSteelBomPtrs.push_back(pASteel);
}
else
{
pASteel->dLen += atl.L / 1000.0;
}
addEntHandle(pBHolder, pASteel);
}
}
//护栏
AecDbGuardBar* pGBar = AecDbGuardBar::cast(pEnt);
if (pGBar != NULL)
{
GuardBar bar;
pGBar->GetGuardBarData(bar);
dLen = pGBar->GetLength();
sSn = _T("");
pGBar->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
sText.Format(_T("%.1f-%.1f-%.1f-%s-%s"),bar.dH,bar.dD,bar.dt,bar.m_sMaterial,bar.m_sFactory);
if (!m_mapGuarBarBom.Lookup(sText,(void*&)pGBarBom))
{
pGBarBom = new GuarBarBom;
memset(pGBarBom,0,sizeof(GuarBarBom));
pGBarBom->dD = bar.dD;
pGBarBom->dt = bar.dt;
pGBarBom->dH = bar.dH;
pGBarBom->dLen = dLen / 1000.0;
_tcscpy(pGBarBom->m_sMaterial,bar.m_sMaterial);
_tcscpy(pGBarBom->m_sFactory,bar.m_sFactory);
_tcscpy(pGBarBom->szSN,sSn);
m_mapGuarBarBom.SetAt(sText,pGBarBom);
m_vtGuarBarBomPtrs.push_back(pGBarBom);
}
else
{
pGBarBom->dLen += dLen / 1000.0;
}
addEntHandle(pGBar, pGBarBom);
}
//圆护爬梯
AecDbClimbStair* pCStair = AecDbClimbStair::cast(pEnt);
if (pCStair != NULL)
{
ClimbStair data;
pCStair->GetClimbStairData(data);
sSn = _T("");
pCStair->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
sText.Format(_T("%.1f-%.1f-%s-%s"),data.dD,data.dH,data.m_sMaterial,data.m_sFactory);
if (!m_mapClimbStairBom.Lookup(sText,(void*&)pCStairBom))
{
pCStairBom = new ClimbStairBom;
memset(pCStairBom,0,sizeof(ClimbStairBom));
pCStairBom->dD = data.dD;
pCStairBom->dH = data.dH;
pCStairBom->nCount = 1;
_tcscpy(pCStairBom->m_sMaterial,data.m_sMaterial);
_tcscpy(pCStairBom->m_sFactory,data.m_sFactory);
_tcscpy(pCStairBom->szSN,sSn);
m_mapClimbStairBom.SetAt(sText,pCStairBom);
m_vtClimbStairBomPtrs.push_back(pCStairBom);
}
else
{
pCStairBom->nCount += 1;
}
addEntHandle(pCStair, pCStairBom);
}
//直梯子
AecDbLineStair* pLStair = AecDbLineStair::cast(pEnt);
if (pLStair != NULL)
{
LineStair data;
pLStair->GetLineStairData(data);
sSn = _T("");
pLStair->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
dLen = pLStair->GetLength();
sText.Format(_T("%.1f-%.1f-%.1f-%s-%s-L"),dLen,data.dW,data.bar.dH,data.m_sMaterial,data.m_sFactory);
if (!m_mapLineStairBom.Lookup(sText,(void*&)pLStairBom))
{
pLStairBom = new LineStairBom;
memset(pLStairBom,0,sizeof(LineStairBom));
pLStairBom->dLen = dLen / 1000.0;
pLStairBom->dW = data.dW;
pLStairBom->dH = data.bar.dH;
pLStairBom->nCount = 1;
_tcscpy(pLStairBom->m_sMaterial,data.m_sMaterial);
_tcscpy(pLStairBom->m_sFactory,data.m_sFactory);
_tcscpy(pLStairBom->m_sRem,_T("定制直梯"));
_tcscpy(pLStairBom->szSN,sSn);
m_mapLineStairBom.SetAt(sText,pLStairBom);
m_vtLineStairBomPtrs.push_back(pLStairBom);
}
else
{
pLStairBom->nCount += 1;
}
addEntHandle(pLStair, pLStairBom);
}
//圆弧梯
AecDbArcStair* pAStair = AecDbArcStair::cast(pEnt);
if (pAStair != NULL)
{
LineStair data;
pAStair->GetLineStairData(data);
sSn = _T("");
pAStair->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
dLen = pAStair->GetLength();
sText.Format(_T("%.1f-%.1f-%.1f-%s-%s-A"),dLen,data.dW,data.bar.dH,data.m_sMaterial,data.m_sFactory);
if (!m_mapLineStairBom.Lookup(sText,(void*&)pLStairBom))
{
pLStairBom = new LineStairBom;
memset(pLStairBom,0,sizeof(LineStairBom));
pLStairBom->dLen = dLen / 1000.0;
pLStairBom->dW = data.dW;
pLStairBom->dH = data.bar.dH;
pLStairBom->nCount = 1;
_tcscpy(pLStairBom->m_sMaterial,data.m_sMaterial);
_tcscpy(pLStairBom->m_sFactory,data.m_sFactory);
_tcscpy(pLStairBom->m_sRem,_T("定制弧梯"));
_tcscpy(pLStairBom->szSN,sSn);
m_mapLineStairBom.SetAt(sText,pLStairBom);
m_vtLineStairBomPtrs.push_back(pLStairBom);
}
else
{
pLStairBom->nCount += 1;
}
addEntHandle(pAStair, pLStairBom);
}
//门窗
AecDbXOpening* pOpening = AecDbXOpening::cast(pEnt);
if (pOpening != NULL)
{
OpeningData data;
pOpening->GetOpeningData(data);
sSn = _T("");
pOpening->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
sText.Format(_T("%.1f-%.1f-%d-%s"),data.dWidth,data.dHeight,data.nType,data.szName);
if (!m_mapOpeningBom.Lookup(sText,(void*&)pOpeningBom))
{
pOpeningBom = new OpeningBom;
memset(pOpeningBom,0,sizeof(OpeningBom));
pOpeningBom->dWidth = data.dWidth;
pOpeningBom->dHeight = data.dHeight;
pOpeningBom->nType = data.nType;
pOpeningBom->nCount = 1;
_tcscpy(pOpeningBom->szName,data.szName);
_tcscpy(pOpeningBom->szFactory,data.szFactory);
_tcscpy(pOpeningBom->szSN,sSn);
m_mapOpeningBom.SetAt(sText,pOpeningBom);
m_vtOpeningBomPtrs.push_back(pOpeningBom);
}
else
{
pOpeningBom->nCount += 1;
}
addEntHandle(pOpening, pOpeningBom);
}
//暖通统计
AecDbHvacDuct* pDuct = AecDbHvacDuct::cast(pEnt);
if (pDuct != NULL)
{
AecHvac::DuctParam data;
pDuct->GetDuctParam(data);
sSn = _T("");
pDuct->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
sText.Format(_T("%.1f-%.1f-%d-%s"),data.dSize[0],data.dSize[1],data.eType,data.szMat);
if (!m_mapDuctBom.Lookup(sText,(void*&)pDuctBom))
{
pDuctBom = new DuctBom;
pDuctBom->dW = data.dSize[0];
pDuctBom->dH = data.dSize[1];
pDuctBom->dt = data.dSize[2];
pDuctBom->eSect = data.eType;
pDuctBom->dLen = 0.001 * pDuct->GetLength();
_tcscpy(pDuctBom->szMertial,data.szMat);
_tcscpy(pDuctBom->szFactory,data.szFat);
_tcscpy(pDuctBom->szSN,sSn);
_tcscpy(pDuctBom->szSys,data.szSys);
_tcscpy(pDuctBom->szLevel,data.szLevel);
m_mapDuctBom.SetAt(sText,pDuctBom);
m_vtDuctBomPtrs.push_back(pDuctBom);
}
else
{
pDuctBom->dLen += 0.001 * pDuct->GetLength();
}
addEntHandle(pDuct, pDuctBom);
}
AecDbHvacFitting* pHFit = AecDbHvacFitting::cast(pEnt);
if (pHFit != NULL)
{
nFitType = 0;
pMap = pHFit->GetSpecialtyData(AcDb::kForRead);
pMap->GetAt(KEY_RUNTIME,nFitType);
AecHvac::DuctParam data;
memset(&data,0,sizeof(AecHvac::DuctParam));
pHFit->GetDuctParam(data);
switch(nFitType)
{
case eElbow:
{
HElbowBom hElb;
memset(&hElb,0,sizeof(HElbowBom));
pMap->GetAt(HELB_Type,hElb.nType);
pMap->GetAt(HELB_StartWidth,hElb.dSw);
pMap->GetAt(HELB_EndWidth,hElb.dEw);
pMap->GetAt(HELB_EndThick,hElb.dEh);
hElb.dSh = hElb.dEh;
hElb.dt = data.dSize[2];
hElb.eSect = data.eType;
_tcscpy(hElb.szFactory,data.szFat);
_tcscpy(hElb.szLevel,data.szLevel);
_tcscpy(hElb.szMertial,data.szMat);
_tcscpy(hElb.szSys,data.szSys);
_tcscpy(hElb.szSN,data.szNo);
hElb.nCount = 1;
sText.Format(_T("%d-%d-%.1f-%.1f-%.1f-%.1f-%.1f-%s-%s-%s"),
hElb.nType,
hElb.eSect,
hElb.dSw,
hElb.dEw,
hElb.dSh,
hElb.dEh,
hElb.dt,
hElb.szMertial,
hElb.szLevel,
hElb.szSys);
if (!m_mapHElbowBom.Lookup(sText,(void*&)pHElbowBom))
{
pHElbowBom = new HElbowBom;
memcpy(pHElbowBom,&hElb,sizeof(HElbowBom));
m_mapHElbowBom.SetAt(sText,pHElbowBom);
m_vtHElbowBomPtrs.push_back(pHElbowBom);
}
else
{
pHElbowBom->nCount += 1;
}
break;
}
case eTee:
{
HTeeBom hte;
memset(&hte,0,sizeof(HTeeBom));
pMap->GetAt(HVAC_SectType,hte.eSect);
pMap->GetAt(HTEE_Type,hte.nType);
pMap->GetAt(HTEE_StartWidth, hte.dSw);
pMap->GetAt(HTEE_EndWidth, hte.dEw);
pMap->GetAt(HTEE_BranchWidth, hte.dBw);
pMap->GetAt(HTEE_Thick, hte.dSh);
pMap->GetAt(HTEE_EndThick, hte.dEh);
pMap->GetAt(HTEE_BranchThick, hte.dBh);
hte.dt = data.dSize[2];
_tcscpy(hte.szFactory,data.szFat);
_tcscpy(hte.szLevel,data.szLevel);
_tcscpy(hte.szMertial,data.szMat);
_tcscpy(hte.szSys,data.szSys);
_tcscpy(hte.szSN,data.szNo);
hte.nCount = 1;
sText.Format(_T("%d-%d-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%s-%s-%s"),
hte.nType,
hte.eSect,
hte.dSw,
hte.dEw,
hte.dBw,
hte.dSh,
hte.dEh,
hte.dBh,
hte.dt,
hte.szMertial,
hte.szLevel,
hte.szSys);
if (!m_mapHTeeBom.Lookup(sText,(void*&)pHTeeBom))
{
pHTeeBom = new HTeeBom;
memcpy(pHTeeBom,&hte,sizeof(HTeeBom));
m_mapHTeeBom.SetAt(sText,pHTeeBom);
m_vtHTeeBomPtrs.push_back(pHTeeBom);
}
else
{
pHTeeBom->nCount += 1;
}
break;
}
case eCross:
{
HCrossBom hCro;
memset(&hCro,0,sizeof(HCrossBom));
pMap->GetAt(HCRS_Type, hCro.nType);
pMap->GetAt(HCRS_StartWidth,hCro.dSw);
pMap->GetAt(HCRS_EndWidth,hCro.dEw);
pMap->GetAt(HCRS_Branch1Width,hCro.dBw1);
pMap->GetAt(HCRS_Branch2Width,hCro.dBw2);
pMap->GetAt(HCRS_Thick,hCro.dSh);
pMap->GetAt(HCRS_Branch1Thick,hCro.dBh1);
pMap->GetAt(HCRS_Branch2Thick,hCro.dBh2);
hCro.dt = data.dSize[2];
hCro.eSect = data.eType;
_tcscpy(hCro.szFactory,data.szFat);
_tcscpy(hCro.szLevel,data.szLevel);
_tcscpy(hCro.szMertial,data.szMat);
_tcscpy(hCro.szSys,data.szSys);
_tcscpy(hCro.szSN,data.szNo);
hCro.nCount = 1;
sText.Format(_T("%d-%d-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%s-%s-%s"),
hCro.nType,
hCro.eSect,
hCro.dSw,
hCro.dEw,
hCro.dBw1,
hCro.dBw2,
hCro.dSh,
hCro.dEh,
hCro.dBh1,
hCro.dBh2,
hCro.dt,
hCro.szMertial,
hCro.szLevel,
hCro.szSys);
if (!m_mapHCrossBom.Lookup(sText,(void*&)pHCrossBom))
{
pHCrossBom = new HCrossBom;
memcpy(pHCrossBom,&hCro,sizeof(HCrossBom));
m_mapHCrossBom.SetAt(sText,pHCrossBom);
m_vtHCrossBomPtrs.push_back(pHCrossBom);
}
else
{
pHCrossBom->nCount += 1;
}
break;
}
case eOffset:
{
HOffsetBom hOff;
memset(&hOff,0,sizeof(HOffsetBom));
pMap->GetAt(HOFF_Type,hOff.nType);
pMap->GetAt(HOFF_StartWidth,hOff.dSw);
pMap->GetAt(HOFF_EndWidth,hOff.dEw);
pMap->GetAt(HOFF_Thick,hOff.dt);
pMap->GetAt(HOFF_Angle,hOff.dAngle);
pMap->GetAt(HOFF_Length,hOff.dOffL);
pMap->GetAt(HOFF_Offset, hOff.dOffW);
hOff.eSect = data.eType;
_tcscpy(hOff.szFactory,data.szFat);
_tcscpy(hOff.szLevel,data.szLevel);
_tcscpy(hOff.szMertial,data.szMat);
_tcscpy(hOff.szSys,data.szSys);
_tcscpy(hOff.szSN,data.szNo);
hOff.nCount = 1;
sText.Format(_T("%d-%d-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%s-%s-%s"),
hOff.nType,
hOff.eSect,
hOff.dSw,
hOff.dEw,
hOff.dt,
hOff.dAngle,
hOff.dOffL,
hOff.dOffW,
hOff.szMertial,
hOff.szLevel,
hOff.szSys);
if (!m_mapHOffsetBom.Lookup(sText,(void*&)pHOffBom))
{
pHOffBom = new HOffsetBom;
memcpy(pHOffBom,&hOff,sizeof(HOffsetBom));
m_mapHOffsetBom.SetAt(sText,pHOffBom);
m_vtHOffsetBomPtrs.push_back(pHOffBom);
}
else
{
pHOffBom->nCount += 1;
}
break;
}
default:
break;
}
addEntHandle(pHFit, pHElbowBom);
}
//电气统计. 桥架
AecDbECableTray* pCabTry = AecDbECableTray::cast(pEnt);
if (pCabTry != NULL)
{
AecHvac::DuctParam data;
pCabTry->GetDuctParam(data);
//电缆沟不统计
if (data.m_app == WPipe::eTrench)
{
pEnt->close();
return;
}
sSn = _T("");
pCabTry->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SN,sSn);
sText.Format(_T("%.1f-%.1f-%d-%s-%s"),data.dSize[0],data.dSize[1],data.eType,data.szType,data.szMat);
if (!m_mapCabtryBom.Lookup(sText,(void*&)pECabBom))
{
pECabBom = new ECabletryBom;
pECabBom->dW = data.dSize[0];
pECabBom->dH = data.dSize[1];
pECabBom->dt = data.dSize[2];
pECabBom->eSect = data.eType;
pECabBom->dLen = 0.001 * pCabTry->GetLength();
_tcscpy(pECabBom->szMertial,data.szMat);
_tcscpy(pECabBom->szFactory,data.szFat);
_tcscpy(pECabBom->szSN,sSn);
_tcscpy(pECabBom->szSys,data.szSys);
_tcscpy(pECabBom->szLevel,data.szLevel);
_tcscpy(pECabBom->szType,data.szType);
m_mapCabtryBom.SetAt(sText,pECabBom);
m_vtECabtryBomPtrs.push_back(pECabBom);
}
else
{
pECabBom->dLen += 0.001 * pCabTry->GetLength();
}
addEntHandle(pCabTry, pECabBom);
}
AecDbEcFitting* pEcFit = AecDbEcFitting::cast(pEnt);
if (pEcFit != NULL)
{
AecHvac::DuctParam data;
pEcFit->GetDuctParam(data);
//电缆沟不统计
if (data.m_app == WPipe::eTrench)
{
pEnt->close();
return;
}
nFitType = 0;
pMap = pEcFit->GetSpecialtyData(AcDb::kForRead);
pMap->GetAt(KEY_RUNTIME,nFitType);
EFittingType eType = (EFittingType)nFitType;
ECabFitBom ecBom;
memset(&ecBom,0,sizeof(ECabFitBom));
switch(eType)
{
case eElbow:
{
pMap->GetAt(PIPE_ELBOWANG,ecBom.dAngle);
pMap->GetAt(HELB_RadRatio,ecBom.dRatio);
pMap->GetAt(HELB_LX,ecBom.dLx);
ecBom.nType = nFitType;
ecBom.eSect = eRect;
sText.Format(_T("%.1f-%.1f-%.1f-%.1f-%s-%s"),data.dSize[0],data.dSize[1],ecBom.dAngle,ecBom.dRatio,data.szMat,data.szType);
if (!m_mapEElbowBom.Lookup(sText,(void*&)pCabFitBom))
{
pCabFitBom = new ECabFitBom;
memset(pCabFitBom,0,sizeof(ECabFitBom));
pCabFitBom->dW = data.dSize[0];
pCabFitBom->dH = data.dSize[1];
pCabFitBom->dt = data.dSize[2];
pCabFitBom->dAngle = ecBom.dAngle * 180 / PI;
pCabFitBom->dRatio = ecBom.dRatio;
pCabFitBom->dLx = ecBom.dLx;
pCabFitBom->nType = nFitType;
pCabFitBom->eSect = eRect;
pCabFitBom->nCount = 1;
_tcscpy(pCabFitBom->szMertial,data.szMat);
_tcscpy(pCabFitBom->szFactory,data.szFat);
_tcscpy(pCabFitBom->szSN,sSn);
_tcscpy(pCabFitBom->szSys,data.szSys);
_tcscpy(pCabFitBom->szLevel,data.szLevel);
_tcscpy(pCabFitBom->szType,data.szType);
m_mapEElbowBom.SetAt(sText,pCabFitBom);
m_vtEElbowBomPtrs.push_back(pCabFitBom);
}
else
{
pCabFitBom->nCount += 1;
}
break;
}
case eTee:
{
pMap->GetAt(HELB_LX,ecBom.dLx);
pMap->GetAt(HELB_RadRatio,ecBom.dRatio);
ecBom.nType = nFitType;
ecBom.eSect = eRect;
sText.Format(_T("%.1f-%.1f-%.1f-%.1f-%s-%s"),data.dSize[0],data.dSize[1],ecBom.dLx,ecBom.dRatio,data.szMat,data.szType);
if (!m_mapETeeBom.Lookup(sText,(void*&)pCabFitBom))
{
pCabFitBom = new ECabFitBom;
memset(pCabFitBom,0,sizeof(ECabFitBom));
pCabFitBom->dW = data.dSize[0];
pCabFitBom->dH = data.dSize[1];
pCabFitBom->dt = data.dSize[2];
pCabFitBom->dAngle = 0.0;
pCabFitBom->dRatio = ecBom.dRatio;
pCabFitBom->dLx = ecBom.dLx;
pCabFitBom->nType = nFitType;
pCabFitBom->eSect = eRect;
pCabFitBom->nCount = 1;
_tcscpy(pCabFitBom->szMertial,data.szMat);
_tcscpy(pCabFitBom->szFactory,data.szFat);
_tcscpy(pCabFitBom->szSN,sSn);
_tcscpy(pCabFitBom->szSys,data.szSys);
_tcscpy(pCabFitBom->szLevel,data.szLevel);
_tcscpy(pCabFitBom->szType,data.szType);
m_mapETeeBom.SetAt(sText,pCabFitBom);
m_vtETeeBomPtrs.push_back(pCabFitBom);
}
else
{
pCabFitBom->nCount += 1;
}
break;
}
case eCross:
{
pMap->GetAt(HELB_LX,ecBom.dLx);
pMap->GetAt(HELB_RadRatio,ecBom.dRatio);
ecBom.nType = nFitType;
ecBom.eSect = eRect;
sText.Format(_T("%.1f-%.1f-%.1f-%.1f-%s-%s"),data.dSize[0],data.dSize[1],ecBom.dLx,ecBom.dRatio,data.szMat,data.szType);
if (!m_mapECrossBom.Lookup(sText,(void*&)pCabFitBom))
{
pCabFitBom = new ECabFitBom;
memset(pCabFitBom,0,sizeof(ECabFitBom));
pCabFitBom->dW = data.dSize[0];
pCabFitBom->dH = data.dSize[1];
pCabFitBom->dt = data.dSize[2];
pCabFitBom->dAngle = 0.0;
pCabFitBom->dRatio = ecBom.dRatio;
pCabFitBom->dLx = ecBom.dLx;
pCabFitBom->nType = nFitType;
pCabFitBom->eSect = eRect;
pCabFitBom->nCount = 1;
_tcscpy(pCabFitBom->szMertial,data.szMat);
_tcscpy(pCabFitBom->szFactory,data.szFat);
_tcscpy(pCabFitBom->szSN,sSn);
_tcscpy(pCabFitBom->szSys,data.szSys);
_tcscpy(pCabFitBom->szLevel,data.szLevel);
_tcscpy(pCabFitBom->szType,data.szType);
m_mapECrossBom.SetAt(sText,pCabFitBom);
m_vtECrossBomPtrs.push_back(pCabFitBom);
}
else
{
pCabFitBom->nCount += 1;
}
break;
}
default:
break;
}
addEntHandle(pEcFit, pCabFitBom);
}
pEnt->close();
}
}
void CBomReportDlg::AddFlangeBom(AecDbEwFitting *pWFit)
{
CString sKey, sGasketInf, sSpec, sMater, sMaterFt,sRem, sSys, sMat,sType;
CString sDimtext, sLevel, sBoltInfs, sEndF, sStd, sSn, sText;
pWFit->GetAt(PIPE_LEVEL, sLevel);
pWFit->GetAt(PIPE_STDNO, sStd);
pWFit->GetAt(PIPE_MATERIALFT, sMaterFt);
pWFit->GetAt(PIPE_DESCR, sRem);
pWFit->GetAt(KEY_SN, sSn);
double dWD = 0, dWh = 0;
pWFit->GetAt(PIPE_WD, dWD);
pWFit->GetAt(PIPE_WTHICK, dWh);//大盘面厚度
sSys = _T("");//暂不考虑系统,只与等级相关
//pWFit->GetAt(PIPE_SYS,sSys);
double dDN = 0.0, dPress = 0.0;
pWFit->GetAt(PID_PIPE_DPRESS, dPress);
int nFitType = 0, nCountAdd = 0;
pWFit->GetAt(KEY_RUNTIME, nFitType);
WFlangeBom *pFlangeBom = NULL;
WFlxJoinBom* pFlxJnBom = NULL;
WGasket *pWGasket = NULL;
WBolt *pWBolt = NULL;
WNut *pWNut = NULL;
//接口法兰结构
CStringArray arVals;
AcArray<AecInterface> arInfs;
pWFit->GetInterface(arInfs);
for (int i = 0; i < arInfs.length(); i++)
{
AecInterface &inf = arInfs.at(i);
dDN = inf.dSize1;
//法兰实体只统计一次
if (nFitType == eFlange && i > 0)
{
break;
}
//法兰
//端面三者其一
pWFit->GetAt(PIPE_FLANGF, sEndF);
pWFit->GetAt(PIPE_FLANGF1,sEndF);
pWFit->GetAt(PIPE_FLANGF2,sEndF);
if (sEndF.Find(_T("RF")) != -1)
sEndF = _T("RF");
if (sEndF.Find(_T("BE")) != -1)
sEndF = _T("BE");
if (sEndF.Find(_T("FM")) != -1)
sEndF = _T("FM");
if (sEndF.Find(_T("FF")) != -1)
sEndF = _T("FF");
if (sEndF.Find(_T("RJ")) != -1)
sEndF = _T("RJ");
if (sEndF.Find(_T("SC")) != -1)
sEndF = _T("SC");
if (sEndF.Find(_T("BW")) != -1)
sEndF = _T("BW");
if (sEndF.Find(_T("SW")) != -1)
sEndF = _T("SW");
if (sEndF.Find(_T("FT")) != -1)
sEndF = _T("FT");
if (sEndF.Find(_T("PE")) != -1)
sEndF = _T("PE");
//法兰 DN100-PN1.6 RF GB/T9116.1-2000
sText.Format(_T("法兰 DN%d-PN%.1f %s"), (int)(dDN + 0.5), dPress, sEndF);
sText.TrimRight(_T(' '));
pFlangeBom = NULL;
if (!m_mapWFlangeBom.Lookup(sText, (void *&)pFlangeBom))
{
pFlangeBom = new WFlangeBom;
memset(pFlangeBom, 0, sizeof(WFlangeBom));
pFlangeBom->nDn = (short)(dDN + 0.5);
pFlangeBom->nCount = 1;
pFlangeBom->dWD = dWD;
pFlangeBom->dWh = dWh;
_tcscpy(pFlangeBom->szMertial, sMaterFt);
_tcscpy(pFlangeBom->szSN, sSn);
_tcscpy(pFlangeBom->szLevel, sLevel);
_tcscpy(pFlangeBom->szSys, sSys);
_tcscpy(pFlangeBom->szDescr, sText);
m_mapWFlangeBom.SetAt(sText, pFlangeBom);
m_vtWFlangeBomPtrs.push_back(pFlangeBom);
}
else
{
pFlangeBom->nCount += 1;
}
// 这里有一个真假法兰的问题
// 如果是法兰管线,则没有法兰实体,不需要记录实体信息
// 如果是其他情况,有法兰实体
if (nFitType == eFlange)
addEntHandle(pWFit, pFlangeBom);
//垫片
sKey.Format(_T("%s%d"), PIPE_GASKETINF, i);
if (pWFit->GetAt(sKey, sGasketInf) ||
pWFit->GetAt(PIPE_GASKET, sGasketInf) )
{
//公称直径#材质#压力]#垫片厚度#描述
arVals.RemoveAll();
CoreTools::SplitStrintToArray(sGasketInf, arVals, _T('#'));
if (arVals.GetSize() == 1)
{
//NAS/1.0/3.0/NAS,NAS,HG/T 20606
CoreTools::SplitStrintToArray(sGasketInf, arVals, _T(','));
if (arVals.GetSize() > 0)
{
//NAS/1.0/3.0/NAS
//arVals.GetAt(0);
sStd = arVals.GetAt(arVals.GetSize() - 1);
CStringArray arFs;
CoreTools::SplitStrintToArray(arVals.GetAt(0), arFs, _T('/'));
if (arFs.GetSize() > 2)
{
//公称直径#材质#压力#垫片厚度
sText.Format(_T("垫片 %d %s "), (short)(dDN + 0.5), arVals.GetAt(0));
pWGasket = NULL;
if (!m_mapWGasketBom.Lookup(sText, (void *&)pWGasket))
{
pWGasket = new WGasket;
pWGasket->pszArHandles = NULL;
memset(pWGasket, 0, sizeof(WGasket));
pWGasket->nDn = (short)(dDN + 0.5);
pWGasket->dt = _ttof(arVals.GetAt(3));
pWGasket->nCount = 1;
_tcscpy(pWGasket->szMertial, sMater);
_tcscpy(pWGasket->szSys, sSys);
_tcscpy(pWGasket->szLevel, sLevel);
_tcscpy(pWGasket->szDescr, sText);
m_mapWGasketBom.SetAt(sText, pWGasket);
m_vtWGasketBomPtrs.push_back(pWGasket);
}
else
{
pWGasket->nCount += 1;
}
}
}
arVals.RemoveAll();
}
if (arVals.GetCount() >= 5)
{
sSpec = arVals.GetAt(4);
sMater = arVals.GetAt(1);
sRem = arVals.GetAt(4);
//公称直径#材质#压力#垫片厚度
sText.Format(_T("垫片 %s %s %s %s"), arVals.GetAt(0), arVals.GetAt(1), arVals.GetAt(2), arVals.GetAt(3));
pWGasket = NULL;
if (!m_mapWGasketBom.Lookup(sText, (void *&)pWGasket))
{
pWGasket = new WGasket;
pWGasket->pszArHandles = NULL;
memset(pWGasket, 0, sizeof(WGasket));
pWGasket->nDn = (short)(dDN + 0.5);
pWGasket->dt = _ttof(arVals.GetAt(3));
pWGasket->nCount = 1;
_tcscpy(pWGasket->szMertial, sMater);
_tcscpy(pWGasket->szSys, sSys);
_tcscpy(pWGasket->szLevel, sLevel);
_tcscpy(pWGasket->szDescr, sText);
m_mapWGasketBom.SetAt(sText, pWGasket);
m_vtWGasketBomPtrs.push_back(pWGasket);
}
else
{
pWGasket->nCount += 1;
}
}
else
{
double dPre = 1.0, dGst = 0;
sMater = _T("");
pWFit->GetAt(PIPE_GASKETM, sMater);
pWFit->GetAt(PIPE_PRESSURE, dPre);
pWFit->GetAt(PIPE_GASKET, dGst);
pWFit->GetAt(PIPE_GASKETDSC, sRem);
if (!sMater.IsEmpty())
{
//公称直径#材质#压力#垫片厚度
sText.Format(_T("垫片 %d %s %.1f %.1f"), int(0.5 + dDN), sMater, dPre, dGst);
pWGasket = NULL;
if (!m_mapWGasketBom.Lookup(sText, (void *&)pWGasket))
{
pWGasket = new WGasket;
pWGasket->pszArHandles = NULL;
memset(pWGasket, 0, sizeof(WGasket));
pWGasket->nDn = (short)(dDN + 0.5);
pWGasket->dt = dGst;
pWGasket->nCount = 1;
_tcscpy(pWGasket->szMertial, sMater);
_tcscpy(pWGasket->szSys, sSys);
_tcscpy(pWGasket->szLevel, sLevel);
_tcscpy(pWGasket->szDescr, sText);
m_mapWGasketBom.SetAt(sText, pWGasket);
m_vtWGasketBomPtrs.push_back(pWGasket);
}
else
{
pWGasket->nCount += 1;
}
}
}
}
//螺栓
sKey.Format(_T("%s%d"), PIPE_BOLTINF, i);
if (pWFit->GetAt(sKey, sBoltInfs))
{
//[类型],[材质],[标准号],[描述],螺栓规格,螺栓长度,数量
arVals.RemoveAll();
CoreTools::SplitStrintToArray(sBoltInfs, arVals, _T('#'));
if (arVals.GetSize() >= 7)
{
//专用级双头螺柱 35CrMoA M20x105
sText.Format(_T("螺柱 %s %s %sx%s"), arVals.GetAt(0), arVals.GetAt(1), arVals.GetAt(4), arVals.GetAt(5));
sSpec = arVals.GetAt(3);
sMat = arVals.GetAt(1);
sRem = arVals.GetAt(3);
nCountAdd = _ttoi(arVals.GetAt(6));
pWBolt = NULL;
if (!m_mapWBoltBom.Lookup(sText, (void *&)pWBolt))
{
pWBolt = new WBolt;
pWBolt->pszArHandles = NULL;
pWBolt->nCount = nCountAdd;
_tcscpy(pWBolt->szType, arVals.GetAt(0));
_tcscpy(pWBolt->szSpec, arVals.GetAt(4));
_tcscpy(pWBolt->szMertial, arVals.GetAt(1));
_tcscpy(pWBolt->szLevel, sLevel);
_tcscpy(pWBolt->szSys, sSys);
_tcscpy(pWBolt->szDescr, arVals.GetAt(3));
pWBolt->pszArHandles = NULL;
m_mapWBoltBom.SetAt(sText, pWBolt);
m_vtWBoltBomPtrs.push_back(pWBolt);
}
else
{
pWBolt->nCount += nCountAdd;
}
//螺母 5CrMoA M20
sText.Format(_T("%s螺母 %s %s"), arVals.GetAt(0), arVals.GetAt(1), arVals.GetAt(4));
pWNut = NULL;
if (!m_mapWNutBom.Lookup(sText, (void *&)pWNut))
{
pWNut = new WNut;
memset(pWNut, 0, sizeof(WNut));
pWNut->nCount = nCountAdd;
sType.Format(_T("%s螺母"), arVals.GetAt(0));
_tcscpy(pWNut->szType, sType);
_tcscpy(pWNut->szSpec, arVals.GetAt(4));//M20
_tcscpy(pWNut->szMertial, arVals.GetAt(1));
_tcscpy(pWNut->szLevel, sLevel);
_tcscpy(pWNut->szSys, sSys);
_tcscpy(pWNut->szDescr, sText);
m_mapWNutBom.SetAt(sText, pWNut);
m_vtWNutBomPtrs.push_back(pWNut);
}
else
{
pWNut->nCount += nCountAdd;
}
}
}
}
}
/*
#define PRONO_GRP _T("PRONO")
#define DWGNO_GRP _T("DWGNO")
#define PAGENO_GRP _T("PAGENO")
#define TOTALNO_GRP _T("TOTALNO")
#define LINEPRE_GRP _T("LINE")
*/
static void FindGroup(AcDbDatabase* pDb,LPCTSTR pszLineGrp,AcDbObjectId& idGrp)
{
AcDbDictionary* pDict = NULL;
if ( Acad::eOk == pDb->getGroupDictionary(pDict,AcDb::kForRead ))
{
CString sName;
AcDbGroup* pGrp = NULL;
AcDbDictionaryIterator* pIt = pDict->newIterator();
for (;!pIt->done();pIt->next())
{
if ( Acad::eOk == pIt->getObject((AcDbObject*&)pGrp,AcDb::kForRead) )
{
sName = pGrp->name();
if (sName.CompareNoCase(pszLineGrp) == 0)
{
idGrp = pGrp->objectId();
pGrp->close();
break;
}
pGrp->close();
}
}
delete pIt;
pDict->close();
}
}
static void FindGroupEntities(AcDbObjectId& idGroup,AcDbObjectIdArray& arIds)
{
AcDbGroup* pGroup = NULL;
if (Acad::eOk == acdbOpenObject(pGroup,idGroup,AcDb::kForRead) )
{
AcDbGroupIterator* pIter = pGroup->newIterator();
for(;!pIter->done();pIter->next())
{
arIds.append(pIter->objectId());
}
delete pIter;
pGroup->close();
}
}
static void ReplaceText(AcDbDatabase* pDb,LPCTSTR pszText,LPCTSTR pszGrpname)
{
AcDbObjectId idGrp;
FindGroup(pDb,pszGrpname,idGrp);
AcDbObjectIdArray arIds;
FindGroupEntities(idGrp,arIds);
if (arIds.length() > 0)
{
AcDbEntity* pEnt = NULL;
if (Acad::eOk == acdbOpenAcDbEntity(pEnt,arIds.first(),AcDb::kForWrite))
{
AcDbText* pText = AcDbText::cast(pEnt);
if (pText != NULL)
{
pText->setTextString(pszText);
}
pEnt->close();
}
}
}
extern void SetFitText(CString &sTemp, LPCTSTR pszTxt, AcDbText *pText);
void CBomReportDlg::OnBnClickedOk()
{
//写入DWG模板,或者EXCEL 模板
if (!UpdateData()) return;
ShowWindow(SW_HIDE);
/*
m_wndBomList.InsertColumn(0,_T("序号"),LVCFMT_LEFT,80,80);
m_wndBomList.InsertColumn(1,_T("名称"),LVCFMT_LEFT,160,160);
m_wndBomList.InsertColumn(2,_T("规格"),LVCFMT_LEFT,200,200);
m_wndBomList.InsertColumn(3,_T("单位"),LVCFMT_LEFT,60,60);
m_wndBomList.InsertColumn(4,_T("数量"),LVCFMT_LEFT,80,80);
m_wndBomList.InsertColumn(6,_T("材料"),LVCFMT_LEFT,120,120);
m_wndBomList.InsertColumn(6,_T("备注"),LVCFMT_LEFT,120,120);
*/
DwgBomWrite();
OnOK();
delete this;
}
void CBomReportDlg::DwgBomWrite()
{
AcAxDocLock lock;
//文档锁定
AcApDocument *pDoc = acDocManager->curDocument();
TCHAR szBomDwg[MAX_PATH];
CFileFind find;
if (!find.FindFile(m_sBomDwg))
{
AfxMessageBox(_T("系统没有找到报表模板wbom.dwg文件!请检查软件是否正确安装!"));
return;
}
_tcscpy(szBomDwg, m_sBomDwg);
TCHAR szBomXlsIni[MAX_PATH];
CString sBomXlsIni;
sBomXlsIni.Format(_T("%s\\%s"), FilePath::GetSysDir(), m_sReportIni);
if (!find.FindFile(sBomXlsIni))
{
AfxMessageBox(_T("系统没有找到报表模板配置BOMReport.ini文件!请检查软件是否正确安装!"));
return;
}
_tcscpy(szBomXlsIni, (LPCTSTR)sBomXlsIni);
::WritePrivateProfileString(_T("FILE"), _T("DwgTmpl"), szBomDwg, szBomXlsIni);
//清理一下wbom*** 的块
AcDbBlockTable *pTable = NULL;
pDoc->database()->getBlockTable(pTable, AcDb::kForRead);
if (pTable != NULL)
{
AcDbBlockTableIterator *pIt = NULL;
pTable->newIterator(pIt);
AcDbObjectIdArray arIds1;
if (pIt != NULL)
{
AcDbObjectId idRec;
for (pIt->start(); !pIt->done(); pIt->step())
{
pIt->getRecordId(idRec);
arIds1.append(idRec);
}
}
CString sName;
AcDbObjectIdArray ids;
AcDbBlockTableRecord *pRec = NULL;
for (int j = 0; j < arIds1.length(); j++)
{
if (Acad::eOk == acdbOpenAcDbObject((AcDbObject *&)pRec, arIds1.at(j), AcDb::kForWrite))
{
ids.setLogicalLength(0);
ids.append(arIds1.at(j));
LPCTSTR pName = NULL;
pRec->getName(pName);
sName = pName;
if (sName.Find(_T("WBOM")) != -1)
{
Adesk::UInt32 nCountX[2];
memset(nCountX, 0, sizeof(nCountX));
pDoc->database()->countHardReferences(ids, nCountX);
if (nCountX[0] == 0)
{
pRec->erase();
}
}
pRec->close();
}
}
pTable->close();
}
//列名对应位置
HDITEM hItem;
hItem.mask = HDI_TEXT;
TCHAR szBuffer[65];//
hItem.pszText = szBuffer;
hItem.cchTextMax = MAX_PATH;
CMap<CString, LPCTSTR, int, int> mapNameToColPos;
for (int k = 0; k < m_wndBomList.GetHeaderCtrl()->GetItemCount(); k++)
{
m_wndBomList.GetHeaderCtrl()->GetItem(k, &hItem);
mapNameToColPos.SetAt(szBuffer, k);
}
//请选择插入基点
ads_point pt;
int nRes = acedGetPoint(NULL, _T("请选择材料报表的插入点:"), pt);
if (nRes != RTNORM)
{
ShowWindow(SW_SHOW);
return;
}
acdbUcs2Wcs(pt, pt, false);
AcGePoint3d ptIns = asPnt3d(pt);
double dScale = PipelineTools::getPScale();
AcGeScale3d gscale(dScale, dScale, dScale);
AcDbObjectId idBlk, idGrp, id;
AcDbObjectIdArray arIds;
AcDbEntity *pEnt = NULL;
CString sPageno, sTotalno, sNoT;
CString sBomBlkName, sTime, sGroup, sLineGrp, sText, sNo, sTemp;
bool bSetNull = false;
int nIndex = 0, nSubItem = 0;
int nCount = m_wndBomList.GetItemCount();
int nLoop = nCount / 27;
int nMode = nCount % 27;
if (nMode > 0) nLoop += 1;
sTotalno.Format(_T("%d"), nLoop);
for (int i = 0; i < nLoop; i++) //一共27行每页
{
CTime t1 = CTime::GetCurrentTime();
sTime = t1.Format(_T("%y-%m-%d-%H-%M"));
sBomBlkName.Format(_T("WBOM%s%d"), sTime, i);
sPageno.Format(_T("%d"), i + 1);
AcDbDatabase db(Adesk::kFalse);
if (Acad::eOk == db.readDwgFile(szBomDwg))
{
//第页
ReplaceText(&db, sPageno, PAGENO_GRP);
//总页
ReplaceText(&db, sTotalno, TOTALNO_GRP);
//工程号
ReplaceText(&db, m_sProno, PRONO_GRP);
//图号
ReplaceText(&db, m_sDwgno, DWGNO_GRP);
//明细
for (int ii = 0; ii < 27; ii++)
{
nIndex = i * 27 + ii;
if (nIndex > nCount)
{
bSetNull = true;
}
sNo.Format(_T("%d"), nIndex + 1);
sLineGrp.Format(_T("%s%d"), LINEPRE_GRP, ii);
FindGroup(&db, sLineGrp, idGrp);
arIds.setLogicalLength(0);
FindGroupEntities(idGrp, arIds);
for (int jj = 0; jj < arIds.length(); jj++)
{
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, arIds.at(jj), AcDb::kForWrite))
{
AcDbText *pText = AcDbText::cast(pEnt);
if (pText != NULL)
{
#if ARX < 17
LPCTSTR pszTxt = pText->textString();
#else
LPCTSTR pszTxt = pText->textStringConst();
#endif
LPCTSTR pszStyle = _T("Standard");
AcDbTextStyleTableRecord *pRec = NULL;
if (Acad::eOk == acdbOpenObject((AcDbObject *&)pRec, pText->textStyle(), AcDb::kForRead))
{
pRec->getName(pszStyle);
pRec->close();
}
sText = pszTxt;
sText.TrimLeft();
sText.TrimRight();
//序号 名称 规格 单位 数量 材质 备注
// 0 1 2 3 4 5 6
sNoT.Format(_T("%d"), ii);
if (sText.CompareNoCase(sNoT) == 0) //序号
{
//sNo.Format(_T("%d"),nIndex + 1);
pText->setTextString(bSetNull ? _T(" ") : (LPCTSTR)sNo);
}
else if (sText.CompareNoCase(NAME_CELL) == 0) //名称
{
nSubItem = 1;
mapNameToColPos.Lookup(_T("名称"), nSubItem);
if (!bSetNull)
{
sTemp = m_wndBomList.GetItemText(nIndex, nSubItem);
SetFitText(sTemp, pszTxt, pText);
}
else
{
pText->setTextString(_T(" "));
}
}
else if (sText.CompareNoCase(SPEC_CELL) == 0)//规格
{
nSubItem = 2;
mapNameToColPos.Lookup(_T("规格"), nSubItem);
if (!bSetNull)
{
sTemp = m_wndBomList.GetItemText(nIndex, nSubItem);
SetFitText(sTemp, pszTxt, pText);
}
else
{
pText->setTextString(_T(" "));
}
}
else if (sText.CompareNoCase(UNIT_CELL) == 0) //单位
{
nSubItem = 3;
mapNameToColPos.Lookup(_T("单位"), nSubItem);
if (!bSetNull)
{
sTemp = m_wndBomList.GetItemText(nIndex, nSubItem);
SetFitText(sTemp, pszTxt, pText);
}
else
{
pText->setTextString(_T(" "));
}
}
else if (sText.CompareNoCase(COUNT_CELL) == 0)//数量
{
nSubItem = 4;
mapNameToColPos.Lookup(_T("数量"), nSubItem);
if (!bSetNull)
{
sTemp = m_wndBomList.GetItemText(nIndex, nSubItem);
pText->setTextString(sTemp);
}
else
{
pText->setTextString(_T(" "));
}
}
else if (sText.CompareNoCase(MATERIAL_CELL) == 0) //材料
{
nSubItem = 5;
mapNameToColPos.Lookup(_T("材料"), nSubItem);
if (!bSetNull)
{
sTemp = m_wndBomList.GetItemText(nIndex, nSubItem);
pText->setTextString(sTemp);
}
else
{
pText->setTextString(_T(" "));
}
}
else if (sText.CompareNoCase(REM_CELL) == 0) //备注
{
nSubItem = 6;
mapNameToColPos.Lookup(_T("备注"), nSubItem);
if (!bSetNull)
{
sTemp = m_wndBomList.GetItemText(nIndex, nSubItem);
pText->setTextString(sTemp);
}
else
{
pText->setTextString(_T(" "));
}
}
else if (sText.CompareNoCase(WEIGHT_CELL) == 0) //单重
{
pText->setTextString(_T(" "));
}
else if (sText.CompareNoCase(TWEIGHT_CELL) == 0) //总重
{
pText->setTextString(_T(" "));
}
else
{
//...
}
}
pEnt->close();
}
}
}
}
//插入;
db.setInsbase(AcGePoint3d::kOrigin);
if (acdbCurDwg()->insert(idBlk, sBomBlkName, &db) == Acad::eOk)
{
AcDbBlockTableRecord *pRec = NULL;
if (Acad::eOk == acdbOpenAcDbObject((AcDbObject *&)pRec, idBlk, AcDb::kForWrite))
{
pRec->setOrigin(AcGePoint3d::kOrigin);
pRec->close();
}
//然后放大倍数
AcDbBlockReference *pRef = new AcDbBlockReference;
pRef->setScaleFactors(gscale);
pRef->setPosition(ptIns);
pRef->setBlockTableRecord(idBlk);
CoreTools::AddToModelSpace(pRef);
//平移动一下
ptIns += PipelineTools::getPScale() * 250.0 * AcGeVector3d::kXAxis;
}
else
acutPrintf(_T("\n插入块失败!"));
}
}
void CBomReportDlg::OnBnClickedCancel()
{
EndDialog(IDCANCEL);
delete this;
}
void CBomReportDlg::OnDestroy()
{
CDialog::OnDestroy();
FreeBomBuffer();
}
void CBomReportDlg::FreeBomBuffer()
{
//PIPE
PipeBom* pPipe = NULL;
typedef std::vector<PipeBom*>::iterator PBomIT;
for(PBomIT it1 = m_vtPipeBomPtrs.begin();it1 != m_vtPipeBomPtrs.end();it1++)
{
pPipe = (*it1);
DELETE_PTR(pPipe->pszArHandles);
delete pPipe;
}
m_vtPipeBomPtrs.clear();
m_mapPipeBom.RemoveAll();
//Elbow
ElbowBom* pElbow = NULL;
typedef std::vector<ElbowBom*>::iterator EBomIT;
for(EBomIT it2 = m_vtElbowBomPtrs.begin();it2 != m_vtElbowBomPtrs.end();it2++)
{
pElbow = (*it2);
DELETE_PTR(pElbow->pszArHandles);
delete pElbow;
}
m_vtElbowBomPtrs.clear();
m_mapElbowBom.RemoveAll();
//Reducer
ReducerBom* pReducer = NULL;
typedef std::vector<ReducerBom*>::iterator RBomIT;
for (RBomIT it3 = m_vtReducerBomPtrs.begin();it3 != m_vtReducerBomPtrs.end();it3++)
{
pReducer = (*it3);
DELETE_PTR(pReducer->pszArHandles);
delete pReducer;
}
m_vtReducerBomPtrs.clear();
m_mapReducerBom.RemoveAll();
//Tee
TeeBom* pTee = NULL;
typedef std::vector<TeeBom*>::iterator TBomIT;
for(TBomIT it4 = m_vtTeeBomPtrs.begin();it4 != m_vtTeeBomPtrs.end();it4++)
{
pTee = (*it4);
DELETE_PTR(pTee->pszArHandles);
delete pTee;
}
m_vtTeeBomPtrs.clear();
m_mapTeeBom.RemoveAll();
//LTee
LTeeBom* pLTee = NULL;
typedef std::vector<LTeeBom*>::iterator LTBomIT;
for(LTBomIT it5 = m_vtLTeeBomPtrs.begin();it5 != m_vtLTeeBomPtrs.end();it5++)
{
pLTee = (*it5);
DELETE_PTR(pLTee->pszArHandles);
delete pLTee;
}
m_vtLTeeBomPtrs.clear();
m_mapLTeeBom.RemoveAll();
//WYE
WyeBom* pWye = NULL;
typedef std::vector<WyeBom*>::iterator WyBomIT;
for(WyBomIT it6 = m_vtWyeBomPtrs.begin();it6 != m_vtWyeBomPtrs.end();it6++)
{
pWye = (*it6);
DELETE_PTR(pWye->pszArHandles);
delete pWye;
}
m_vtWyeBomPtrs.clear();
m_mapWyeBom.RemoveAll();
//Cross
CrossBom* pCross = NULL;
typedef std::vector<CrossBom*>::iterator CBomIT;
for (CBomIT it7 = m_vtCrossBomPtrs.begin();it7 != m_vtCrossBomPtrs.end();it7++)
{
pCross = (*it7);
DELETE_PTR(pCross->pszArHandles);
delete pCross;
}
m_vtCrossBomPtrs.clear();
m_mapCrossBom.RemoveAll();
//WCap
WCapBom* pWcap = NULL;
typedef std::vector<WCapBom*>::iterator WCBomIT;
for(WCBomIT it8 = m_vtWCapBomPtrs.begin();it8 != m_vtWCapBomPtrs.end();it8++)
{
//pWcap = m_vtWCapBomPtrs[i];
pWcap = (*it8);
DELETE_PTR(pWcap->pszArHandles);
delete pWcap;
}
m_vtWCapBomPtrs.clear();
m_mapWCapBom.RemoveAll();
WThroughBom* pThrough = NULL;
typedef std::vector< WThroughBom*>::iterator WThroughBomIT;
for (WThroughBomIT it81 = m_vtWThroughBomPtrs.begin(); it81 != m_vtWThroughBomPtrs.end(); it81++)
{
pThrough = (*it81);
DELETE_PTR(pThrough->pszArHandles);
delete pThrough;
}
m_mapWThroughBoms.RemoveAll(); m_vtWThroughBomPtrs.clear();
WUJoinBom* pWUJoin = NULL;
typedef std::vector< WUJoinBom*>::iterator WUJoinBomIT;
for (WUJoinBomIT it82 = m_vtWUJoinBomPtrs.begin(); it82 != m_vtWUJoinBomPtrs.end(); it82++)
{
pWUJoin = (*it82);
DELETE_PTR(pWUJoin->pszArHandles);
delete pWUJoin;
}
m_vtWUJoinBomPtrs.clear(); m_mapWUJoinBoms.RemoveAll();
WRJoinBom* pRJoinBom = NULL;
typedef std::vector< WRJoinBom*>::iterator WRJoinBomIT;
for (WRJoinBomIT it83 = m_vtWRJoinBomPtrs.begin(); it83 != m_vtWRJoinBomPtrs.end(); it83++)
{
pRJoinBom = (*it83);
DELETE_PTR(pRJoinBom->pszArHandles);
delete pRJoinBom;
}
m_vtWRJoinBomPtrs.clear(); m_mapWRJoinBoms.RemoveAll();
WOJoinBom* pOJoinBom = NULL;
typedef std::vector< WOJoinBom*>::iterator WOJoinBomIT;
for (WOJoinBomIT it84 = m_vtWOJoinBomPtrs.begin(); it84 != m_vtWOJoinBomPtrs.end(); it84++)
{
pOJoinBom = (*it84);
DELETE_PTR(pOJoinBom->pszArHandles);
delete pOJoinBom;
}
m_vtWOJoinBomPtrs.clear(); m_mapWOJoinBoms.RemoveAll();
WIJoinBom* pWIJoinBom = NULL;
typedef std::vector< WIJoinBom*>::iterator WIJoinBomIT;
for (WOJoinBomIT it85 = m_vtWIJoinBomPtrs.begin(); it85 != m_vtWIJoinBomPtrs.end(); it85++)
{
pWIJoinBom = (*it85);
DELETE_PTR(pWIJoinBom->pszArHandles);
delete pWIJoinBom;
}
m_vtWIJoinBomPtrs.clear(); m_mapWIJoinBoms.RemoveAll();
//Flange
WFlangeBom* pFlangeBom = NULL;
typedef std::vector<WFlangeBom*>::iterator WFlangeBomIT;
//for (int i = 0;i <m_vtWFlangeBomPtrs.size();i++)
for(WFlangeBomIT it9 = m_vtWFlangeBomPtrs.begin();it9 != m_vtWFlangeBomPtrs.end();it9++)
{
pFlangeBom = (*it9);
DELETE_PTR(pFlangeBom->pszArHandles);
delete pFlangeBom;
}
WFlxJoinBom *pFlxJoinBom = NULL;
typedef std::vector<WFlxJoinBom *>::iterator WFlxJoinBomIT;
//for (int i = 0;i <m_vtWFlangeBomPtrs.size();i++)
for (WFlxJoinBomIT it99 = m_vtWFlxJoinBomPtrs.begin(); it99 != m_vtWFlxJoinBomPtrs.end(); it99++)
{
pFlxJoinBom = (*it99);
DELETE_PTR(pFlxJoinBom->pszArHandles);
delete pFlxJoinBom;
}
m_vtWFlxJoinBomPtrs.clear();
m_vtWFlangeBomPtrs.clear();
m_mapWFlangeBom.RemoveAll();
//设备
m_mapName2Count.RemoveAll();
//角钢
AngSteelBom* pASteelBom = NULL;
typedef std::vector<AngSteelBom*>::iterator AngSteelBomIT;
for (AngSteelBomIT it10 = m_vtAngSteelBomPtrs.begin();it10 != m_vtAngSteelBomPtrs.end();it10++)
{
pASteelBom = (*it10);
DELETE_PTR(pASteelBom->pszArHandles);
delete pASteelBom;
}
m_vtAngSteelBomPtrs.clear();
m_mapAngSteelBom.RemoveAll();
//护栏
GuarBarBom* pGBarBom = NULL;
typedef std::vector<GuarBarBom*>::iterator GuarBarBomIT;
for (GuarBarBomIT it11 = m_vtGuarBarBomPtrs.begin();it11 != m_vtGuarBarBomPtrs.end();it11++)
{
pGBarBom = (*it11);
DELETE_PTR(pGBarBom->pszArHandles);
delete pGBarBom;
}
m_vtGuarBarBomPtrs.clear();
m_mapGuarBarBom.RemoveAll();
//爬梯
ClimbStairBom* pClimbStairBom = NULL;
typedef std::vector<ClimbStairBom*>::iterator ClimbStairBomIT;
for (ClimbStairBomIT it12 = m_vtClimbStairBomPtrs.begin();it12 != m_vtClimbStairBomPtrs.end();it12++)
{
pClimbStairBom = (*it12);
DELETE_PTR(pClimbStairBom->pszArHandles);
delete pClimbStairBom;
}
m_vtClimbStairBomPtrs.clear();
m_mapClimbStairBom.RemoveAll();
//直梯,弧梯
LineStairBom* pLineStairBom = NULL;
typedef std::vector<LineStairBom*>::iterator LineStairBomIT;
for (LineStairBomIT it13 = m_vtLineStairBomPtrs.begin();it13 != m_vtLineStairBomPtrs.end();it13++)
{
pLineStairBom = (*it13);
DELETE_PTR(pLineStairBom->pszArHandles);
delete pLineStairBom;
}
m_vtLineStairBomPtrs.clear();
m_mapLineStairBom.RemoveAll();
//门窗
OpeningBom* pOpeningBom = NULL;
typedef std::vector<OpeningBom*>::iterator OpeningBomIT;
for (OpeningBomIT it14 = m_vtOpeningBomPtrs.begin();it14 != m_vtOpeningBomPtrs.end();it14++)
{
pOpeningBom = (*it14);
DELETE_PTR(pOpeningBom->pszArHandles);
delete pOpeningBom;
}
m_vtOpeningBomPtrs.clear();
m_mapOpeningBom.RemoveAll();
//...
}
static bool SortPipeBom(PipeBom* pPipe1,PipeBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortElbowBom(ElbowBom* pPipe1,ElbowBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortRElbowBom(RElbowBom* pPipe1,RElbowBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortReducerBom(ReducerBom* pPipe1,ReducerBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortTeeBom(TeeBom* pPipe1,TeeBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortLTeeBom(LTeeBom* pPipe1,LTeeBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortWyeBom(WyeBom* pPipe1,WyeBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortCrossBom(CrossBom* pPipe1,CrossBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortWCapBom(WCapBom* pPipe1,WCapBom* pPipe2)
{
if (pPipe1->nDn <= pPipe2->nDn && pPipe1->nBomSN < pPipe2->nBomSN)
{
return true;
}
return false;
}
static bool SortFlangeBom(WFlangeBom* pBom1,WFlangeBom* pBom2)
{
if (pBom1->nDn <= pBom2->nDn && pBom1->nBomSN < pBom1->nBomSN)
{
return true;
}
return false;
}
static bool SortGasketBom(WGasket* pBom1,WGasket* pBom2)
{
if (pBom1->nDn <= pBom2->nDn )
{
return true;
}
return false;
}
static bool SortDuctBom(DuctBom* pBom1,DuctBom* pBom2)
{
if (pBom1->dW <= pBom2->dW)
{
return true;
}
return false;
}
static bool SortHElbowBom(HElbowBom* pBom1,HElbowBom* pBom2)
{
if (pBom1->dSw <= pBom2->dSw)
{
return true;
}
return false;
}
static bool SortHTeeBom(HTeeBom* pBom1,HTeeBom* pBom2)
{
if (pBom1->dSw <= pBom2->dSw)
{
return true;
}
return false;
}
static bool SortHCrossBom(HCrossBom* pBom1,HCrossBom* pBom2)
{
if (pBom1->dSw <= pBom2->dSw)
{
return true;
}
return false;
}
static bool SortHOffsetBom(HOffsetBom* pBom1,HOffsetBom* pBom2)
{
if (pBom1->dSw <= pBom2->dSw)
{
return true;
}
return false;
}
static bool SortECabtryBom(ECabletryBom* pBom1,ECabletryBom* pBom2)
{
if (pBom1->dW <= pBom2->dW)
{
return true;
}
return false;
}
static bool SortECabFitBom(ECabFitBom* pBom1,ECabFitBom* pBom2)
{
if (pBom1->dW <= pBom2->dW)
{
return true;
}
return false;
}
static bool SortXGPipeBom(XGPipeBom* pBom1, XGPipeBom* pBom2)
{
if (pBom1->dOD <= pBom2->dOD)
{
return true;
}
return false;
}
static bool SortPVCFitBom(PVCFit* pBom1, PVCFit* pBom2)
{
if (pBom1->nD <= pBom2->nDn)
{
return true;
}
return false;
}
static bool SortRPBom(RPBom* pBom1, RPBom* pBom2)
{
if (pBom1->nDn <= pBom2->nDn)
{
return true;
}
return false;
}
static bool SortHPBom(HPBom* pBom1, HPBom* pBom2)
{
if (pBom1->nDn <= pBom2->nDn)
{
return true;
}
return false;
}
static bool SortSPBom(SPBBom* pBom1, SPBBom* pBom2)
{
if (pBom1->nDn <= pBom2->nDn)
{
return true;
}
return false;
}
static CString PipeWeight(double nD, double fThick, int nBomSN,double dLen)
{
double dAr = PI * (0.5 * nD * nD - 0.5 * (nD - 2.0 * fThick) * (nD - 2.0 * fThick));
double dV = dAr * dLen;
double dKgm = 7850.0;
if (nBomSN == 2)
dKgm = 7930.0;
else if (nBomSN == 3)//铜
dKgm = 7930.0;
else if (nBomSN == 4)
dKgm = 1380.0;
else if (nBomSN == 5)
dKgm = 2450.0;
//按钢密度 7850千克/立方米
double dW = dV * 1.e-9 * dKgm;
CString sW;
sW.Format(_T("%.2f"), dW);
return sW;
}
static CString FlangeWeight(double dWD, double dWh, int nBomSN, int nCount)
{
double dKgm = 7850.0;
if (nBomSN == 2)
dKgm = 7930.0;
else if (nBomSN == 3)//铜
dKgm = 7930.0;
else if (nBomSN == 4)
dKgm = 1380.0;
else if (nBomSN == 5)
dKgm = 2450.0;
double dAr = PI * (0.25 * dWD * dWD);
double dV = dAr * dWh * nCount;
//按钢密度 7850千克/立方米
double dW = dV * 1.e-9 * dKgm;
CString sW;
sW.Format(_T("%.2f"), dW);
return sW;
}
static CString ElbowWeight(double nD, double fThick, double dr,int nAngle, int nCount)
{
double dAr = PI * (0.5 * nD * nD - 0.5 * (nD - 2.0*fThick) * (nD - 2.0 * fThick));
double dLen = dr * nAngle * PI / 180.0;
double dV = dAr * dLen;
//按钢密度 7850千克/立方米
double dW = dV * 1.e-9 * 7850.0 * nCount;
CString sW;
sW.Format(_T("%.2f"), dW);
return sW;
}
static CString RElbowWeight(double nD, double nTD, double fThick, double dr, int nAngle, int nCount)
{
//V = (1/3)πh (R*R + R*r + r*r)
double dh = dr * nAngle * PI / 180.0;
double dV = 0.333 * PI * dh * (0.25 * nD * nD + 0.25 * nD * nTD + 0.25 * nTD * nTD);
double dW = dV * 1.e-9 * 7850.0 * nCount;
double dV2 = 0.333 * PI * dh * (0.25 * (nD- 2.0 * fThick) * (nD -2.0*fThick)+ 0.25 * (nD - 2.0 * fThick) * (nD - 2.0 * fThick) + 0.25 * (nTD-2.0*fThick) * (nTD - 2.0 * fThick));
double dW2 = dV2 * 1.e-9 * 7850.0 * nCount;
dW -= dW2;
CString sW;
sW.Format(_T("%.2f"), dW);
return sW;
}
static CString ReducerWeight(double nD, double nTD, double fThick, double nLen, int nCount)
{
double dh = nLen;
double dV = 0.333 * PI * dh * (0.25 * nD * nD + 0.25 * nD * nTD + 0.25 * nTD * nTD);
double dW = dV * 1.e-9 * 7850.0 * nCount;
double dV2 = 0.333 * PI * dh * (0.25 * (nD - 2.0 * fThick) * (nD - 2.0 * fThick) + 0.25 * (nD - 2.0 * fThick) * (nD - 2.0 * fThick) + 0.25 * (nTD - 2.0 * fThick) * (nTD - 2.0 * fThick));
double dW2 = dV2 * 1.e-9 * 7850.0 * nCount;
dW -= dW2;
CString sW;
sW.Format(_T("%.2f"), dW);
return sW;
}
static CString TeeWeight(double nD, double fThick, double dTD,double nL, double nL1, int nCount)
{
double dAr = PI * (0.5 * nD * nD - 0.5 * (nD - 2.0 * fThick) * (nD - 2.0 * fThick));
double dV = dAr * nL;
//按钢密度 7850千克/立方米
double dW1 = dV * 1.e-9 * 7850.0;
double dAr2 = PI * (0.5 * dTD * dTD - 0.5 * (dTD - 2.0 * fThick) * (dTD - 2.0 * fThick));
double dV2 = dAr2 * nL1;
//按钢密度 7850千克/立方米
double dW2 = dV2 * 1.e-9 * 7850.0;
dW1 += dW2;
CString sW;
sW.Format(_T("%.2f"), dW1);
return sW;
}
void CBomReportDlg::ShowtoReportlist()
{
std::sort(m_vtPipeBomPtrs.begin(),m_vtPipeBomPtrs.end(),SortPipeBom);
std::sort(m_vtElbowBomPtrs.begin(),m_vtElbowBomPtrs.end(),SortElbowBom);
std::sort(m_vtRElbowBomPtrs.begin(), m_vtRElbowBomPtrs.end(), SortRElbowBom);
std::sort(m_vtReducerBomPtrs.begin(),m_vtReducerBomPtrs.end(),SortReducerBom);
std::sort(m_vtTeeBomPtrs.begin(),m_vtTeeBomPtrs.end(),SortTeeBom);
std::sort(m_vtLTeeBomPtrs.begin(),m_vtLTeeBomPtrs.end(),SortLTeeBom);
std::sort(m_vtWyeBomPtrs.begin(),m_vtWyeBomPtrs.end(),SortWyeBom);
std::sort(m_vtCrossBomPtrs.begin(),m_vtCrossBomPtrs.end(),SortCrossBom);
std::sort(m_vtWCapBomPtrs.begin(),m_vtWCapBomPtrs.end(),SortWCapBom);
std::sort(m_vtWThroughBomPtrs.begin(), m_vtWThroughBomPtrs.end(), SortPVCFitBom);
std::sort(m_vtWUJoinBomPtrs.begin(), m_vtWUJoinBomPtrs.end(), SortPVCFitBom);
std::sort(m_vtWRJoinBomPtrs.begin(), m_vtWRJoinBomPtrs.end(), SortPVCFitBom);
std::sort(m_vtWOJoinBomPtrs.begin(), m_vtWOJoinBomPtrs.end(), SortPVCFitBom);
std::sort(m_vtWIJoinBomPtrs.begin(), m_vtWIJoinBomPtrs.end(), SortPVCFitBom);
std::sort(m_vtRPBomPtrs.begin(), m_vtRPBomPtrs.end(), SortRPBom);
std::sort(m_vtHPBomPtrs.begin(), m_vtHPBomPtrs.end(), SortHPBom);
std::sort(m_vtSPBomPtrs.begin(), m_vtSPBomPtrs.end(), SortSPBom);
std::sort(m_vtWFlangeBomPtrs.begin(),m_vtWFlangeBomPtrs.end(),SortFlangeBom);
std::sort(m_vtWFlxJoinBomPtrs.begin(), m_vtWFlxJoinBomPtrs.end(),SortFlangeBom);
std::sort(m_vtDuctBomPtrs.begin(),m_vtDuctBomPtrs.end(),SortDuctBom);
std::sort(m_vtHElbowBomPtrs.begin(),m_vtHElbowBomPtrs.end(),SortHElbowBom);
std::sort(m_vtHTeeBomPtrs.begin(),m_vtHTeeBomPtrs.end(),SortHTeeBom);
std::sort(m_vtHCrossBomPtrs.begin(),m_vtHCrossBomPtrs.end(),SortHCrossBom);
std::sort(m_vtHOffsetBomPtrs.begin(),m_vtHOffsetBomPtrs.end(),SortHOffsetBom);
std::sort(m_vtECabtryBomPtrs.begin(),m_vtECabtryBomPtrs.end(),SortECabtryBom);
std::sort(m_vtEElbowBomPtrs.begin(),m_vtEElbowBomPtrs.end(),SortECabFitBom);
std::sort(m_vtETeeBomPtrs.begin(),m_vtETeeBomPtrs.end(),SortECabFitBom);
std::sort(m_vtECrossBomPtrs.begin(),m_vtECrossBomPtrs.end(),SortECabFitBom);
std::sort(m_vtXGPipeBomPtrs.begin(), m_vtXGPipeBomPtrs.end(), SortXGPipeBom);
if (m_bBomSN)//按照材料的权重出表
{
return ShowtoReportlist2();
}
/*
m_wndBomList.InsertColumn(0,_T("序号"),LVCFMT_LEFT,80,80);
m_wndBomList.InsertColumn(1,_T("名称"),LVCFMT_LEFT,160,160);
m_wndBomList.InsertColumn(2,_T("规格"),LVCFMT_LEFT,200,200);
m_wndBomList.InsertColumn(3,_T("单位"),LVCFMT_LEFT,60,60);
m_wndBomList.InsertColumn(4,_T("数量"),LVCFMT_LEFT,80,80);
m_wndBomList.InsertColumn(5,_T("备注"),LVCFMT_LEFT,120,120);
*/
m_wndBomList.DeleteAllItems();
int nItem = 0;
CString sText,sTemp, sTemp1;
//PIPE
PipeBom* pPipe = NULL;
typedef std::vector<PipeBom*>::iterator PBomIT;
//for (int i = 0;i < m_vtPipeBomPtrs.size();i++)
for(PBomIT it1 = m_vtPipeBomPtrs.begin();it1 != m_vtPipeBomPtrs.end();it1++)
{
//pPipe = m_vtPipeBomPtrs[i];
pPipe = (*it1);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pPipe->szSN) > 0)
sText = pPipe->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("管");
sTemp = pPipe->szMertial;
sTemp.TrimRight();
if (sTemp.IsEmpty())
{
sText = _T("焊接钢管");
}
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("DN%d D%dx%.1f"),pPipe->nDn,pPipe->nD,pPipe->fThick);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%.3f"),pPipe->dLen);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pPipe->szMertial);
//
sTemp.Format(_T("%s %s"),pPipe->szLevel,pPipe->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pPipe->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pPipe->nD, pPipe->fThick, pPipe->nBomSN,1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pPipe->nD, pPipe->fThick, pPipe->nBomSN,pPipe->dLen*1000));
}
//Elbow
ElbowBom* pElbow = NULL;
typedef std::vector<ElbowBom*>::iterator EBomIT;
for(EBomIT it2 = m_vtElbowBomPtrs.begin();it2 != m_vtElbowBomPtrs.end();it2++)
//for (int i = 0;i < m_vtElbowBomPtrs.size();i++)
{
//pElbow = m_vtElbowBomPtrs[i];
pElbow = (*it2);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pElbow->szSN) > 0)
sText = pElbow->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("弯头");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("%d度弯头 DN%d"),pElbow->nAngle,pElbow->nDn);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pElbow->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pElbow->szMertial);
sTemp.Format(_T("%s %s %s"),pElbow->szLevel,pElbow->szSys,pElbow->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pElbow->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, ElbowWeight(pElbow->nD, pElbow->fThick, pElbow->nDn * pElbow->fRRatio,pElbow->nAngle,1) );//1
m_wndBomList.SetItemText(nItem, 8, ElbowWeight(pElbow->nD, pElbow->fThick, pElbow->nDn * pElbow->fRRatio,pElbow->nAngle,pElbow->nCount) );
}
//RElbow
RElbowBom *pRElbow = NULL;
typedef std::vector<RElbowBom *>::iterator REBomIT;
for (REBomIT it22 = m_vtRElbowBomPtrs.begin();it22 != m_vtRElbowBomPtrs.end();it22++)
{
pRElbow = *it22;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pRElbow->szSN) > 0)
sText = pRElbow->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("变径弯头");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%d度弯头 DN%dx%d %.1f"), pRElbow->nAngle, pRElbow->nDn,pRElbow->nTDn, pRElbow->fThick);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pRElbow->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pRElbow->szMertial);
sTemp.Format(_T("%s %s %s"), pRElbow->szLevel, pRElbow->szSys, pRElbow->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pRElbow->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, RElbowWeight(pRElbow->nD , pRElbow->nTD, pRElbow->fThick, pRElbow->nDn *pRElbow->fRRatio, pRElbow->nAngle, 1));//1
m_wndBomList.SetItemText(nItem, 8, RElbowWeight(pRElbow->nD , pRElbow->nTD, pRElbow->fThick, pRElbow->nDn *pRElbow->fRRatio, pRElbow->nAngle, pRElbow->nCount));
}
//Reducer
ReducerBom* pReducer = NULL;
typedef std::vector<ReducerBom*>::iterator RBomIT;
//for (int i = 0;i < m_vtReducerBomPtrs.size();i++)
for (RBomIT it3 = m_vtReducerBomPtrs.begin();it3 != m_vtReducerBomPtrs.end();it3++)
{
//pReducer = m_vtReducerBomPtrs[i];
pReducer = (*it3);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pReducer->szSN) > 0)
sText = pReducer->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
if (pReducer->nOffset)
{
//sText = pReducer->nOffset ? _T("偏心异径管") : _T("同心异径管");
sText.Format(_T("偏心异径管DN%dxDN%d"), __max(pReducer->nD, pReducer->nTD),__min(pReducer->nD, pReducer->nTD));
}
else
{
sText.Format(_T("同心异径管DN%dxDN%d"), __max(pReducer->nD, pReducer->nTD), __min(pReducer->nD, pReducer->nTD));
}
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f L=%d"),pReducer->nD,pReducer->fThick,pReducer->nTD,pReducer->fThick,pReducer->nLen);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pReducer->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pReducer->szMertial);
sTemp.Format(_T("%s %s %s"),pReducer->szLevel,pReducer->szSys,pReducer->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pReducer->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, ReducerWeight(pReducer->nD, pReducer->nTD, pReducer->fThick, pReducer->nLen,1));//1
m_wndBomList.SetItemText(nItem, 8, ReducerWeight(pReducer->nD, pReducer->nTD, pReducer->fThick, pReducer->nLen, pReducer->nCount));
}
//Tee
TeeBom* pTee = NULL;
typedef std::vector<TeeBom*>::iterator TBomIT;
//for (int i = 0;i < m_vtTeeBomPtrs.size();i++)
for(TBomIT it4 = m_vtTeeBomPtrs.begin();it4 != m_vtTeeBomPtrs.end();it4++)
{
//pTee = m_vtTeeBomPtrs[i];
pTee = (*it4);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pTee->szSN) > 0)
sText = pTee->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("三通");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f L=%d L2=%d B=%d"),pTee->nD,pTee->fThick,pTee->nTD,pTee->fThick,pTee->nL, pTee->nL1,pTee->nB);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pTee->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pTee->szMertial);
sTemp.Format(_T("%s %s %s"),pTee->szLevel,pTee->szSys,pTee->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pTee->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, TeeWeight(pTee->nD, pTee->fThick, pTee->nTD,pTee->nL,pTee->nL1, 1));//1
m_wndBomList.SetItemText(nItem, 8, TeeWeight(pTee->nD, pTee->fThick, pTee->nTD,pTee->nL, pTee->nL1, pTee->nCount));
}
//LTee
LTeeBom* pLTee = NULL;
typedef std::vector<LTeeBom*>::iterator LTBomIT;
//for (int i = 0;i < m_vtLTeeBomPtrs.size();i++)
for(LTBomIT it5 = m_vtLTeeBomPtrs.begin();it5 != m_vtLTeeBomPtrs.end();it5++)
{
//pLTee = m_vtLTeeBomPtrs[i];
pLTee = (*it5);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pLTee->szSN) > 0)
sText = pLTee->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("L三通");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f E=%d M=%d B=%d"),pLTee->nD,
pLTee->fThick,
pLTee->nTD,
pLTee->fThick,
pLTee->nE,
pLTee->nM,
pLTee->nB);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pLTee->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pLTee->szMertial);
sTemp.Format(_T("%s %s %s"),pLTee->szLevel,pLTee->szSys,pLTee->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pLTee->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, TeeWeight(pLTee->nD, pLTee->fThick, pLTee->nTD,pLTee->nM + pLTee->nE, pLTee->nB, 1));//1
m_wndBomList.SetItemText(nItem, 8, TeeWeight(pLTee->nD, pLTee->fThick, pLTee->nTD,pLTee->nM + pLTee->nE, pLTee->nB, pLTee->nCount));
}
//WYE
WyeBom* pWye = NULL;
typedef std::vector<WyeBom*>::iterator WyBomIT;
//for (int i = 0;i < m_vtWyeBomPtrs.size();i++)
for(WyBomIT it6 = m_vtWyeBomPtrs.begin();it6 != m_vtWyeBomPtrs.end();it6++)
{
//pWye = m_vtWyeBomPtrs[i];
pWye = (*it6);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWye->szSN) > 0)
sText = pWye->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("Y三通");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f M=%d B=%d"),pWye->nD,
pWye->fThick,pWye->nTD,pWye->fThick,pWye->nM,pWye->nB);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pWye->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pWye->szMertial);
sTemp.Format(_T("%s %s %s"),pWye->szLevel,pWye->szSys,pWye->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pWye->pszArHandles);
}
//Cross
CrossBom* pCross = NULL;
typedef std::vector<CrossBom*>::iterator CBomIT;
//for (int i = 0;i < m_vtCrossBomPtrs.size();i++)
for (CBomIT it7 = m_vtCrossBomPtrs.begin();it7 != m_vtCrossBomPtrs.end();it7++)
{
//pCross = m_vtCrossBomPtrs[i];
pCross = (*it7);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pCross->szSN) > 0)
sText = pCross->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("四通");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f L=%d B=%d"),pCross->nD,pCross->fThick,pCross->nTD,pCross->fThick,pCross->nL,pCross->nB);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pCross->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pCross->szMertial);
sTemp.Format(_T("%s %s %s"),pCross->szLevel,pCross->szSys,pCross->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pCross->pszArHandles);
}
//WCap
WCapBom* pWcap = NULL;
typedef std::vector<WCapBom*>::iterator WCBomIT;
//for (int i = 0;i <m_vtWCapBomPtrs.size();i++)
for(WCBomIT it8 = m_vtWCapBomPtrs.begin();it8 != m_vtWCapBomPtrs.end();it8++)
{
//pWcap = m_vtWCapBomPtrs[i];
pWcap = (*it8);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWcap->szSN) > 0)
sText = pWcap->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("堵头");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("D%dx%.1f L=%d"),pWcap->nD,pWcap->fThick,pWcap->nL);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pWcap->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pWcap->szMertial);
sTemp.Format(_T("%s %s %s"),pWcap->szLevel,pWcap->szSys,pWcap->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem,6,sTemp);
}
WThroughBom* pThrough = NULL;
typedef std::vector< WThroughBom*>::iterator WThroughBomIT;
for (WThroughBomIT it81 = m_vtWThroughBomPtrs.begin(); it81 != m_vtWThroughBomPtrs.end(); it81++)
{
pThrough = (*it81);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pThrough->szSN) > 0)
sText = pThrough->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pThrough->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pThrough->nD, pThrough->fThick, pThrough->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pThrough->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pThrough->szMertial);
sTemp.Format(_T("%s %s"), pThrough->szLevel, pThrough->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pThrough->pszArHandles);
}
WUJoinBom* pWUJoin = NULL;
typedef std::vector< WUJoinBom*>::iterator WUJoinBomIT;
for (WUJoinBomIT it82 = m_vtWUJoinBomPtrs.begin(); it82 != m_vtWUJoinBomPtrs.end(); it82++)
{
pWUJoin = (*it82);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWUJoin->szSN) > 0)
sText = pWUJoin->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWUJoin->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pWUJoin->nD, pWUJoin->fThick, pWUJoin->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWUJoin->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWUJoin->szMertial);
sTemp.Format(_T("%s %s"), pWUJoin->szLevel, pWUJoin->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pWUJoin->pszArHandles);
}
WRJoinBom* pRJoinBom = NULL;
typedef std::vector< WRJoinBom*>::iterator WRJoinBomIT;
for (WRJoinBomIT it83 = m_vtWRJoinBomPtrs.begin(); it83 != m_vtWRJoinBomPtrs.end(); it83++)
{
pRJoinBom = (*it83);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pRJoinBom->szSN) > 0)
sText = pRJoinBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pRJoinBom->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pRJoinBom->nD, pRJoinBom->fThick, pRJoinBom->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pRJoinBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pRJoinBom->szMertial);
sTemp.Format(_T("%s %s"), pRJoinBom->szLevel, pRJoinBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pRJoinBom->pszArHandles);
}
WOJoinBom* pOJoinBom = NULL;
typedef std::vector< WOJoinBom*>::iterator WOJoinBomIT;
for (WOJoinBomIT it84 = m_vtWOJoinBomPtrs.begin(); it84 != m_vtWOJoinBomPtrs.end(); it84++)
{
pOJoinBom = (*it84);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pOJoinBom->szSN) > 0)
sText = pOJoinBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pOJoinBom->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pOJoinBom->nD, pOJoinBom->fThick, pOJoinBom->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pOJoinBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pOJoinBom->szMertial);
sTemp.Format(_T("%s %s"), pOJoinBom->szLevel, pOJoinBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pOJoinBom->pszArHandles);
}
WIJoinBom* pWIJoinBom = NULL;
typedef std::vector< WIJoinBom*>::iterator WIJoinBomIT;
for (WOJoinBomIT it85 = m_vtWIJoinBomPtrs.begin(); it85 != m_vtWIJoinBomPtrs.end(); it85++)
{
pWIJoinBom = (*it85);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWIJoinBom->szSN) > 0)
sText = pWIJoinBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWIJoinBom->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pWIJoinBom->nD, pWIJoinBom->fThick, pWIJoinBom->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWIJoinBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWIJoinBom->szMertial);
sTemp.Format(_T("%s %s"), pWIJoinBom->szLevel, pWIJoinBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pWIJoinBom->pszArHandles);
}
//Flange
WFlangeBom* pFlangeBom = NULL;
typedef std::vector<WFlangeBom*>::iterator WFlangeBomIT;
//for (int i = 0;i <m_vtWFlangeBomPtrs.size();i++)
for(WFlangeBomIT it9 = m_vtWFlangeBomPtrs.begin();it9 != m_vtWFlangeBomPtrs.end();it9++)
{
pFlangeBom = (*it9);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pFlangeBom->szSN) > 0)
sText = pFlangeBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("法兰");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("DN%d"),pFlangeBom->nDn);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pFlangeBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pFlangeBom->szMertial);
sTemp = pFlangeBom->szDescr;;
sTemp1.Format(_T("%s %s"),pFlangeBom->szLevel,pFlangeBom->szSys);
sTemp1.TrimLeft();
sTemp1.TrimRight();
m_wndBomList.SetItemText(nItem,6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pFlangeBom->pszArHandles);
}
//WFlxJoin
WFlxJoinBom *pFlxJnBom = NULL;
typedef std::vector<WFlxJoinBom *>::iterator WFlxJoinBomIT;
for (WFlxJoinBomIT it999 = m_vtWFlxJoinBomPtrs.begin(); it999 != m_vtWFlxJoinBomPtrs.end(); it999++)
{
pFlxJnBom = (*it999);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pFlxJnBom->szSN) > 0)
sText = pFlxJnBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("卡箍");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d (%s)"), pFlxJnBom->nDn,pFlxJnBom->szDescr);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pFlxJnBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pFlxJnBom->szMertial);
sTemp.Format(_T("%s %s"), pFlxJnBom->szLevel, pFlxJnBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pFlxJnBom->pszArHandles);
}
//RPBom
RPBom *pRPBom = NULL;
typedef std::vector<RPBom *>::iterator RPBomIT;
for (RPBomIT it898 = m_vtRPBomPtrs.begin();it898 != m_vtRPBomPtrs.end();it898++)
{
pRPBom = *it898;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pRPBom->szSN) > 0)
sText = pRPBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("补强圈");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d %.1f"), pRPBom->nDn, pRPBom->fThick);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pRPBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pRPBom->szMertial);
sTemp.Format(_T("%s %s"), pRPBom->szLevel, pRPBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pRPBom->pszArHandles);
}
//HPBom
HPBom *pHPBom = NULL;
typedef std::vector<HPBom *>::iterator HPBomIT;
for (HPBomIT it798 = m_vtHPBomPtrs.begin();it798 != m_vtHPBomPtrs.end();it798++)
{
pHPBom = *it798;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHPBom->szSN) > 0)
sText = pHPBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("半管接头");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d"), pHPBom->nDn);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pHPBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pHPBom->szMertial);
sTemp.Format(_T("%s %s"), pHPBom->szLevel, pHPBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHPBom->pszArHandles);
}
//SPBBom
SPBBom *pSPBBom = NULL;
typedef std::vector<SPBBom *>::iterator SPBBomIT;
for (SPBBomIT it698 = m_vtSPBomPtrs.begin(); it698 != m_vtSPBomPtrs.end();it698++)
{
pSPBBom = *it698;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pSPBBom->szSN) > 0)
sText = pSPBBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pSPBBom->nKind == 0 ? _T("八字盲板") : _T("插板");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d"), pSPBBom->nDn);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pSPBBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pSPBBom->szMertial);
sTemp.Format(_T("%s %s"), pSPBBom->szLevel, pSPBBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pSPBBom->pszArHandles);
}
//螺栓
WBolt *pWBoltBom = NULL;
typedef std::vector<WBolt *>::iterator WBoltIT;
for(WBoltIT it77 = m_vtWBoltBomPtrs.begin();it77 != m_vtWBoltBomPtrs.end();it77++)
{
pWBoltBom = (*it77);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWBoltBom->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWBoltBom->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWBoltBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWBoltBom->szMertial);
sTemp.Format(_T("%s %s"), pWBoltBom->szLevel, pWBoltBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
//螺母
WNut *pWnutBom = NULL;
typedef std::vector<WNut *>::iterator WNutIT;
for (WNutIT it88 = m_vtWNutBomPtrs.begin(); it88 != m_vtWNutBomPtrs.end(); it88++)
{
pWnutBom = (*it88);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWnutBom->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWnutBom->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWnutBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWnutBom->szMertial);
sTemp.Format(_T("%s %s"), pWnutBom->szLevel, pWnutBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
//垫片
if (!m_bNoGasket)
{
WGasket *pWGasket = NULL;
typedef std::vector<WGasket *>::iterator WGasketBomIT;
for (WGasketBomIT it99 = m_vtWGasketBomPtrs.begin(); it99 != m_vtWGasketBomPtrs.end(); it99++)
{
pWGasket = (*it99);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T(" 垫片");
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWGasket->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("片");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWGasket->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWGasket->szMertial);
sTemp.Format(_T("%s %s"), pWGasket->szLevel, pWGasket->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
}
//螺栓
WBolt *pWBolt = NULL;
typedef std::vector<WBolt *>::iterator WBoltIT;
for (WBoltIT it888 = m_vtWBoltBomPtrs.begin();it888 != m_vtWBoltBomPtrs.end();it888++)
{
pWBolt = (*it888);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWBolt->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWBolt->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWBolt->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWBolt->szMertial);
sTemp.Format(_T("%s %s"), pWBolt->szLevel, pWBolt->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
//螺母
WNut *pWnt = NULL;
typedef std::vector<WNut *>::iterator WNutIT;
for (WNutIT it8888 = m_vtWNutBomPtrs.begin();it8888 != m_vtWNutBomPtrs.end();it8888++)
{
pWnt = (*it8888);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWnt->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWnt->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWnt->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWnt->szMertial);
sTemp.Format(_T("%s %s"), pWnt->szLevel, pWnt->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
XGPipeBom *pXGBom = NULL;
typedef std::vector< XGPipeBom *>::iterator XGBomBomIT;
for (XGBomBomIT it999 = m_vtXGPipeBomPtrs.begin();it999 != m_vtXGPipeBomPtrs.end();it999++)
{
pXGBom = (*it999);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText.Format(_T("线管 %s %s"), pXGBom->szPName, pXGBom->szMaterial);
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d OD%dx%.1f"), (short)(pXGBom->dDN+0.5), (short)(pXGBom->dOD+0.5), pXGBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), (short)(pXGBom->dLen + 0.99));
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pXGBom->szMaterial);
//
sTemp.Format(_T("%s %s"), pXGBom->szModel, pXGBom->szStruF);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pXGBom->pszArHandles);
}
//设备
CString sName;
WEquBom* pCount = NULL;
for (POSITION ps = m_mapName2Count.GetStartPosition();ps != NULL;)
{
m_mapName2Count.GetNextAssoc(ps,sName,(void*&)pCount);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pCount->szSN) > 0)
sText = pCount->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
m_wndBomList.SetItemText(nItem,1,pCount->szName);
m_wndBomList.SetItemText(nItem,2,pCount->szSpec);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pCount->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,_T(""));
m_wndBomList.SetItemText(nItem,6,_T(""));
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pCount->pszArHandles);
}
//角钢
AngSteelBom* pASteelBom = NULL;
typedef std::vector<AngSteelBom*>::iterator AngSteelBomIT;
for (AngSteelBomIT it10 = m_vtAngSteelBomPtrs.begin();it10 != m_vtAngSteelBomPtrs.end();it10++)
{
pASteelBom = (*it10);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pASteelBom->szSN) > 0)
sText = pASteelBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("角钢");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("%.1fX%.1fX%.1f"),pASteelBom->dW,pASteelBom->dW,pASteelBom->dt);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("长(米)");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%.1f"),pASteelBom->dLen);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,_T(""));
m_wndBomList.SetItemText(nItem,6,pASteelBom->szMertial);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pASteelBom->pszArHandles);
}
//护栏
GuarBarBom* pGBarBom = NULL;
typedef std::vector<GuarBarBom*>::iterator GuarBarBomIT;
for (GuarBarBomIT it11 = m_vtGuarBarBomPtrs.begin();it11 != m_vtGuarBarBomPtrs.end();it11++)
{
pGBarBom = (*it11);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pGBarBom->szSN) > 0)
sText = pGBarBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("护栏");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("高:%.1f,扶管%.1fx%.1f"),pGBarBom->dH,pGBarBom->dD,pGBarBom->dt);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("长(米)");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%.1f"),pGBarBom->dLen);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,_T(""));
m_wndBomList.SetItemText(nItem,6,pGBarBom->m_sMaterial);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pGBarBom->pszArHandles);
}
//爬梯
ClimbStairBom* pClimbStairBom = NULL;
typedef std::vector<ClimbStairBom*>::iterator ClimbStairBomIT;
for (ClimbStairBomIT it12 = m_vtClimbStairBomPtrs.begin();it12 != m_vtClimbStairBomPtrs.end();it12++)
{
pClimbStairBom = (*it12);
if (pClimbStairBom == NULL) continue;
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pClimbStairBom->szSN) > 0)
sText = pClimbStairBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = _T("爬梯");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("高度:%.1f,直径%.1f"),pClimbStairBom->dH,pClimbStairBom->dD);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pClimbStairBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,_T(""));
m_wndBomList.SetItemText(nItem,6,pClimbStairBom->m_sMaterial);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pClimbStairBom->pszArHandles);
}
//直梯,弧梯
LineStairBom* pLineStairBom = NULL;
typedef std::vector<LineStairBom*>::iterator LineStairBomIT;
for (LineStairBomIT it13 = m_vtLineStairBomPtrs.begin();it13 != m_vtLineStairBomPtrs.end();it13++)
{
pLineStairBom = (*it13);
if (pClimbStairBom == NULL) continue;
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pLineStairBom->szSN) > 0)
sText = pLineStairBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = pLineStairBom->m_sRem;//直梯 弧梯
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("宽:%.1f,高:%.1f"),pLineStairBom->dW,pLineStairBom->dH);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("长(米)");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%.1f"),pLineStairBom->dLen);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,_T(""));
m_wndBomList.SetItemText(nItem,6,pClimbStairBom->m_sFactory);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pClimbStairBom->pszArHandles);
}
//门窗
OpeningBom* pOpeningBom = NULL;
typedef std::vector<OpeningBom*>::iterator OpeningBomIT;
for (OpeningBomIT it14 = m_vtOpeningBomPtrs.begin();it14 != m_vtOpeningBomPtrs.end();it14++)
{
pOpeningBom = (*it14);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pOpeningBom->szSN) > 0)
sText = pOpeningBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = pOpeningBom->nType == 0 ? _T("窗") : _T("门");
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("宽:%.1f,高:%.1f"),pOpeningBom->dWidth,pOpeningBom->dHeight);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pOpeningBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pOpeningBom->szName);
m_wndBomList.SetItemText(nItem,6,pOpeningBom->szFactory);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pOpeningBom->pszArHandles);
}
//暖通
DuctBom* pDuctBom = NULL;
typedef std::vector<DuctBom*>::iterator DuctBomIt;
for (DuctBomIt it15 = m_vtDuctBomPtrs.begin();it15 != m_vtDuctBomPtrs.end();it15++)
{
pDuctBom = (*it15);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pDuctBom->szSN) > 0)
sText = pDuctBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = (pDuctBom->eSect == eRect) ? _T("矩形风管") : _T("圆形风管");
m_wndBomList.SetItemText(nItem,1,sText);
if (pDuctBom->eSect == eRect)
{
sText.Format(_T("宽:%.1fx高:%.1f t=%.1f"),pDuctBom->dW,pDuctBom->dH,pDuctBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"),pDuctBom->dW,pDuctBom->dt);
}
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%.1f"),pDuctBom->dLen / 1000.0);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pDuctBom->szMertial);
sText.Format(_T("%s %s"),pDuctBom->szSys,pDuctBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pDuctBom->pszArHandles);
}
HElbowBom* pHElbowBom = NULL;
typedef std::vector<HElbowBom*>::iterator HElbowBomIt;
for (HElbowBomIt it16 = m_vtHElbowBomPtrs.begin();it16 != m_vtHElbowBomPtrs.end();it16++)
{
pHElbowBom = (*it16);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHElbowBom->szSN) > 0)
sText = pHElbowBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = (pHElbowBom->eSect == eRect) ? _T("矩形风管弯头") : _T("圆形风管弯头");
m_wndBomList.SetItemText(nItem,1,sText);
if (pHElbowBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f-%.1fx%.1f t=%.1f"),pHElbowBom->dSw,pHElbowBom->dSh,pHElbowBom->dEw,pHElbowBom->dEh,pHElbowBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"),pHElbowBom->dSw,pHElbowBom->dt);
}
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pHElbowBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pHElbowBom->szMertial);
sText.Format(_T("%s %s"),pHElbowBom->szSys,pHElbowBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHElbowBom->pszArHandles);
}
HTeeBom* pHTeeBom = NULL;
typedef std::vector<HTeeBom*>::iterator HTeeBomIt;
for (HTeeBomIt it17 = m_vtHTeeBomPtrs.begin();it17 != m_vtHTeeBomPtrs.end();it17++)
{
pHTeeBom = (*it17);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHTeeBom->szSN) > 0)
sText = pHTeeBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = (pHTeeBom->eSect == eRect) ? _T("矩形风管三通") : _T("圆形风管三通");
m_wndBomList.SetItemText(nItem,1,sText);
if (pHTeeBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f-%.1fx%.1f-%.1fx%.1f t=%.1f"),pHTeeBom->dSw,pHTeeBom->dSh,pHTeeBom->dEw,pHTeeBom->dEh,pHTeeBom->dBw,pHTeeBom->dBh,pHTeeBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"),pHTeeBom->dSw,pHTeeBom->dt);
}
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pHTeeBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pHTeeBom->szMertial);
sText.Format(_T("%s %s"),pHTeeBom->szSys,pHTeeBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHTeeBom->pszArHandles);
}
HCrossBom* pHCrossBom = NULL;
typedef std::vector<HCrossBom*>::iterator HCrossBomIt;
for (HCrossBomIt it18 = m_vtHCrossBomPtrs.begin();it18 != m_vtHCrossBomPtrs.end();it18++)
{
pHCrossBom = (*it18);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHCrossBom->szSN) > 0)
sText = pHCrossBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = (pHCrossBom->eSect == eRect) ? _T("矩形风管四通") : _T("圆形风管四通");
m_wndBomList.SetItemText(nItem,1,sText);
if (pHCrossBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f-%.1fx%.1f-%.1fx%.1f-%.1fx%.1f t=%.1f"),pHCrossBom->dSw,pHCrossBom->dSh,
pHCrossBom->dEw,pHCrossBom->dEh,pHCrossBom->dBw1,pHCrossBom->dBh1,pHCrossBom->dBw2,pHCrossBom->dBh2,pHCrossBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"),pHCrossBom->dSw,pHCrossBom->dt);
}
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pHCrossBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pHCrossBom->szMertial);
sText.Format(_T("%s %s"),pHCrossBom->szSys,pHCrossBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHCrossBom->pszArHandles);
}
HOffsetBom* pHOffBom = NULL;
typedef std::vector<HOffsetBom*>::iterator HoffsetBomIt;
for (HoffsetBomIt it19 = m_vtHOffsetBomPtrs.begin();it19 != m_vtHOffsetBomPtrs.end();it19++)
{
pHOffBom = (*it19);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHOffBom->szSN) > 0)
sText = pHOffBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText = (pHOffBom->eSect == eRect) ? _T("矩形风管乙字弯") : _T("圆形风管乙字弯");
m_wndBomList.SetItemText(nItem,1,sText);
if (pHOffBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f 偏移L=%.1f 偏移W=%.1f 角度=%.1f t=%.1f"),pHOffBom->dSw,pHOffBom->dEw,
pHOffBom->dOffL,pHOffBom->dOffW,pHOffBom->dAngle,pHOffBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"),pHOffBom->dSw,pHOffBom->dt);
}
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pHOffBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pHOffBom->szMertial);
sText.Format(_T("%s %s"),pHOffBom->szSys,pHOffBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHOffBom->pszArHandles);
}
ECabletryBom* pEcabBom = NULL;
typedef std::vector<ECabletryBom*>::iterator ECabBomIt;
for (ECabBomIt it20 = m_vtECabtryBomPtrs.begin();it20 != m_vtECabtryBomPtrs.end();it20++)
{
pEcabBom = (*it20);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEcabBom->szSN) > 0)
sText = pEcabBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText.Format(_T("%s桥架"),pEcabBom->szType);
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("%.1fx%.1fx%.1f"),pEcabBom->dW,pEcabBom->dH,pEcabBom->dt);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%.1f"),pEcabBom->dLen);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pEcabBom->szMertial);
sText.Format(_T("%s %s"),pEcabBom->szSys,pEcabBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEcabBom->pszArHandles);
}
ECabFitBom* pEFitBom = NULL;
typedef std::vector<ECabFitBom*>::iterator ECabFitBomIt;
for (ECabFitBomIt it21 = m_vtEElbowBomPtrs.begin();it21 != m_vtEElbowBomPtrs.end();it21++)
{
pEFitBom = (*it21);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEFitBom->szSN) > 0)
sText = pEFitBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText.Format(_T("%s桥架弯头"),pEFitBom->szType);
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("%.1fx%.1f %.1f度 t=%.1f"),pEFitBom->dW,pEFitBom->dH,pEFitBom->dAngle,pEFitBom->dt);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pEFitBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pEFitBom->szMertial);
sText.Format(_T("%s %s"),pEFitBom->szSys,pEFitBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEFitBom->pszArHandles);
}
for (ECabFitBomIt it22 = m_vtETeeBomPtrs.begin();it22 != m_vtETeeBomPtrs.end();it22++)
{
pEFitBom = (*it22);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEFitBom->szSN) > 0)
sText = pEFitBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText.Format(_T("%s桥架三通"),pEFitBom->szType);
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("%.1fx%.1fx%.1f t=%.1f"),pEFitBom->dW,pEFitBom->dH,pEFitBom->dLx,pEFitBom->dt);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pEFitBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pEFitBom->szMertial);
sText.Format(_T("%s %s"),pEFitBom->szSys,pEFitBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEFitBom->pszArHandles);
}
for (ECabFitBomIt it23 = m_vtECrossBomPtrs.begin();it23 != m_vtECrossBomPtrs.end();it23++)
{
pEFitBom = (*it23);
sText.Format(_T("%d"),m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEFitBom->szSN) > 0)
sText = pEFitBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(),sText);
sText.Format(_T("%s桥架四通"),pEFitBom->szType);
m_wndBomList.SetItemText(nItem,1,sText);
sText.Format(_T("%.1fx%.1fx%.1f t=%.1f"),pEFitBom->dW,pEFitBom->dH,pEFitBom->dLx,pEFitBom->dt);
m_wndBomList.SetItemText(nItem,2,sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem,3,sText);
sText.Format(_T("%d"),pEFitBom->nCount);
m_wndBomList.SetItemText(nItem,4,sText);
m_wndBomList.SetItemText(nItem,5,pEFitBom->szMertial);
sText.Format(_T("%s %s"),pEFitBom->szSys,pEFitBom->szLevel);
m_wndBomList.SetItemText(nItem,6,sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEFitBom->pszArHandles);
}
}
void CBomReportDlg::ShowtoReportlist2()
{
INIT_DB_AND_CURR_SYS(sqlDb, sSys);
CString sSQL;
sSQL = _T("select distinct [材质] from AecMaterial order by BOMSN");
CStringArray arVal;
sqlDb.GetSelData(sSQL, arVal);
m_wndBomList.DeleteAllItems();
CString sMat;
for (int i = 0;i < arVal.GetSize();i++)
{
sMat = arVal.GetAt(i);
ImpShowReportList(sMat);
}
int nItem = 0;
CString sText, sTemp, sTemp1;
//其他
//螺栓
WBolt *pWBoltBom = NULL;
typedef std::vector<WBolt *>::iterator WBoltIT;
for (WBoltIT it77 = m_vtWBoltBomPtrs.begin(); it77 != m_vtWBoltBomPtrs.end(); it77++)
{
pWBoltBom = (*it77);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWBoltBom->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWBoltBom->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWBoltBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWBoltBom->szMertial);
sTemp.Format(_T("%s %s"), pWBoltBom->szLevel, pWBoltBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
//螺母
WNut *pWnutBom = NULL;
typedef std::vector<WNut *>::iterator WNutIT;
for (WNutIT it88 = m_vtWNutBomPtrs.begin(); it88 != m_vtWNutBomPtrs.end(); it88++)
{
pWnutBom = (*it88);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWnutBom->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWnutBom->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWnutBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWnutBom->szMertial);
sTemp.Format(_T("%s %s"), pWnutBom->szLevel, pWnutBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
//垫片
if (!m_bNoGasket)
{
WGasket *pWGasket = NULL;
typedef std::vector<WGasket *>::iterator WGasketBomIT;
for (WGasketBomIT it99 = m_vtWGasketBomPtrs.begin(); it99 != m_vtWGasketBomPtrs.end(); it99++)
{
pWGasket = (*it99);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T(" 垫片");
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWGasket->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("片");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWGasket->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWGasket->szMertial);
sTemp.Format(_T("%s %s"), pWGasket->szLevel, pWGasket->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
}
//螺栓
WBolt *pWBolt = NULL;
typedef std::vector<WBolt *>::iterator WBoltIT;
for (WBoltIT it888 = m_vtWBoltBomPtrs.begin(); it888 != m_vtWBoltBomPtrs.end(); it888++)
{
pWBolt = (*it888);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWBolt->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWBolt->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWBolt->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWBolt->szMertial);
sTemp.Format(_T("%s %s"), pWBolt->szLevel, pWBolt->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
//螺母
WNut *pWnt = NULL;
typedef std::vector<WNut *>::iterator WNutIT;
for (WNutIT it8888 = m_vtWNutBomPtrs.begin(); it8888 != m_vtWNutBomPtrs.end(); it8888++)
{
pWnt = (*it8888);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWnt->szType;
m_wndBomList.SetItemText(nItem, 1, sText);
sText = pWnt->szDescr;
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWnt->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWnt->szMertial);
sTemp.Format(_T("%s %s"), pWnt->szLevel, pWnt->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)NULL);
}
XGPipeBom *pXGBom = NULL;
typedef std::vector< XGPipeBom *>::iterator XGBomBomIT;
for (XGBomBomIT it999 = m_vtXGPipeBomPtrs.begin(); it999 != m_vtXGPipeBomPtrs.end(); it999++)
{
pXGBom = (*it999);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText.Format(_T("线管 %s %s"), pXGBom->szPName, pXGBom->szMaterial);
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d OD%dx%.1f"), (short)(pXGBom->dDN + 0.5), (short)(pXGBom->dOD + 0.5), pXGBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), (short)(pXGBom->dLen + 0.99));
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pXGBom->szMaterial);
//
sTemp.Format(_T("%s %s"), pXGBom->szModel, pXGBom->szStruF);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pXGBom->pszArHandles);
}
//设备
CString sName;
WEquBom *pCount = NULL;
for (POSITION ps = m_mapName2Count.GetStartPosition(); ps != NULL;)
{
m_mapName2Count.GetNextAssoc(ps, sName, (void *&)pCount);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pCount->szSN) > 0)
sText = pCount->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
m_wndBomList.SetItemText(nItem, 1, pCount->szName);
m_wndBomList.SetItemText(nItem, 2, pCount->szSpec);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pCount->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, _T(""));
m_wndBomList.SetItemText(nItem, 6, _T(""));
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pCount->pszArHandles);
}
//角钢
AngSteelBom *pASteelBom = NULL;
typedef std::vector<AngSteelBom *>::iterator AngSteelBomIT;
for (AngSteelBomIT it10 = m_vtAngSteelBomPtrs.begin(); it10 != m_vtAngSteelBomPtrs.end(); it10++)
{
pASteelBom = (*it10);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pASteelBom->szSN) > 0)
sText = pASteelBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("角钢");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%.1fX%.1fX%.1f"), pASteelBom->dW, pASteelBom->dW, pASteelBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("长(米)");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%.1f"), pASteelBom->dLen);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, _T(""));
m_wndBomList.SetItemText(nItem, 6, pASteelBom->szMertial);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pASteelBom->pszArHandles);
}
//护栏
GuarBarBom *pGBarBom = NULL;
typedef std::vector<GuarBarBom *>::iterator GuarBarBomIT;
for (GuarBarBomIT it11 = m_vtGuarBarBomPtrs.begin(); it11 != m_vtGuarBarBomPtrs.end(); it11++)
{
pGBarBom = (*it11);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pGBarBom->szSN) > 0)
sText = pGBarBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("护栏");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("高:%.1f,扶管%.1fx%.1f"), pGBarBom->dH, pGBarBom->dD, pGBarBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("长(米)");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%.1f"), pGBarBom->dLen);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, _T(""));
m_wndBomList.SetItemText(nItem, 6, pGBarBom->m_sMaterial);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pGBarBom->pszArHandles);
}
//爬梯
ClimbStairBom *pClimbStairBom = NULL;
typedef std::vector<ClimbStairBom *>::iterator ClimbStairBomIT;
for (ClimbStairBomIT it12 = m_vtClimbStairBomPtrs.begin(); it12 != m_vtClimbStairBomPtrs.end(); it12++)
{
pClimbStairBom = (*it12);
if (pClimbStairBom == NULL) continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pClimbStairBom->szSN) > 0)
sText = pClimbStairBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("爬梯");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("高度:%.1f,直径%.1f"), pClimbStairBom->dH, pClimbStairBom->dD);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pClimbStairBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, _T(""));
m_wndBomList.SetItemText(nItem, 6, pClimbStairBom->m_sMaterial);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pClimbStairBom->pszArHandles);
}
//直梯,弧梯
LineStairBom *pLineStairBom = NULL;
typedef std::vector<LineStairBom *>::iterator LineStairBomIT;
for (LineStairBomIT it13 = m_vtLineStairBomPtrs.begin(); it13 != m_vtLineStairBomPtrs.end(); it13++)
{
pLineStairBom = (*it13);
if (pClimbStairBom == NULL) continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pLineStairBom->szSN) > 0)
sText = pLineStairBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pLineStairBom->m_sRem;//直梯 弧梯
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("宽:%.1f,高:%.1f"), pLineStairBom->dW, pLineStairBom->dH);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("长(米)");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%.1f"), pLineStairBom->dLen);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, _T(""));
m_wndBomList.SetItemText(nItem, 6, pClimbStairBom->m_sFactory);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pClimbStairBom->pszArHandles);
}
//门窗
OpeningBom *pOpeningBom = NULL;
typedef std::vector<OpeningBom *>::iterator OpeningBomIT;
for (OpeningBomIT it14 = m_vtOpeningBomPtrs.begin(); it14 != m_vtOpeningBomPtrs.end(); it14++)
{
pOpeningBom = (*it14);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pOpeningBom->szSN) > 0)
sText = pOpeningBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pOpeningBom->nType == 0 ? _T("窗") : _T("门");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("宽:%.1f,高:%.1f"), pOpeningBom->dWidth, pOpeningBom->dHeight);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pOpeningBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pOpeningBom->szName);
m_wndBomList.SetItemText(nItem, 6, pOpeningBom->szFactory);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pOpeningBom->pszArHandles);
}
//暖通
DuctBom *pDuctBom = NULL;
typedef std::vector<DuctBom *>::iterator DuctBomIt;
for (DuctBomIt it15 = m_vtDuctBomPtrs.begin(); it15 != m_vtDuctBomPtrs.end(); it15++)
{
pDuctBom = (*it15);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pDuctBom->szSN) > 0)
sText = pDuctBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = (pDuctBom->eSect == eRect) ? _T("矩形风管") : _T("圆形风管");
m_wndBomList.SetItemText(nItem, 1, sText);
if (pDuctBom->eSect == eRect)
{
sText.Format(_T("宽:%.1fx高:%.1f t=%.1f"), pDuctBom->dW, pDuctBom->dH, pDuctBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"), pDuctBom->dW, pDuctBom->dt);
}
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%.1f"), pDuctBom->dLen / 1000.0);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pDuctBom->szMertial);
sText.Format(_T("%s %s"), pDuctBom->szSys, pDuctBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pDuctBom->pszArHandles);
}
HElbowBom *pHElbowBom = NULL;
typedef std::vector<HElbowBom *>::iterator HElbowBomIt;
for (HElbowBomIt it16 = m_vtHElbowBomPtrs.begin(); it16 != m_vtHElbowBomPtrs.end(); it16++)
{
pHElbowBom = (*it16);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHElbowBom->szSN) > 0)
sText = pHElbowBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = (pHElbowBom->eSect == eRect) ? _T("矩形风管弯头") : _T("圆形风管弯头");
m_wndBomList.SetItemText(nItem, 1, sText);
if (pHElbowBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f-%.1fx%.1f t=%.1f"), pHElbowBom->dSw, pHElbowBom->dSh, pHElbowBom->dEw, pHElbowBom->dEh, pHElbowBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"), pHElbowBom->dSw, pHElbowBom->dt);
}
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pHElbowBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pHElbowBom->szMertial);
sText.Format(_T("%s %s"), pHElbowBom->szSys, pHElbowBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHElbowBom->pszArHandles);
}
HTeeBom *pHTeeBom = NULL;
typedef std::vector<HTeeBom *>::iterator HTeeBomIt;
for (HTeeBomIt it17 = m_vtHTeeBomPtrs.begin(); it17 != m_vtHTeeBomPtrs.end(); it17++)
{
pHTeeBom = (*it17);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHTeeBom->szSN) > 0)
sText = pHTeeBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = (pHTeeBom->eSect == eRect) ? _T("矩形风管三通") : _T("圆形风管三通");
m_wndBomList.SetItemText(nItem, 1, sText);
if (pHTeeBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f-%.1fx%.1f-%.1fx%.1f t=%.1f"), pHTeeBom->dSw, pHTeeBom->dSh, pHTeeBom->dEw, pHTeeBom->dEh, pHTeeBom->dBw, pHTeeBom->dBh, pHTeeBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"), pHTeeBom->dSw, pHTeeBom->dt);
}
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pHTeeBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pHTeeBom->szMertial);
sText.Format(_T("%s %s"), pHTeeBom->szSys, pHTeeBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHTeeBom->pszArHandles);
}
HCrossBom *pHCrossBom = NULL;
typedef std::vector<HCrossBom *>::iterator HCrossBomIt;
for (HCrossBomIt it18 = m_vtHCrossBomPtrs.begin(); it18 != m_vtHCrossBomPtrs.end(); it18++)
{
pHCrossBom = (*it18);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHCrossBom->szSN) > 0)
sText = pHCrossBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = (pHCrossBom->eSect == eRect) ? _T("矩形风管四通") : _T("圆形风管四通");
m_wndBomList.SetItemText(nItem, 1, sText);
if (pHCrossBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f-%.1fx%.1f-%.1fx%.1f-%.1fx%.1f t=%.1f"), pHCrossBom->dSw, pHCrossBom->dSh,
pHCrossBom->dEw, pHCrossBom->dEh, pHCrossBom->dBw1, pHCrossBom->dBh1, pHCrossBom->dBw2, pHCrossBom->dBh2, pHCrossBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"), pHCrossBom->dSw, pHCrossBom->dt);
}
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pHCrossBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pHCrossBom->szMertial);
sText.Format(_T("%s %s"), pHCrossBom->szSys, pHCrossBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHCrossBom->pszArHandles);
}
HOffsetBom *pHOffBom = NULL;
typedef std::vector<HOffsetBom *>::iterator HoffsetBomIt;
for (HoffsetBomIt it19 = m_vtHOffsetBomPtrs.begin(); it19 != m_vtHOffsetBomPtrs.end(); it19++)
{
pHOffBom = (*it19);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHOffBom->szSN) > 0)
sText = pHOffBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = (pHOffBom->eSect == eRect) ? _T("矩形风管乙字弯") : _T("圆形风管乙字弯");
m_wndBomList.SetItemText(nItem, 1, sText);
if (pHOffBom->eSect == eRect)
{
sText.Format(_T("%.1fx%.1f 偏移L=%.1f 偏移W=%.1f 角度=%.1f t=%.1f"), pHOffBom->dSw, pHOffBom->dEw,
pHOffBom->dOffL, pHOffBom->dOffW, pHOffBom->dAngle, pHOffBom->dt);
}
else
{
sText.Format(_T("D%.1f t=%.1f"), pHOffBom->dSw, pHOffBom->dt);
}
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pHOffBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pHOffBom->szMertial);
sText.Format(_T("%s %s"), pHOffBom->szSys, pHOffBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHOffBom->pszArHandles);
}
ECabletryBom *pEcabBom = NULL;
typedef std::vector<ECabletryBom *>::iterator ECabBomIt;
for (ECabBomIt it20 = m_vtECabtryBomPtrs.begin(); it20 != m_vtECabtryBomPtrs.end(); it20++)
{
pEcabBom = (*it20);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEcabBom->szSN) > 0)
sText = pEcabBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText.Format(_T("%s桥架"), pEcabBom->szType);
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%.1fx%.1fx%.1f"), pEcabBom->dW, pEcabBom->dH, pEcabBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%.1f"), pEcabBom->dLen);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pEcabBom->szMertial);
sText.Format(_T("%s %s"), pEcabBom->szSys, pEcabBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEcabBom->pszArHandles);
}
ECabFitBom *pEFitBom = NULL;
typedef std::vector<ECabFitBom *>::iterator ECabFitBomIt;
for (ECabFitBomIt it21 = m_vtEElbowBomPtrs.begin(); it21 != m_vtEElbowBomPtrs.end(); it21++)
{
pEFitBom = (*it21);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEFitBom->szSN) > 0)
sText = pEFitBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText.Format(_T("%s桥架弯头"), pEFitBom->szType);
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%.1fx%.1f %.1f度 t=%.1f"), pEFitBom->dW, pEFitBom->dH, pEFitBom->dAngle, pEFitBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pEFitBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pEFitBom->szMertial);
sText.Format(_T("%s %s"), pEFitBom->szSys, pEFitBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEFitBom->pszArHandles);
}
for (ECabFitBomIt it22 = m_vtETeeBomPtrs.begin(); it22 != m_vtETeeBomPtrs.end(); it22++)
{
pEFitBom = (*it22);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEFitBom->szSN) > 0)
sText = pEFitBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText.Format(_T("%s桥架三通"), pEFitBom->szType);
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%.1fx%.1fx%.1f t=%.1f"), pEFitBom->dW, pEFitBom->dH, pEFitBom->dLx, pEFitBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pEFitBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pEFitBom->szMertial);
sText.Format(_T("%s %s"), pEFitBom->szSys, pEFitBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEFitBom->pszArHandles);
}
for (ECabFitBomIt it23 = m_vtECrossBomPtrs.begin(); it23 != m_vtECrossBomPtrs.end(); it23++)
{
pEFitBom = (*it23);
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pEFitBom->szSN) > 0)
sText = pEFitBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText.Format(_T("%s桥架四通"), pEFitBom->szType);
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%.1fx%.1fx%.1f t=%.1f"), pEFitBom->dW, pEFitBom->dH, pEFitBom->dLx, pEFitBom->dt);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pEFitBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pEFitBom->szMertial);
sText.Format(_T("%s %s"), pEFitBom->szSys, pEFitBom->szLevel);
m_wndBomList.SetItemText(nItem, 6, sText);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pEFitBom->pszArHandles);
}
}
//按材料选择报表List
void CBomReportDlg::ImpShowReportList(const CString& sMatSelect)
{
int nItem = 0;
CString sText, sTemp, sTemp1;
//PIPE
PipeBom *pPipe = NULL;
typedef std::vector<PipeBom *>::iterator PBomIT;
//for (int i = 0;i < m_vtPipeBomPtrs.size();i++)
for (PBomIT it1 = m_vtPipeBomPtrs.begin(); it1 != m_vtPipeBomPtrs.end(); it1++)
{
//pPipe = m_vtPipeBomPtrs[i];
pPipe = (*it1);
if (sMatSelect.CompareNoCase(pPipe->szMertial) != 0)
{
continue;
}
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pPipe->szSN) > 0)
sText = pPipe->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("管");
sTemp = pPipe->szMertial;
sTemp.TrimRight();
if (sTemp.IsEmpty())
{
sText = _T("焊接钢管");
}
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d D%dx%.1f"), pPipe->nDn, pPipe->nD, pPipe->fThick);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("米");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%.3f"), pPipe->dLen);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pPipe->szMertial);
//
sTemp.Format(_T("%s %s"), pPipe->szLevel, pPipe->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pPipe->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pPipe->nD, pPipe->fThick, pPipe->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pPipe->nD, pPipe->fThick, pPipe->nBomSN, pPipe->dLen*1000));
}
//Elbow
ElbowBom *pElbow = NULL;
typedef std::vector<ElbowBom *>::iterator EBomIT;
for (EBomIT it2 = m_vtElbowBomPtrs.begin(); it2 != m_vtElbowBomPtrs.end(); it2++)
//for (int i = 0;i < m_vtElbowBomPtrs.size();i++)
{
//pElbow = m_vtElbowBomPtrs[i];
pElbow = (*it2);
if (sMatSelect.CompareNoCase(pElbow->szMertial) != 0)
{
continue;
}
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pElbow->szSN) > 0)
sText = pElbow->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("弯头");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%d度弯头 DN%d"), pElbow->nAngle, pElbow->nDn);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pElbow->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pElbow->szMertial);
sTemp.Format(_T("%s %s %s"), pElbow->szLevel, pElbow->szSys, pElbow->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pElbow->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, ElbowWeight(pElbow->nD, pElbow->fThick, pElbow->nDn * pElbow->fRRatio, pElbow->nAngle, 1));//1
m_wndBomList.SetItemText(nItem, 8, ElbowWeight(pElbow->nD, pElbow->fThick, pElbow->nDn * pElbow->fRRatio, pElbow->nAngle, pElbow->nCount));
}
//RElbow
RElbowBom *pRElbow = NULL;
typedef std::vector<RElbowBom *>::iterator REBomIT;
for (REBomIT it22 = m_vtRElbowBomPtrs.begin(); it22 != m_vtRElbowBomPtrs.end(); it22++)
{
pRElbow = *it22;
if (sMatSelect.CompareNoCase(pRElbow->szMertial) != 0)
{
continue;
}
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pRElbow->szSN) > 0)
sText = pRElbow->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("变径弯头");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("%d度弯头 DN%dx%d %.1f"), pRElbow->nAngle, pRElbow->nDn, pRElbow->nTDn, pRElbow->fThick);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pRElbow->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pRElbow->szMertial);
sTemp.Format(_T("%s %s %s"), pRElbow->szLevel, pRElbow->szSys, pRElbow->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pRElbow->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, RElbowWeight(pRElbow->nD, pRElbow->nTD, pRElbow->fThick, pRElbow->nDn * pRElbow->fRRatio, pRElbow->nAngle, 1));//1
m_wndBomList.SetItemText(nItem, 8, RElbowWeight(pRElbow->nD, pRElbow->nTD, pRElbow->fThick, pRElbow->nDn * pRElbow->fRRatio, pRElbow->nAngle, pRElbow->nCount));
}
//Reducer
ReducerBom *pReducer = NULL;
typedef std::vector<ReducerBom *>::iterator RBomIT;
//for (int i = 0;i < m_vtReducerBomPtrs.size();i++)
for (RBomIT it3 = m_vtReducerBomPtrs.begin(); it3 != m_vtReducerBomPtrs.end(); it3++)
{
//pReducer = m_vtReducerBomPtrs[i];
pReducer = (*it3);
if (sMatSelect.CompareNoCase(pReducer->szMertial) != 0)
{
continue;
}
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pReducer->szSN) > 0)
sText = pReducer->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
if (pReducer->nOffset)
{
//sText = pReducer->nOffset ? _T("偏心异径管") : _T("同心异径管");
sText.Format(_T("偏心异径管DN%dxDN%d"), __max(pReducer->nD, pReducer->nTD), __min(pReducer->nD, pReducer->nTD));
}
else
{
sText.Format(_T("同心异径管DN%dxDN%d"), __max(pReducer->nD, pReducer->nTD), __min(pReducer->nD, pReducer->nTD));
}
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f L=%d"), pReducer->nD, pReducer->fThick, pReducer->nTD, pReducer->fThick, pReducer->nLen);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pReducer->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pReducer->szMertial);
sTemp.Format(_T("%s %s %s"), pReducer->szLevel, pReducer->szSys, pReducer->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pReducer->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, ReducerWeight(pReducer->nD, pReducer->nTD, pReducer->fThick, pReducer->nLen, 1));//1
m_wndBomList.SetItemText(nItem, 8, ReducerWeight(pReducer->nD, pReducer->nTD, pReducer->fThick, pReducer->nLen, pReducer->nCount));
}
//Tee
TeeBom *pTee = NULL;
typedef std::vector<TeeBom *>::iterator TBomIT;
//for (int i = 0;i < m_vtTeeBomPtrs.size();i++)
for (TBomIT it4 = m_vtTeeBomPtrs.begin(); it4 != m_vtTeeBomPtrs.end(); it4++)
{
//pTee = m_vtTeeBomPtrs[i];
pTee = (*it4);
if (sMatSelect.CompareNoCase(pTee->szMertial) != 0)
{
continue;
}
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pTee->szSN) > 0)
sText = pTee->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("三通");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f L=%d L2=%d B=%d"), pTee->nD, pTee->fThick, pTee->nTD, pTee->fThick, pTee->nL, pTee->nL1, pTee->nB);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pTee->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pTee->szMertial);
sTemp.Format(_T("%s %s %s"), pTee->szLevel, pTee->szSys, pTee->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pTee->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, TeeWeight(pTee->nD, pTee->fThick, pTee->nTD, pTee->nL, pTee->nL1, 1));//1
m_wndBomList.SetItemText(nItem, 8, TeeWeight(pTee->nD, pTee->fThick, pTee->nTD, pTee->nL, pTee->nL1, pTee->nCount));
}
//LTee
LTeeBom *pLTee = NULL;
typedef std::vector<LTeeBom *>::iterator LTBomIT;
//for (int i = 0;i < m_vtLTeeBomPtrs.size();i++)
for (LTBomIT it5 = m_vtLTeeBomPtrs.begin(); it5 != m_vtLTeeBomPtrs.end(); it5++)
{
//pLTee = m_vtLTeeBomPtrs[i];
pLTee = (*it5);
if (sMatSelect.CompareNoCase(pLTee->szMertial) != 0)
{
continue;
}
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pLTee->szSN) > 0)
sText = pLTee->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("L三通");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f E=%d M=%d B=%d"), pLTee->nD,
pLTee->fThick,
pLTee->nTD,
pLTee->fThick,
pLTee->nE,
pLTee->nM,
pLTee->nB);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pLTee->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pLTee->szMertial);
sTemp.Format(_T("%s %s %s"), pLTee->szLevel, pLTee->szSys, pLTee->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pLTee->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, TeeWeight(pLTee->nD, pLTee->fThick, pLTee->nTD, pLTee->nM + pLTee->nE, pLTee->nB, 1));//1
m_wndBomList.SetItemText(nItem, 8, TeeWeight(pLTee->nD, pLTee->fThick, pLTee->nTD, pLTee->nM + pLTee->nE, pLTee->nB, pLTee->nCount));
}
//WYE
WyeBom *pWye = NULL;
typedef std::vector<WyeBom *>::iterator WyBomIT;
//for (int i = 0;i < m_vtWyeBomPtrs.size();i++)
for (WyBomIT it6 = m_vtWyeBomPtrs.begin(); it6 != m_vtWyeBomPtrs.end(); it6++)
{
//pWye = m_vtWyeBomPtrs[i];
pWye = (*it6);
if (sMatSelect.CompareNoCase(pWye->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWye->szSN) > 0)
sText = pWye->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("Y三通");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f M=%d B=%d"), pWye->nD,
pWye->fThick, pWye->nTD, pWye->fThick, pWye->nM, pWye->nB);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWye->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWye->szMertial);
sTemp.Format(_T("%s %s %s"), pWye->szLevel, pWye->szSys, pWye->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pWye->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, TeeWeight(pWye->nD, pWye->fThick, pWye->nTD, pWye->nM, pWye->nB, 1));//1
m_wndBomList.SetItemText(nItem, 8, TeeWeight(pWye->nD, pWye->fThick, pWye->nTD, pWye->nM, pWye->nB, pWye->nCount));
}
//Cross
CrossBom *pCross = NULL;
typedef std::vector<CrossBom *>::iterator CBomIT;
//for (int i = 0;i < m_vtCrossBomPtrs.size();i++)
for (CBomIT it7 = m_vtCrossBomPtrs.begin(); it7 != m_vtCrossBomPtrs.end(); it7++)
{
//pCross = m_vtCrossBomPtrs[i];
pCross = (*it7);
if (sMatSelect.CompareNoCase(pCross->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pCross->szSN) > 0)
sText = pCross->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("四通");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f-D%dx%.1f L=%d B=%d"), pCross->nD, pCross->fThick, pCross->nTD, pCross->fThick, pCross->nL, pCross->nB);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pCross->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pCross->szMertial);
sTemp.Format(_T("%s %s %s"), pCross->szLevel, pCross->szSys, pCross->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pCross->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, TeeWeight(pCross->nD, pCross->fThick, pCross->nTD, pCross->nL, pCross->nB, 1));//1
m_wndBomList.SetItemText(nItem, 8, TeeWeight(pCross->nD, pCross->fThick, pCross->nTD, pCross->nL, pCross->nB, pCross->nCount));
}
//WCap
WCapBom *pWcap = NULL;
typedef std::vector<WCapBom *>::iterator WCBomIT;
//for (int i = 0;i <m_vtWCapBomPtrs.size();i++)
for (WCBomIT it8 = m_vtWCapBomPtrs.begin(); it8 != m_vtWCapBomPtrs.end(); it8++)
{
//pWcap = m_vtWCapBomPtrs[i];
pWcap = (*it8);
if (sMatSelect.CompareNoCase(pWcap->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWcap->szSN) > 0)
sText = pWcap->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("堵头");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pWcap->nD, pWcap->fThick, pWcap->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWcap->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWcap->szMertial);
sTemp.Format(_T("%s %s %s"), pWcap->szLevel, pWcap->szSys, pWcap->szApp);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pWcap->nD, pWcap->fThick, pWcap->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pWcap->nD, pWcap->fThick, pWcap->nBomSN, pWcap->nL * 1000));
}
WThroughBom *pThrough = NULL;
typedef std::vector< WThroughBom *>::iterator WThroughBomIT;
for (WThroughBomIT it81 = m_vtWThroughBomPtrs.begin(); it81 != m_vtWThroughBomPtrs.end(); it81++)
{
pThrough = (*it81);
if (sMatSelect.CompareNoCase(pThrough->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pThrough->szSN) > 0)
sText = pThrough->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pThrough->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pThrough->nD, pThrough->fThick, pThrough->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pThrough->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pThrough->szMertial);
sTemp.Format(_T("%s %s"), pThrough->szLevel, pThrough->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pThrough->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pThrough->nD, pThrough->fThick, pThrough->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pThrough->nD, pThrough->fThick, pThrough->nBomSN, pThrough->nL * 1000));
}
WUJoinBom *pWUJoin = NULL;
typedef std::vector< WUJoinBom *>::iterator WUJoinBomIT;
for (WUJoinBomIT it82 = m_vtWUJoinBomPtrs.begin(); it82 != m_vtWUJoinBomPtrs.end(); it82++)
{
pWUJoin = (*it82);
if (sMatSelect.CompareNoCase(pWUJoin->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWUJoin->szSN) > 0)
sText = pWUJoin->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWUJoin->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pWUJoin->nD, pWUJoin->fThick, pWUJoin->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWUJoin->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWUJoin->szMertial);
sTemp.Format(_T("%s %s"), pWUJoin->szLevel, pWUJoin->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pWUJoin->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pWUJoin->nD, pWUJoin->fThick, pWUJoin->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pWUJoin->nD, pWUJoin->fThick, pWUJoin->nBomSN, pWUJoin->nL * 1000));
}
WRJoinBom *pRJoinBom = NULL;
typedef std::vector< WRJoinBom *>::iterator WRJoinBomIT;
for (WRJoinBomIT it83 = m_vtWRJoinBomPtrs.begin(); it83 != m_vtWRJoinBomPtrs.end(); it83++)
{
pRJoinBom = (*it83);
if (sMatSelect.CompareNoCase(pRJoinBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pRJoinBom->szSN) > 0)
sText = pRJoinBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pRJoinBom->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pRJoinBom->nD, pRJoinBom->fThick, pRJoinBom->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pRJoinBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pRJoinBom->szMertial);
sTemp.Format(_T("%s %s"), pRJoinBom->szLevel, pRJoinBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pRJoinBom->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pRJoinBom->nD, pRJoinBom->fThick, pRJoinBom->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pRJoinBom->nD, pRJoinBom->fThick, pRJoinBom->nBomSN, pRJoinBom->nL * 1000));
}
WOJoinBom *pOJoinBom = NULL;
typedef std::vector< WOJoinBom *>::iterator WOJoinBomIT;
for (WOJoinBomIT it84 = m_vtWOJoinBomPtrs.begin(); it84 != m_vtWOJoinBomPtrs.end(); it84++)
{
pOJoinBom = (*it84);
if (sMatSelect.CompareNoCase(pOJoinBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pOJoinBom->szSN) > 0)
sText = pOJoinBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pOJoinBom->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pOJoinBom->nD, pOJoinBom->fThick, pOJoinBom->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pOJoinBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pOJoinBom->szMertial);
sTemp.Format(_T("%s %s"), pOJoinBom->szLevel, pOJoinBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pOJoinBom->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pOJoinBom->nD, pOJoinBom->fThick, pOJoinBom->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pOJoinBom->nD, pOJoinBom->fThick, pOJoinBom->nBomSN, pOJoinBom->nL * 1000));
}
WIJoinBom *pWIJoinBom = NULL;
typedef std::vector< WIJoinBom *>::iterator WIJoinBomIT;
for (WOJoinBomIT it85 = m_vtWIJoinBomPtrs.begin(); it85 != m_vtWIJoinBomPtrs.end(); it85++)
{
pWIJoinBom = (*it85);
if (sMatSelect.CompareNoCase(pWIJoinBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pWIJoinBom->szSN) > 0)
sText = pWIJoinBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pWIJoinBom->szApp;//name
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("D%dx%.1f L=%d"), pWIJoinBom->nD, pWIJoinBom->fThick, pWIJoinBom->nL);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pWIJoinBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pWIJoinBom->szMertial);
sTemp.Format(_T("%s %s"), pWIJoinBom->szLevel, pWIJoinBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pWIJoinBom->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, PipeWeight(pWIJoinBom->nD, pWIJoinBom->fThick, pWIJoinBom->nBomSN, 1000));//1米
m_wndBomList.SetItemText(nItem, 8, PipeWeight(pWIJoinBom->nD, pWIJoinBom->fThick, pWIJoinBom->nBomSN, pWIJoinBom->nL * 1000));
}
//Flange
WFlangeBom *pFlangeBom = NULL;
typedef std::vector<WFlangeBom *>::iterator WFlangeBomIT;
//for (int i = 0;i <m_vtWFlangeBomPtrs.size();i++)
for (WFlangeBomIT it9 = m_vtWFlangeBomPtrs.begin(); it9 != m_vtWFlangeBomPtrs.end(); it9++)
{
pFlangeBom = (*it9);
if (sMatSelect.CompareNoCase(pFlangeBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pFlangeBom->szSN) > 0)
sText = pFlangeBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("法兰");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d"), pFlangeBom->nDn);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pFlangeBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pFlangeBom->szMertial);
sTemp = pFlangeBom->szDescr;;
sTemp1.Format(_T("%s %s"), pFlangeBom->szLevel, pFlangeBom->szSys);
sTemp1.TrimLeft();
sTemp1.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pFlangeBom->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, FlangeWeight(pFlangeBom->dWD, pFlangeBom->dWh, pFlangeBom->nBomSN, 1));//1
m_wndBomList.SetItemText(nItem, 8, FlangeWeight(pFlangeBom->dWD, pFlangeBom->dWh, pFlangeBom->nBomSN, pFlangeBom->nCount));
}
//WFlxJoin
WFlxJoinBom *pFlxJnBom = NULL;
typedef std::vector<WFlxJoinBom *>::iterator WFlxJoinBomIT;
for (WFlxJoinBomIT it999 = m_vtWFlxJoinBomPtrs.begin(); it999 != m_vtWFlxJoinBomPtrs.end(); it999++)
{
pFlxJnBom = (*it999);
if (sMatSelect.CompareNoCase(pFlxJnBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pFlxJnBom->szSN) > 0)
sText = pFlxJnBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("卡箍");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d (%s)"), pFlxJnBom->nDn, pFlxJnBom->szDescr);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pFlxJnBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pFlxJnBom->szMertial);
sTemp.Format(_T("%s %s"), pFlxJnBom->szLevel, pFlxJnBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pFlxJnBom->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, FlangeWeight(pFlxJnBom->dWD, pFlxJnBom->dWh, pFlxJnBom->nBomSN, 1));//1
m_wndBomList.SetItemText(nItem, 8, FlangeWeight(pFlxJnBom->dWD, pFlxJnBom->dWh, pFlxJnBom->nBomSN, pFlxJnBom->nCount));
}
//RPBom
RPBom *pRPBom = NULL;
typedef std::vector<RPBom *>::iterator RPBomIT;
for (RPBomIT it898 = m_vtRPBomPtrs.begin(); it898 != m_vtRPBomPtrs.end(); it898++)
{
pRPBom = *it898;
if (sMatSelect.CompareNoCase(pRPBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pRPBom->szSN) > 0)
sText = pRPBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("补强圈");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d %.1f"), pRPBom->nDn, pRPBom->fThick);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pRPBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pRPBom->szMertial);
sTemp.Format(_T("%s %s"), pRPBom->szLevel, pRPBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pRPBom->pszArHandles);
m_wndBomList.SetItemText(nItem, 7, FlangeWeight(pRPBom->dD, pRPBom->fThick, pRPBom->nBomSN, 1));//1
m_wndBomList.SetItemText(nItem, 8, FlangeWeight(pRPBom->dD, pRPBom->fThick, pRPBom->nBomSN, pRPBom->nCount));
}
//HPBom
HPBom *pHPBom = NULL;
typedef std::vector<HPBom *>::iterator HPBomIT;
for (HPBomIT it798 = m_vtHPBomPtrs.begin(); it798 != m_vtHPBomPtrs.end(); it798++)
{
pHPBom = *it798;
if (sMatSelect.CompareNoCase(pHPBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pHPBom->szSN) > 0)
sText = pHPBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = _T("半管接头");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d"), pHPBom->nDn);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pHPBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pHPBom->szMertial);
sTemp.Format(_T("%s %s"), pHPBom->szLevel, pHPBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pHPBom->pszArHandles);
}
//SPBBom
SPBBom *pSPBBom = NULL;
typedef std::vector<SPBBom *>::iterator SPBBomIT;
for (SPBBomIT it698 = m_vtSPBomPtrs.begin(); it698 != m_vtSPBomPtrs.end(); it698++)
{
pSPBBom = *it698;
if (sMatSelect.CompareNoCase(pSPBBom->szMertial) != 0)
continue;
sText.Format(_T("%d"), m_wndBomList.GetItemCount() + 1);
if (_tcslen(pSPBBom->szSN) > 0)
sText = pSPBBom->szSN;
nItem = m_wndBomList.InsertItem(m_wndBomList.GetItemCount(), sText);
sText = pSPBBom->nKind == 0 ? _T("八字盲板") : _T("插板");
m_wndBomList.SetItemText(nItem, 1, sText);
sText.Format(_T("DN%d"), pSPBBom->nDn);
m_wndBomList.SetItemText(nItem, 2, sText);
sText = _T("个");
m_wndBomList.SetItemText(nItem, 3, sText);
sText.Format(_T("%d"), pSPBBom->nCount);
m_wndBomList.SetItemText(nItem, 4, sText);
m_wndBomList.SetItemText(nItem, 5, pSPBBom->szMertial);
sTemp.Format(_T("%s %s"), pSPBBom->szLevel, pSPBBom->szSys);
sTemp.TrimLeft();
sTemp.TrimRight();
m_wndBomList.SetItemText(nItem, 6, sTemp);
m_wndBomList.SetItemData(nItem, (DWORD_PTR)pSPBBom->pszArHandles);
}
}