#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 vtPipeBomPtrs; //CMapStringToPtr mapPipeBom; //弯头 ElbowBom* pElbowBom = NULL; //std::vector vtElbowBomPtrs; //CMapStringToPtr mapElbowBom; //变径弯头 RElbowBom* pRElbowBom = NULL; //大小头 ReducerBom* pReducerBom = NULL; //std::vector vtReducerBomPtrs; //CMapStringToPtr mapReducerBom; //三通 TeeBom* pTeeBom = NULL; //std::vector vtTeeBomPtrs; //CMapStringToPtr mapTeeBom; //L三通 LTeeBom* pLTeeBom = NULL; //std::vector vtLTeeBomPtrs; //CMapStringToPtr mapLTeeBom; //WYE WyeBom* pWyeBom = NULL; //std::vector vtWyeBomPtrs; //CMapStringToPtr mapWyeBom; //四通 CrossBom* pCrossBom = NULL; //std::vector vtCrossBomPtrs; //CMapStringToPtr mapCrossBom; //堵头 WCapBom* pWCap = NULL; //std::vector vtWCapBomPtrs; //CMapStringToPtr mapWCapBom; //补强圈 RPBom *pRPBom = NULL; //std::vector m_vtRPBomPtrs; //CMapStringToPtr m_mapRPBom; //半管接头 HPBom *pHPBom = NULL; //std::vector m_vtHPBomPtrs; //CMapStringToPtr m_mapHPBom; //八字盲板 插板 SPBBom *pSPBBom = NULL; //std::vector m_vtSPBomPtrs; //CMapStringToPtr m_mapSPBom; //PVC接头 WThroughBom* pWThroughBom = NULL; WUJoinBom* pWUJoinBoms = NULL; WRJoinBom* pWRJoinBoms = NULL; WOJoinBom* pWOJoinBoms = NULL; WIJoinBom* pWIJoinBoms = NULL; //线管 //std::vector 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 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 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::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::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::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::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::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::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::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::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::iterator WFlangeBomIT; //for (int i = 0;i pszArHandles); delete pFlangeBom; } WFlxJoinBom *pFlxJoinBom = NULL; typedef std::vector::iterator WFlxJoinBomIT; //for (int i = 0;i pszArHandles); delete pFlxJoinBom; } m_vtWFlxJoinBomPtrs.clear(); m_vtWFlangeBomPtrs.clear(); m_mapWFlangeBom.RemoveAll(); //设备 m_mapName2Count.RemoveAll(); //角钢 AngSteelBom* pASteelBom = NULL; typedef std::vector::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::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::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::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::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::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::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::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::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::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::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::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::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::iterator WCBomIT; //for (int i = 0;i 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::iterator WFlangeBomIT; //for (int i = 0;i 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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::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::iterator WCBomIT; //for (int i = 0;i 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::iterator WFlangeBomIT; //for (int i = 0;i 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::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::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::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::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); } }