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