diff --git a/SourceCode/Code2026/PipelineCmd/command.cpp b/SourceCode/Code2026/PipelineCmd/command.cpp index ac3f31f..b858087 100644 --- a/SourceCode/Code2026/PipelineCmd/command.cpp +++ b/SourceCode/Code2026/PipelineCmd/command.cpp @@ -18033,6 +18033,103 @@ void DBL_AEC_DBEWFIT() AecDbEwFitting* pEw = AecDbEwFitting::cast(pEnt); if (pEw != NULL) { + //法兰:双击弹出法兰对话框,把选中的法兰/垫片数据应用到该法兰对象 + if (pEw->GetFittingType() == eFlange) + { + CString dbPath = FilePath::GetSysDir(); + dbPath += _T("\\Plumbing.db"); + + CUIISQLiteServer * pADOServer = new CUIISQLiteServer; + if (!pADOServer->InitADOServer(dbPath)) + { + AfxMessageBox(_T("数据库驱动加载数据库Plumbing.db失败!")); + delete pADOServer; + pEnt->close(); + return; + } + + //取当前法兰参数作为对话框初值 + const AecDbObjXDataMap* pMap = pEw->GetSpecialtyData(AcDb::kForRead); + + double dDN = 0.0; + pMap->GetAt(PIPE_DN, dDN); + + double dPre = 1.0; + pMap->GetAt(PIPE_PRESSURE, dPre); + + CString sODNo, sPro, sLevel; + pMap->GetAt(PIPE_ODSN, sODNo); + pMap->GetAt(DOC_PROJECT, sPro); + pMap->GetAt(PIPE_LEVEL, sLevel); + + if (!sLevel.IsEmpty() && sPro.IsEmpty()) + { + AecDbObjXDataMap xMap; + KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xMap); + xMap.GetAt(DOC_PROJECT, sPro); + } + + { + CAcModuleResourceOverride rcTmp; + CFlangeDlg flgDlg; + flgDlg.SetAdoDb(pADOServer); + flgDlg.SetDN((int)dDN); + flgDlg.SetPressure(dPre); + flgDlg.SetLevel(sODNo, sPro, sLevel); + + if (IDOK == flgDlg.DoModal()) + { + //提取旧的接口 + pEw->GetInterface(arOldInfs); + + CStringArray arValuesF, arValuesG; + flgDlg.GetFlangeValues(arValuesF); + flgDlg.GetGasketValues(arValuesG); + + //列: 0公称直径 1法兰外径 2法兰高度 3法兰厚度 4法兰颈 5端面 + if (arValuesF.GetSize() >= 5) + { + double dWD = _ttof(arValuesF.GetAt(1)); //法兰盘外径 + double dWh = _ttof(arValuesF.GetAt(3)); //法兰盘厚度 + double dThk = _ttof(arValuesF.GetAt(3)); //法兰总厚 + double dN = _ttof(arValuesF.GetAt(4)); //法兰颈 + + CString sEndF = _T("FF"); + if (arValuesF.GetSize() > 5) sEndF = arValuesF.GetAt(5); + + pEw->upgradeOpen(); + + AecDbObjXDataMap* pXDataMapSrc = pEw->GetSpecialtyData(AcDb::kForWrite); + + pXDataMapSrc->SetAt(PIPE_WD, dWD); + pXDataMapSrc->SetAt(PIPE_WTHICK, dWh); + pXDataMapSrc->SetAt(PIPE_THICK, dThk); + pXDataMapSrc->SetAt(PIPE_N, dN); + pXDataMapSrc->SetAt(PIPE_FLANGF, sEndF); + + if (arValuesG.GetSize() > 4) + { + pXDataMapSrc->SetAt(PIPE_GASKETM, arValuesG.GetAt(1)); + pXDataMapSrc->SetAt(PIPE_PRESSURE, _ttof(arValuesG.GetAt(2))); + pXDataMapSrc->RemoveAt(PIPE_GASKET); + pXDataMapSrc->SetAt(PIPE_GASKET, _ttof(arValuesG.GetAt(3))); + pXDataMapSrc->SetAt(PIPE_GASKETDSC, arValuesG.GetAt(4)); + } + + pEw->ReCreateDraw2d(); + pEw->ReCreateDraw3d(); + + pEw->downgradeOpen(); + + pEw->GetInterface(arNewInfs); + } + } + } + + delete pADOServer; + } + else + { WPipe::PipeParam* pParam = NULL; pParam = pEw->GetPipeParam(); @@ -18094,6 +18191,7 @@ void DBL_AEC_DBEWFIT() pEw->GetInterface(arNewInfs); } } + } } pEnt->close();