法兰双击改用法兰对话框:AecDbEwFitting 法兰双击弹出 CFlangeDlg 并回写法兰/垫片数据 #3

Merged
gjm merged 1 commits from home-lenovo-legion-r9000/company-ai-dev AGit into main 2026-10-09 10:33:04 +08:00
Showing only changes of commit d107cfd47f - Show all commits
@@ -18032,6 +18032,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();
@@ -18095,6 +18192,7 @@ void DBL_AEC_DBEWFIT()
}
}
}
}
pEnt->close();
//仅仅收缩管子