法兰双击改用法兰对话框:AecDbEwFitting 法兰双击弹出 CFlangeDlg 并回写法兰/垫片数据
- DBL_AEC_DBEWFIT:GetFittingType()==eFlange 时改用 CFlangeDlg(其余管件仍用 CGJSXDlg) - 对话框初值取自实体专业数据(DN/压力/等级/项目/外径系列) - 确定后回写 PIPE_WD/PIPE_WTHICK/PIPE_THICK/PIPE_N/PIPE_FLANGF 及垫片数据并重绘 - 沿用接口位移后收缩相邻管段逻辑
This commit is contained in:
1 parent
a94ecf8d40
commit
d107cfd47f
1 file changed
+98
@@ -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();
|
||||
|
||||
//仅仅收缩管子
|
||||
|
||||
Reference in new issue
Block a user