2026-10-04 00:04:20 +08:00
#include "stdafx.h"
2026-09-28 15:28:50 +08:00
#include "PipeMajDlg.h"
#include "KTModelLayoutXData.h"
#include "coretools.h"
#include "PipelineTools.h"
#ifndef _BYGB_
2026-10-04 00:04:20 +08:00
#define _BYGB_ _T("按执行标准")
2026-09-28 15:28:50 +08:00
#endif
extern double g_minRadio ;
IMPLEMENT_DYNAMIC ( CPipeMajDlg , CDialog )
CPipeMajDlg :: CPipeMajDlg ( CWnd * pParent /*=NULL*/ )
: CDialog ( CPipeMajDlg :: IDD , pParent )
2026-10-04 00:04:20 +08:00
, m_sMertialFit ( _T ( "碳钢" ))
, m_sMertial ( _T ( "碳钢" ))
2026-09-28 15:28:50 +08:00
{
m_pDb = NULL ;
m_nDN = 100 ;
m_dOD = 107 ;
m_dt = 3.5 ;
m_dPress = 1.0 ;
m_sPress = _T ( "1.6A" );
m_bPressureSel = TRUE ;
m_bUpdateMat = FALSE ;
m_nColorIndex = 256 ;
m_nOnlyDN = 0 ;
m_nRadioOn = 1 ;
}
CPipeMajDlg ::~ CPipeMajDlg ()
{
}
void CPipeMajDlg :: DoDataExchange ( CDataExchange * pDX )
{
CDialog :: DoDataExchange ( pDX );
DDX_Control ( pDX , IDC_PIPELIST , m_wndPipeList );
DDX_Control ( pDX , IDC_LISTELBOWRAD , m_wndElbowradList );
DDX_Control ( pDX , IDC_LIST1 , m_wndPressList );
DDX_Control ( pDX , IDC_LIST2 , m_wndPressList2 );
DDX_Control ( pDX , IDC_COMBO_SYS , m_wndComboPipeSys );
DDX_Text ( pDX , IDC_EDIT1 , m_nDN );
DDX_Text ( pDX , IDC_EDIT2 , m_dOD );
DDX_Text ( pDX , IDC_EDIT3 , m_dt );
DDX_Text ( pDX , IDC_EDIT4 , m_sPress );
DDX_Text ( pDX , IDC_EDIT5 , m_dRatio );
DDX_Radio ( pDX , IDC_RADIO6 , m_nRadioOn );
DDX_Text ( pDX , IDC_EDIT6 , m_dPress );
DDX_Check ( pDX , IDC_CHECK1 , m_bPressureSel );
DDX_Check ( pDX , IDC_CHECK2 , m_bUpdateMat );
DDX_CBString ( pDX , IDC_COMBOMATERS , m_sMertial );
DDX_Control ( pDX , IDC_COMBOMATERS , m_wndComboMaters );
DDX_Control ( pDX , IDC_COMBOMATERSFIT , m_wndComboMatersFit );
DDX_CBString ( pDX , IDC_COMBOMATERSFIT , m_sMertialFit );
DDX_CBString ( pDX , IDC_COMBO_SYS , m_sPipeSys );
}
BEGIN_MESSAGE_MAP ( CPipeMajDlg , CDialog )
ON_BN_CLICKED ( IDC_CHECK1 , & CPipeMajDlg :: OnCheckPressSwitch )
ON_BN_CLICKED ( IDC_CHECK2 , & CPipeMajDlg :: OnCheckUpdateMat )
END_MESSAGE_MAP ()
//UPVC CPVC PVC-C PP-H (PE) HDPE
bool CPipeMajDlg :: IsPlasticsMat ( int nPos , CString & sODNo )
{
const CString sPlastic = _T ( "UPVC CPVC PVC-C PP-H (PE) PE100 HDPE" );
CStringArray arTxts ;
CoreTools :: SplitStrintToArray ( sPlastic , arTxts , _T ( ' ' ));
for ( int i = 0 ; i < arTxts . GetSize (); i ++ )
{
if ( nPos == 0 )
{
if ( m_sMertial . Find ( arTxts . GetAt ( i )) != - 1 )
{
sODNo = arTxts . GetAt ( i );
2026-10-04 00:04:20 +08:00
//以下 PVC-C PP-H PE100 的国标数据 替代 PVC
2026-09-28 15:28:50 +08:00
if ( sODNo . CompareNoCase ( _T ( "PVC-C" )) == 0 )
sODNo = _T ( "CPVC" );
if ( sODNo . Find ( _T ( "(PE)" )) == 0 )
sODNo = _T ( "PE" );
if ( sODNo . CompareNoCase ( _T ( "PE100" )) == 0 )
sODNo = _T ( "PE" );
if ( sODNo . CompareNoCase ( _T ( "(PE100)" )) == 0 )
sODNo = _T ( "PE" );
return true ;
}
}
else
{
if ( m_sMertialFit . Find ( arTxts . GetAt ( i )) != - 1 )
{
sODNo = arTxts . GetAt ( i );
return true ;
}
}
}
return false ;
}
BOOL CPipeMajDlg :: IsGSFMaterial ( CString & sODNo )
{
2026-10-04 00:04:20 +08:00
//目前只能按照材质判断
if ( m_sMertial . Find ( _T ( "衬塑" )) != - 1 ||
2026-09-28 15:28:50 +08:00
m_sMertial . Find ( _T ( "HG/T 20538" )) != - 1 )
{
sODNo = _T ( "GSF" );
return TRUE ;
}
return FALSE ;
}
BOOL CPipeMajDlg :: IsRCPMaterial ( CString & sODNo )
{
2026-10-04 00:04:20 +08:00
//目前只能按照材质判断
if ( m_sMertial . Find ( _T ( "混凝土" )) != - 1 )
2026-09-28 15:28:50 +08:00
{
sODNo = _T ( "RCP" );
return TRUE ;
}
return FALSE ;
}
BOOL CPipeMajDlg :: OnInitDialog ()
{
CDialog :: OnInitDialog ();
//4K
int iWidth = GetSystemMetrics ( SM_CXSCREEN );
int iHeight = GetSystemMetrics ( SM_CYSCREEN );
int nAdd = 0 ;
if ( iWidth >= 3800 && iHeight >= 2400 ) //4K
{
nAdd = 45 ;
}
//LIST
m_wndPipeList . SetExtendedStyle ( LVS_EX_FULLROWSELECT );
m_wndPipeList . InsertColumn ( 0 , _T ( "DN" ), LVCFMT_LEFT , 70 + nAdd );
2026-10-04 00:04:20 +08:00
m_wndPipeList . InsertColumn ( 1 , _T ( "外径" ), LVCFMT_LEFT , 70 + nAdd );
m_wndPipeList . InsertColumn ( 2 , _T ( "壁厚" ), LVCFMT_LEFT , 60 + nAdd );
m_wndPipeList . InsertColumn ( 3 , _T ( "重量" ), LVCFMT_LEFT , 62 + nAdd );
m_wndPipeList . InsertColumn ( 4 , _T ( "表号" ), LVCFMT_LEFT , 65 + nAdd );
m_wndPipeList . InsertColumn ( 5 , _T ( "外径系列" ), LVCFMT_CENTER , 80 + nAdd );
2026-09-28 15:28:50 +08:00
//EXT
2026-10-04 00:04:20 +08:00
m_wndPipeList . InsertColumn ( 6 , _T ( "执行标准" ), LVCFMT_LEFT , 300 + nAdd );
//m_wndPipeList.InsertColumn(7, _T("物料描述"), LVCFMT_LEFT, 0);
//m_wndPipeList.InsertColumn(8, _T("规格型号"), LVCFMT_LEFT, 0);
2026-09-28 15:28:50 +08:00
if ( m_pDb != NULL )
{
CString sODNo = m_param . szODSn ;
2026-10-04 00:04:20 +08:00
//再次确认
2026-09-28 15:28:50 +08:00
IsGSFMaterial ( sODNo );
IsPlasticsMat ( 0 , sODNo );
InitPipeList ( 50000 , sODNo );
InitPressFromDb ();
CStringArray arVals ;
PipelineTools :: getPipeSysRecord ( m_pDb , m_sPipeSys , arVals );
if ( arVals . GetSize () >= 5 )
{
m_nColorIndex = _ttoi ( arVals . GetAt ( 2 ));
}
}
if ( m_bPressureSel )
{
m_wndPressList2 . ShowWindow ( SW_SHOW );
m_wndPressList . ShowWindow ( SW_HIDE );
}
else
{
m_wndPressList2 . ShowWindow ( SW_HIDE );
m_wndPressList . ShowWindow ( SW_SHOW );
}
m_wndComboMatersFit . EnableWindow ( m_bUpdateMat );
m_wndComboMaters . EnableWindow ( m_bUpdateMat );
m_wndComboPipeSys . EnableWindow ( m_bUpdateMat );
UpdateData ( FALSE );
return TRUE ;
}
void CPipeMajDlg :: OnOK ()
{
UpdateData ();
POSITION ps = m_wndPipeList . GetFirstSelectedItemPosition ();
if ( ps != NULL )
{
int nItem = m_wndPipeList . GetNextSelectedItem ( ps );
if ( nItem != - 1 )
{
m_param . m_dDN = _ttof ( m_wndPipeList . GetItemText ( nItem , 0 ));
m_param . m_dOD = _ttof ( m_wndPipeList . GetItemText ( nItem , 1 ));
m_param . m_dThick = _ttof ( m_wndPipeList . GetItemText ( nItem , 2 ));
_tcscpy ( m_param . szODSn , m_wndPipeList . GetItemText ( nItem , 5 ));
_tcscpy ( m_param . szStdNo , m_wndPipeList . GetItemText ( nItem , 6 ));
}
else
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "请选择管线规格系列!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
CString sText , sSQL ;
int nSel = m_wndElbowradList . GetCurSel ();
if ( nSel != - 1 )
{
2026-10-04 00:04:20 +08:00
//曲率
2026-09-28 15:28:50 +08:00
m_wndElbowradList . GetText ( nSel , sText );
if ( sText . CompareNoCase ( _BYGB_ ) == 0 )
{
2026-10-04 00:04:20 +08:00
m_param . m_nRadioOn = TRUE ; //按国标结构长度
m_param . m_dRRatio = g_minRadio ; //最小
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//根据ODSN查询数据库 默认曲率
sSQL . Format ( _T ( "select distinct [弯头曲率] from [AecElbowData] where [外径系列]='%s' order by [弯头曲率]" ), m_param . szODSn );
2026-09-28 15:28:50 +08:00
CStringArray arRad ;
m_pDb -> GetSelData ( sSQL , arRad );
if ( arRad . GetSize () > 0 )
{
m_param . m_dRRatio = _ttof ( arRad . GetAt ( 0 ));
}
}
else
{
m_param . m_dRRatio = _ttof ( sText );
}
}
2026-10-04 00:04:20 +08:00
//不可变换等级
2026-09-28 15:28:50 +08:00
/*nSel = m_wndPressList.GetCurSel();
if (nSel != -1)
{
sText = _T("");
m_wndPressList.GetText(nSel,sText);
_tcscpy(m_param.szLevel,(LPCTSTR)sText);
}*/
m_dPress = 1.0 ;
nSel = m_wndPressList2 . GetCurSel ();
if ( nSel != - 1 )
{
sText = _T ( "" );
m_wndPressList2 . GetText ( nSel , sText );
m_dPress = _ttof ( sText );
}
2026-10-04 00:04:20 +08:00
if ( m_param . m_nConnectType == 3 ) //法兰管
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//查询法兰管的法兰数据
2026-09-28 15:28:50 +08:00
QueryFlangOnPipe ();
}
if ( m_bUpdateMat )
{
CString sODNo = m_param . szODSn ;
CString sBk = m_sMertial ;
m_sMertial = m_param . szMertial ;
BOOL bIsPla1 = IsPlasticsMat ( 0 , sODNo );
BOOL bIsGasf1 = IsGSFMaterial ( sODNo );
BOOL bIsRcp1 = IsRCPMaterial ( sODNo );
m_sMertial = sBk ;
BOOL bIsPla2 = IsPlasticsMat ( 0 , m_sMertial );
BOOL bIsGasf2 = IsGSFMaterial ( sODNo );
BOOL bIsRcp2 = IsRCPMaterial ( sODNo );
//1.
if ( bIsPla1 && ! bIsPla2 )
{
if ( sBk . CompareNoCase ( m_param . szMertial ) != 0 )
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "不可以从塑料管切换成非塑料管!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
if ( ! bIsPla1 && bIsPla2 )
{
if ( sBk . CompareNoCase ( m_param . szMertial ) != 0 )
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "不可以从非塑料管切换成塑料管!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
//2.
if ( bIsGasf1 && ! bIsGasf2 )
{
if ( sBk . CompareNoCase ( m_param . szMertial ) != 0 )
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "不可以从衬塑管切换成非衬塑管!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
if ( ! bIsGasf1 && bIsGasf2 )
{
if ( sBk . CompareNoCase ( m_param . szMertial ) != 0 )
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "不可以从非衬塑管切换成衬塑管!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
//3.
if ( bIsRcp1 && ! bIsGasf2 )
{
if ( sBk . CompareNoCase ( m_param . szMertial ) != 0 )
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "不可以从水泥管切换成非水泥管!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
if ( ! bIsRcp1 && bIsGasf2 )
{
if ( sBk . CompareNoCase ( m_param . szMertial ) != 0 )
{
2026-10-04 00:04:20 +08:00
AfxMessageBox ( _T ( "不可以从非水泥管切换成水泥管!" ));
2026-09-28 15:28:50 +08:00
return ;
}
}
_tcscpy ( m_param . szMertial , m_sMertial );
_tcscpy ( m_param . szMertialFit , m_sMertialFit );
2026-10-04 00:04:20 +08:00
if ( m_sPipeSys != _T ( "不修改管线系统" ))
2026-09-28 15:28:50 +08:00
{
_tcscpy ( m_param . szSys , m_sPipeSys );
CStringArray arVals ;
PipelineTools :: getPipeSysRecord ( m_pDb , m_sPipeSys , arVals );
if ( arVals . GetSize () >= 5 )
{
m_nColorIndex = _ttoi ( arVals . GetAt ( 2 ));
}
}
}
EndDialog ( IDOK );
}
void CPipeMajDlg :: OnCheckPressSwitch ()
{
UpdateData ();
if ( m_bPressureSel )
{
m_wndPressList2 . ShowWindow ( SW_SHOW );
m_wndPressList . ShowWindow ( SW_HIDE );
}
else
{
m_wndPressList2 . ShowWindow ( SW_HIDE );
m_wndPressList . ShowWindow ( SW_SHOW );
}
}
void CPipeMajDlg :: OnCheckUpdateMat ()
{
UpdateData ();
m_wndComboMaters . EnableWindow ( m_bUpdateMat );
m_wndComboMatersFit . EnableWindow ( m_bUpdateMat );
m_wndComboPipeSys . EnableWindow ( m_bUpdateMat );
}
void CPipeMajDlg :: QueryFlangOnPipe ()
{
double dWD , dWh , dd ;
if ( CoreTools :: QueryFlangData ( m_pDb
, m_param . m_dDN
, m_dPress
, dWD
, dWh
, dd
, dd
, CoreTools :: GetCurrentProject ()
, m_param . szLevel ))
{
m_param . m_dInterfaceL = dWh ;
m_param . m_dInterfaceD = dWD ;
}
}
void CPipeMajDlg :: SetDbServer ( CUIISQLiteServer * pDb )
{
m_pDb = pDb ;
}
void CPipeMajDlg :: InitPipeList ( int nMaxDN , CString sODNo )
{
if ( m_pDb != NULL )
{
m_wndPipeList . DeleteAllItems ();
2026-10-04 00:04:20 +08:00
//公称直径系列
2026-09-28 15:28:50 +08:00
bool bMODSN = false ;
CString sSQL , sText , sODAWhere = _T ( "" );
if ( sODNo . CompareNoCase ( _T ( "A" )) == 0 || sODNo . CompareNoCase ( _T ( "B" )) == 0 || sODNo . IsEmpty ())
{
2026-10-04 00:04:20 +08:00
sODAWhere = _T ( "([外径系列]='A' or [外径系列]='B' or [外径系列]='S')" );
2026-09-28 15:28:50 +08:00
bMODSN = true ;
}
else
{
2026-10-04 00:04:20 +08:00
sODAWhere . Format ( _T ( "[外径系列]='%s'" ), sODNo );
2026-09-28 15:28:50 +08:00
}
/*
2026-10-04 00:04:20 +08:00
//公称直径系列
2026-09-28 15:28:50 +08:00
CString sSQL, sText;
#ifdef HAITIAN
if (m_nOnlyDN == 0)
{
2026-10-04 00:04:20 +08:00
sSQL = _T("select [公称直径],[外径],[壁厚],[重量],[执行标准],[物料描述],[规格型号] from AecOD order by [公称直径],[壁厚]");
2026-09-28 15:28:50 +08:00
}
else
{
2026-10-04 00:04:20 +08:00
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[执行标准],[物料描述],[规格型号] from AecOD where [公称直径]=%d order by [公称直径],[壁厚]"), m_nOnlyDN);
2026-09-28 15:28:50 +08:00
}
#else
if (m_nOnlyDN == 0)
{
2026-10-04 00:04:20 +08:00
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]<%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), nMaxDN, sODNo);
2026-09-28 15:28:50 +08:00
}
else
{
2026-10-04 00:04:20 +08:00
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]=%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), m_nOnlyDN, sODNo);
2026-09-28 15:28:50 +08:00
}
#endif
CUIIValueTable table;
m_pDb->GetSelData(sSQL, table);
if (table.GetTableLogicSize() == 0)
{
2026-10-04 00:04:20 +08:00
//按外径选
sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [外径]<=%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), m_nOnlyDN, sODNo);
2026-09-28 15:28:50 +08:00
m_pDb->GetSelData(sSQL, table);
}*/
if ( m_nOnlyDN == 0 )
{
2026-10-04 00:04:20 +08:00
//sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]<%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), nMaxDN, sODAWhere);
2026-09-28 15:28:50 +08:00
if ( bMODSN )
{
2026-10-04 00:04:20 +08:00
sSQL . Format ( _T ( "select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]<=%d and %s order by [外径系列] desc" ), nMaxDN , sODAWhere );
2026-09-28 15:28:50 +08:00
}
else
{
2026-10-04 00:04:20 +08:00
sSQL . Format ( _T ( "select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]<=%d and %s order by [外径系列],[公称直径],[壁厚]" ), nMaxDN , sODAWhere );
2026-09-28 15:28:50 +08:00
}
}
else
{
2026-10-04 00:04:20 +08:00
//sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]=%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), m_nOnlyDN, sODAWhere);
sSQL . Format ( _T ( "select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]=%d and %s order by [外径系列],[公称直径],[壁厚] desc" ), m_nOnlyDN , sODAWhere ); //
2026-09-28 15:28:50 +08:00
}
CUIIValueTable table ;
m_pDb -> GetSelData ( sSQL , table );
if ( table . GetTableLogicSize () == 0 )
{
2026-10-04 00:04:20 +08:00
//按外径选
//sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [外径]<=%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), m_nOnlyDN, sODAWhere);
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//按外径选
2026-09-28 15:28:50 +08:00
int nDN = ( m_nOnlyDN == 0 ) ? nMaxDN : m_nOnlyDN ;
if ( bMODSN )
{
2026-10-04 00:04:20 +08:00
sSQL . Format ( _T ( "select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [外径]<=%d and %s order by [外径系列]" ), nDN , sODAWhere );
2026-09-28 15:28:50 +08:00
}
else
{
2026-10-04 00:04:20 +08:00
sSQL . Format ( _T ( "select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [外径]<=%d and %s order by [外径系列],[公称直径],[壁厚]" ), nDN , sODAWhere );
2026-09-28 15:28:50 +08:00
}
m_pDb -> GetSelData ( sSQL , table );
}
table . ShowToListCtrl ( & m_wndPipeList );
CString sDnold , sThick , sODNo2 ;
sDnold . Format ( _T ( "%d" ), m_nDN );
int iStart = - 1 ;
bool bFind = false ;
for ( int i = 0 ; i < m_wndPipeList . GetItemCount (); i ++ )
{
sText = m_wndPipeList . GetItemText ( i , 0 );
sThick = m_wndPipeList . GetItemText ( i , 2 );
sODNo2 = m_wndPipeList . GetItemText ( i , 5 );
if ( sText . CompareNoCase ( sDnold ) == 0 && iStart == - 1 )
iStart = i ;
if ( sText . CompareNoCase ( sDnold ) == 0 && fabs ( _ttof ( sThick ) - m_dt ) < 1.e-6 && sODNo2 . CompareNoCase ( sODNo ) == 0 )
{
iStart = i ;
m_wndPipeList . SetItemState ( i , LVIS_SELECTED , LVIS_SELECTED );
m_wndPipeList . EnsureVisible ( i , TRUE );
bFind = true ;
break ;
}
}
if ( ! bFind )
{
if ( iStart == - 1 ) iStart = 0 ;
if ( m_wndPipeList . GetItemCount () > 0 )
m_wndPipeList . SetItemState ( iStart , LVIS_SELECTED , LVIS_SELECTED );
m_wndPipeList . EnsureVisible ( iStart , TRUE );
}
2026-10-04 00:04:20 +08:00
//曲率半径
//sSQL = _T("select [曲率半径] from AecElbowradius order by [曲率半径]");
sSQL . Format ( _T ( "select distinct [弯头曲率] from AecElbowData where %s order by [弯头曲率]" ), sODAWhere );
2026-09-28 15:28:50 +08:00
int nSel = 0 ;
CString sRat ;
CStringArray arVals ;
arVals . Add ( _BYGB_ );
m_pDb -> GetSelData ( sSQL , arVals );
for ( i = 0 ; i < arVals . GetSize (); i ++ )
{
m_wndElbowradList . InsertString ( i , arVals . GetAt ( i ));
sRat = arVals . GetAt ( i );
if ( fabs ( _ttof ( sRat ) - m_param . m_dRRatio ) < 1.e-6 )
{
nSel = i ;
if (( m_param . m_dRRatio - g_minRadio ) < 1.e-3 )
nSel = 0 ;
}
}
m_wndElbowradList . SetCurSel ( nSel );
2026-10-04 00:04:20 +08:00
//材质
2026-09-28 15:28:50 +08:00
arVals . RemoveAll ();
2026-10-04 00:04:20 +08:00
sSQL = _T ( "select [材质] from AecMaterial where [类型]='管道'" );
2026-09-28 15:28:50 +08:00
m_pDb -> GetSelData ( sSQL , arVals );
for ( i = 0 ; i < arVals . GetSize (); i ++ )
{
m_wndComboMaters . InsertString ( i , arVals . GetAt ( i ));
if ( m_sMertial . CompareNoCase ( arVals . GetAt ( i )) == 0 )
{
m_wndComboMaters . SetCurSel ( i );
}
}
2026-10-04 00:04:20 +08:00
//材质
2026-09-28 15:28:50 +08:00
arVals . RemoveAll ();
2026-10-04 00:04:20 +08:00
sSQL = _T ( "select [材质] from AecMaterial where [类型]='管件'" );
2026-09-28 15:28:50 +08:00
m_pDb -> GetSelData ( sSQL , arVals );
for ( i = 0 ; i < arVals . GetSize (); i ++ )
{
m_wndComboMatersFit . InsertString ( i , arVals . GetAt ( i ));
if ( m_sMertialFit . CompareNoCase ( arVals . GetAt ( i )) == 0 )
{
m_wndComboMatersFit . SetCurSel ( i );
}
}
2026-10-04 00:04:20 +08:00
// 初始化管线系统
2026-09-28 15:28:50 +08:00
{
CString sStd ( CoreTools :: getCurrentPipeSysTblName ()), sTemp ;
//sSQL = _T("select tablename from wpipecfg where currstd=1");
//m_pDb->GetSelData(sSQL, sStd);
sSQL . Format ( _T ( "select distinct system from %s" ), sStd );
CStringArray arSyses ;
m_pDb -> GetSelData ( sSQL , arSyses );
2026-10-04 00:04:20 +08:00
m_wndComboPipeSys . AddString ( _T ( "不修改管线系统" ));
2026-09-28 15:28:50 +08:00
for ( int i = 0 ; i < arSyses . GetSize (); i ++ )
{
sTemp = arSyses . GetAt ( i );
m_wndComboPipeSys . AddString ( sTemp );
}
2026-10-04 00:04:20 +08:00
//再从图层中加一遍
2026-09-28 15:28:50 +08:00
m_wndComboPipeSys . SetCurSel ( 0 );
}
}
}
void CPipeMajDlg :: InitPressFromDb ()
{
2026-10-04 00:04:20 +08:00
//获取项目名称
2026-09-28 15:28:50 +08:00
AecDbObjXDataMap xDataMap ;
2026-10-04 00:04:20 +08:00
xDataMap . SetAt ( DOC_TRADE , WPipe :: ePetro ); //应用行业,石油
xDataMap . SetAt ( DOC_SCALE , _T ( "1:50" )); //出图比例
xDataMap . SetAt ( DOC_PLOTWIDTH , 0.5 ); //最小打印线宽
xDataMap . SetAt ( DOC_DPLOTWIDTH , 0.5 ); //双线打印线宽
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
xDataMap . SetAt ( DOC_WELDDIA , 1.0 ); //焊点直径
xDataMap . SetAt ( DOC_PIPEMINDIA , 65.0 ); //最小管道直径
xDataMap . SetAt ( DOC_PIPEMAXDIA , 200.0 ); //最大管线直径
xDataMap . SetAt ( DOC_PERELBOWDIA , 40.0 ); //垂直弯头直径
xDataMap . SetAt ( DOC_BREAKSPACE , 2.0 ); //交叉断线间距
xDataMap . SetAt ( DOC_UNIT , 0 ); //单位
xDataMap . SetAt ( DOC_DIMTERM , 0 ); //标注端符
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
xDataMap . SetAt ( DOC_DIMTXTH , 2.0 ); //标注文字高度
xDataMap . SetAt ( DOC_DIMTXTF , 0.7 ); //标注文字宽度系数
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
xDataMap . SetAt ( DOC_EQPTXTH , 2.0 ); //设备标注文字高度
xDataMap . SetAt ( DOC_EQPTXTF , 1.0 ); //设备标注文字宽度系数
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
xDataMap . SetAt ( DOC_STRTXTH , 2.0 ); //结构标注文字高度
xDataMap . SetAt ( DOC_STRTXTF , 0.7 ); //结构标注文字宽度系数
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
xDataMap . SetAt ( DOC_SCRIPTT , _T ( "{0}{-}{1}{-}{2}{-}{3}" )); //上标脚本
xDataMap . SetAt ( DOC_SCRIPTB , _T ( "{4}{-}{5}" )); //下标脚本
xDataMap . SetAt ( DOC_ELTYPE , 0 ); //标高设置
xDataMap . SetAt ( DOC_ELDESCR , _T ( "--" )); //标高文本
2026-09-28 15:28:50 +08:00
if ( ! KTModelLayoutXData :: ReadModelXData ( KT_PIPEINIT , xDataMap ))
{
2026-10-04 00:04:20 +08:00
acedAlert ( _T ( " \n 系统未初始化!" ));
2026-09-28 15:28:50 +08:00
return ;
}
CString sProject ;
xDataMap . GetAt ( DOC_PIDPROJECT , sProject );
CString sSQL ;
2026-10-04 00:04:20 +08:00
sSQL . Format ( _T ( "select [等级名称] from AecSpecname where [项目名称]='%s'" ), sProject );
2026-09-28 15:28:50 +08:00
CStringArray arValues ;
m_pDb -> GetSelData ( sSQL , arValues );
m_wndPressList . ResetContent ();
for ( int i = 0 ; i < arValues . GetSize (); i ++ )
{
m_wndPressList . InsertString ( i , arValues . GetAt ( i ));
}
2026-10-04 00:04:20 +08:00
int nIndex = m_wndPressList . FindString ( 0 , m_param . szLevel ); //压力等级
2026-09-28 15:28:50 +08:00
if ( nIndex != - 1 )
{
m_wndPressList . SetCurSel ( nIndex );
}
else
{
m_wndPressList . SetCurSel ( 0 );
}
2026-10-04 00:04:20 +08:00
//压力表
sSQL . Format ( _T ( "select [压力] from aecpressure order by [压力]" ));
2026-09-28 15:28:50 +08:00
arValues . RemoveAll ();
m_pDb -> GetSelData ( sSQL , arValues );
m_wndPressList2 . ResetContent ();
for ( int i = 0 ; i < arValues . GetSize (); i ++ )
{
m_wndPressList2 . InsertString ( i , arValues . GetAt ( i ));
if ( fabs ( _ttof ( arValues . GetAt ( i )) - m_dPress ) < 1.e-3 )
{
m_wndPressList2 . SetCurSel ( i );
}
}
}
void CPipeMajDlg :: SetShowParam ( WPipe :: PipeParam * pParam )
{
if ( pParam != NULL )
{
double dScale = CoreTools :: IsMetersUnit () ? 1000. : 1 ;
memcpy ( & m_param , pParam , sizeof ( WPipe :: PipeParam ));
m_nDN = ( int )( pParam -> m_dDN * dScale + 0.5 );
m_dOD = pParam -> m_dOD * dScale ;
m_dt = pParam -> m_dThick * dScale ;
m_dRatio = pParam -> m_dRRatio ;
m_nRadioOn = 1 ; // pParam->m_nRadioOn;
m_sPress = pParam -> szLevel ;
m_dPress = pParam -> m_dPress ;
m_sMertial = pParam -> szMertial ;
m_sMertialFit = pParam -> szMertialFit ;
2026-10-04 00:04:20 +08:00
//兼容
if ( m_sMertial . Find ( _T ( "衬塑" )) != - 1 )
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_sMertial = _T ( "衬塑管" );
m_sMertialFit = _T ( "衬塑管" );
2026-09-28 15:28:50 +08:00
_tcscpy ( m_param . szMertial , m_sMertial );
_tcscpy ( m_param . szMertialFit , m_sMertialFit );
}
}
}
void CPipeMajDlg :: GetPipeParam ( WPipe :: PipeParam * pParam ) const
{
if ( pParam != NULL )
{
memcpy ( pParam , & m_param , sizeof ( WPipe :: PipeParam ));
}
}