422 lines
9.0 KiB
C++
422 lines
9.0 KiB
C++
#include "stdafx.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
#include "uihistory.h"
|
|
#include "AecDbCurveBase.h"
|
|
#include "ECableParamDlg.h"
|
|
#include "CXTLBDlg.h"
|
|
#include "CTCCZDlg.h"
|
|
|
|
#ifndef _ttof
|
|
#define _ttof(pszVal) _tcstod((pszVal), NULL)
|
|
#endif
|
|
|
|
IMPLEMENT_DYNAMIC(CECableParamDlg, CDialog)
|
|
|
|
CECableParamDlg::CECableParamDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CECableParamDlg::IDD, pParent)
|
|
, m_sW(_T("150"))
|
|
, m_sH(_T("80"))
|
|
, m_dt(1.0)
|
|
, m_bCover(TRUE)
|
|
, m_bSprt(FALSE)
|
|
, m_dRatio(0.75)
|
|
, m_nAlign(1)//中
|
|
, m_dEl(0)
|
|
, m_sKind(_T("槽式"))
|
|
, m_sNo(_T("QJ-1001"))
|
|
, m_sMat(_T("镀锌钢板"))
|
|
, m_sFactory(_T("扬州九一电器有限公司"))
|
|
, m_sSys(_T("强电"))
|
|
, m_bCenDraw(FALSE)
|
|
, m_sRem(_T("热镀锌"))
|
|
, m_dFullPer(75)
|
|
, m_nSysSplit(0)
|
|
, m_sSys2(_T(""))
|
|
, m_dLeftW(0)
|
|
, m_dFullPer2(75)
|
|
, m_dUsed1(0)
|
|
, m_dUsed2(0)
|
|
{
|
|
m_bEnableAlign = TRUE;
|
|
m_bEleReadOnly = FALSE;
|
|
m_bLoadLast = FALSE;
|
|
m_bLock = false;
|
|
|
|
GET_CACHE(CECableParamDlg
|
|
, %s%s%f%d%d%d%d%f%f%f%s%s%s%s%s%s
|
|
, &m_sW
|
|
, &m_sH
|
|
, &m_dt
|
|
, &m_bCover
|
|
, &m_bSprt
|
|
, &m_bCenDraw
|
|
, &m_nAlign
|
|
, &m_dRatio
|
|
, &m_dEl
|
|
, &m_dFullPer
|
|
, &m_sKind
|
|
, &m_sSys
|
|
, &m_sNo
|
|
, &m_sMat
|
|
, &m_sFactory
|
|
, &m_sRem );
|
|
|
|
CString sSyss = m_sSys;
|
|
int nPos = sSyss.Find(_T('|'), 0);
|
|
if (nPos != -1)
|
|
{
|
|
m_sSys = sSyss.Mid(0, nPos);
|
|
if (nPos < sSyss.GetLength() - 1)
|
|
m_sSys2 = sSyss.Mid(nPos + 1);
|
|
}
|
|
else
|
|
{
|
|
m_sSys = sSyss;
|
|
}
|
|
m_id.setNull();
|
|
}
|
|
|
|
CECableParamDlg::~CECableParamDlg()
|
|
{
|
|
}
|
|
|
|
void CECableParamDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_CBString(pDX, IDC_COMBO2, m_sW);
|
|
DDX_CBString(pDX, IDC_COMBO4, m_sH);
|
|
DDX_CBString(pDX, IDC_COMBO5, m_sSys);
|
|
DDX_Text(pDX, IDC_EDIT6, m_dt);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bCover);
|
|
DDX_Check(pDX, IDC_CHECK2, m_bSprt);
|
|
DDX_Text(pDX, IDC_EDIT5, m_dRatio);
|
|
DDX_CBIndex(pDX, IDC_COMBO1, m_nAlign);
|
|
DDX_Text(pDX, IDC_EDIT7, m_dEl);
|
|
DDX_CBString(pDX, IDC_COMBO3, m_sKind);
|
|
DDX_Text(pDX, IDC_EDIT8, m_sNo);
|
|
DDX_Text(pDX, IDC_EDIT3, m_sMat);
|
|
DDX_Text(pDX, IDC_EDIT4, m_sFactory);
|
|
DDX_Check(pDX, IDC_CHECK3, m_bCenDraw);
|
|
DDX_Text(pDX, IDC_EDIT9, m_sRem);
|
|
DDX_Text(pDX, IDC_EDIT10, m_dFullPer);
|
|
DDX_Control(pDX, IDC_COMBO1, m_wndAlignCombo);
|
|
DDX_Control(pDX, IDC_EDIT7, m_wndEditEl);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nSysSplit);
|
|
DDX_CBString(pDX, IDC_COMBO10, m_sSys2);
|
|
DDX_Text(pDX, IDC_EDIT12, m_dLeftW);
|
|
DDX_Text(pDX, IDC_EDIT11, m_dFullPer2);
|
|
DDX_Control(pDX, IDC_COMBO2, m_wndComboW);
|
|
DDX_Control(pDX, IDC_COMBO4, m_wndComboH);
|
|
DDX_Text(pDX, IDC_EDIT1, m_dUsed1);
|
|
DDX_Text(pDX, IDC_EDIT2, m_dUsed2);
|
|
DDX_Control(pDX, IDC_STATIC_US1, m_wndSUs1);
|
|
DDX_Control(pDX, IDC_STATIC_US2, m_wndSUs2);
|
|
DDX_Control(pDX, IDC_BUTTON3, m_wndReset1);
|
|
DDX_Control(pDX, IDC_BUTTON5, m_wndReset2);
|
|
DDX_Control(pDX, IDC_EDIT1, m_wndEditUsed1);
|
|
DDX_Control(pDX, IDC_EDIT2, m_wndEditUsed2);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CECableParamDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CECableParamDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_CHECK2, &CECableParamDlg::OnBnClickedCheck2)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CECableParamDlg::OnBnClickedButton1)
|
|
ON_BN_CLICKED(IDC_BUTTON3, &CECableParamDlg::OnBnClickedButton3)
|
|
ON_BN_CLICKED(IDC_BUTTON5, &CECableParamDlg::OnBnClickedButton5)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CECableParamDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_wndAlignCombo.EnableWindow(m_bEnableAlign);
|
|
|
|
m_wndEditEl.SetReadOnly(m_bEleReadOnly);
|
|
|
|
if (m_bLock)//锁定标高
|
|
{
|
|
GetDlgItem(IDC_EDIT7)->EnableWindow(FALSE);
|
|
}
|
|
UpdateData(FALSE);
|
|
|
|
OnBnClickedCheck2();
|
|
|
|
m_wndComboW.SetWindowText(m_sW);
|
|
m_wndComboH.SetWindowText(m_sH);
|
|
|
|
m_wndSUs1.ShowWindow(m_id.isNull() ? SW_HIDE : SW_SHOW);
|
|
m_wndSUs2.ShowWindow(m_id.isNull() ? SW_HIDE : SW_SHOW);
|
|
m_wndReset1.ShowWindow(m_id.isNull() ? SW_HIDE : SW_SHOW);
|
|
m_wndReset2.ShowWindow(m_id.isNull() ? SW_HIDE : SW_SHOW);
|
|
m_wndEditUsed1.ShowWindow(m_id.isNull() ? SW_HIDE : SW_SHOW);
|
|
m_wndEditUsed2.ShowWindow(m_id.isNull() ? SW_HIDE : SW_SHOW);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CECableParamDlg::EnableLoadLast(BOOL bLoadLast)
|
|
{
|
|
m_bLoadLast = bLoadLast;
|
|
}
|
|
|
|
void CECableParamDlg::SetEleReadOnly(BOOL bEleReadOnly,double dEl)
|
|
{
|
|
m_bEleReadOnly = bEleReadOnly;m_dEl = dEl;
|
|
}
|
|
|
|
void CECableParamDlg::SetShowParam(const AecHvac::DuctParam& param)
|
|
{
|
|
double dSize[9];
|
|
memcpy(dSize,param.dSize,sizeof(double)*9);
|
|
|
|
struct resbuf rb;
|
|
acedGetVar(_T("INSUNITS"), &rb);
|
|
if (rb.resval.rint == AcDb::kUnitsMeters)
|
|
{
|
|
dSize[0] *= 1000;
|
|
dSize[1] *= 1000;
|
|
dSize[2] *= 1000;
|
|
}
|
|
|
|
m_sW.Format(_T("%d"),(int)(dSize[0] + 0.5) );
|
|
m_sH.Format(_T("%d"),(int)(dSize[1] + 0.5) );
|
|
m_dLeftW = param.dSize[4];
|
|
|
|
m_dt = dSize[2];
|
|
m_nAlign = param.m_nAlign;
|
|
|
|
m_dEl = param.m_dEl;
|
|
|
|
if (!m_bLock)
|
|
{
|
|
m_dEl -= 0.5 * param.dSize[1];//调整到底部
|
|
}
|
|
|
|
m_dRatio = param.m_dRatio;
|
|
m_bCover = param.m_bCover;
|
|
|
|
m_bSprt = param.m_bSpart;
|
|
m_nSysSplit = param.m_nSysSplit;
|
|
|
|
m_bCenDraw = param.m_bCenDraw;
|
|
m_dFullPer = param.m_dFullPer;
|
|
m_dFullPer2 = param.m_dFullPer2;
|
|
|
|
m_dUsed1 = param.m_dFillUsed;
|
|
m_dUsed2 = param.m_dFillUsed2;
|
|
|
|
m_sNo = param.szNo;
|
|
m_sMat = param.szMat;
|
|
m_sFactory = param.szFat;
|
|
m_sKind = param.szType;
|
|
m_sSys2 = _T("");
|
|
CString sSyss = param.szSys;
|
|
sSyss.TrimRight();
|
|
int nPos = sSyss.Find(_T('|'), 0);
|
|
if (nPos != -1)
|
|
{
|
|
m_sSys = sSyss.Mid(0, nPos);
|
|
if (nPos < sSyss.GetLength()-1)
|
|
m_sSys2 = sSyss.Mid(nPos + 1);
|
|
}
|
|
else
|
|
{
|
|
m_sSys = param.szSys;
|
|
}
|
|
m_sRem = param.szRem;
|
|
}
|
|
|
|
void CECableParamDlg::GetPipeParam(AecHvac::DuctParam* pParam)
|
|
{
|
|
/*
|
|
typedef struct DuctParam
|
|
{
|
|
ESection eType; //截面类型
|
|
double dSize[9];//尺寸 宽度,高度,厚度
|
|
int m_nAlign;//对其方式
|
|
double m_dEl; //标高
|
|
double m_dRatio;//曲率半径
|
|
|
|
int m_bCover; //盖板 桥架用
|
|
int m_bSpart; //隔板 桥架用
|
|
|
|
TCHAR szNo[33]; //编号
|
|
TCHAR szMat[33];//材质
|
|
TCHAR szFat[33];//厂家
|
|
TCHAR szType[33]//类型
|
|
TCHAR szExt[33];//其他
|
|
|
|
}DUCTPARAM;
|
|
*/
|
|
|
|
if (pParam != NULL)
|
|
{
|
|
memset(pParam,0,sizeof(AecHvac::DuctParam));
|
|
pParam->eType = eRect;
|
|
pParam->m_app = WPipe::eBridge;
|
|
|
|
pParam->dSize[0] = _ttof(m_sW);
|
|
pParam->dSize[1] = _ttof(m_sH);
|
|
pParam->dSize[2] = m_dt;
|
|
pParam->dSize[4] = m_dLeftW;
|
|
|
|
struct resbuf rb;
|
|
acedGetVar(_T("INSUNITS"), &rb);
|
|
if (rb.resval.rint == AcDb::kUnitsMeters)
|
|
{
|
|
pParam->dSize[0] *= 0.001;
|
|
pParam->dSize[1] *= 0.001;
|
|
pParam->dSize[2] *= 0.001;
|
|
}
|
|
|
|
pParam->m_nAlign = m_nAlign;
|
|
pParam->m_dEl = m_dEl;
|
|
if (!m_bLock)//如果不锁定调整到底部
|
|
{
|
|
pParam->m_dEl += 0.5 * pParam->dSize[1];//调整到中心
|
|
}
|
|
|
|
pParam->m_dRatio = m_dRatio;
|
|
pParam->m_bCover = m_bCover;
|
|
pParam->m_bSpart = m_bSprt;
|
|
pParam->m_nSysSplit = m_nSysSplit;
|
|
pParam->m_bCenDraw = m_bCenDraw;
|
|
pParam->m_dFullPer = m_dFullPer;
|
|
pParam->m_dFullPer2 = m_dFullPer2;
|
|
_tcscpy(pParam->szNo,m_sNo);
|
|
_tcscpy(pParam->szMat,m_sMat);
|
|
_tcscpy(pParam->szFat,m_sFactory);
|
|
_tcscpy(pParam->szType,m_sKind);
|
|
|
|
CString sSyss;
|
|
sSyss.Format(_T("%s|%s"), m_sSys,m_sSys2);
|
|
_tcscpy(pParam->szSys, sSyss);
|
|
_tcscpy(pParam->szRem,m_sRem);
|
|
}
|
|
}
|
|
|
|
void CECableParamDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
SET_CACHE(CECableParamDlg
|
|
, %s%s%f%d%d%d%d%f%f%f%s%s%s%s%s%s
|
|
, m_sW
|
|
, m_sH
|
|
, m_dt
|
|
, m_bCover
|
|
, m_bSprt
|
|
, m_bCenDraw
|
|
, m_nAlign
|
|
, m_dRatio
|
|
, m_dEl
|
|
, m_dFullPer
|
|
, m_sKind
|
|
, m_sSys
|
|
, m_sNo
|
|
, m_sMat
|
|
, m_sFactory
|
|
, m_sRem);
|
|
|
|
m_sSys2.TrimRight();
|
|
m_sSys.TrimRight();
|
|
|
|
if (m_sSys.IsEmpty())
|
|
{
|
|
AfxMessageBox(_T("没有指定桥架分层系统用途!"));
|
|
return;
|
|
}
|
|
|
|
if (m_bSprt)
|
|
{
|
|
if ( (m_dLeftW - _ttoi(m_sW) ) > 1.e-3 || m_dLeftW < 0)
|
|
{
|
|
AfxMessageBox(_T("桥架分层,左侧宽度不合理!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (m_bSprt)//分层
|
|
{
|
|
if (m_sSys2.IsEmpty() || m_sSys.IsEmpty())
|
|
{
|
|
AfxMessageBox(_T("桥架有隔板,但没有指定桥架分层系统用途!"));
|
|
return;
|
|
}
|
|
|
|
if (m_sSys2.CompareNoCase(m_sSys) == 0)
|
|
{
|
|
AfxMessageBox(_T("桥架有隔板,但桥架分层系统用途相同!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
OnOK();
|
|
}
|
|
|
|
void CECableParamDlg::OnBnClickedCheck2()
|
|
{
|
|
UpdateData();
|
|
|
|
GetDlgItem(IDC_STATIC_U)->SetWindowText(m_bSprt ? _T("左侧系统用途:") : _T("系统用途:"));
|
|
GetDlgItem(IDC_EDIT11)->EnableWindow(m_bSprt);
|
|
GetDlgItem(IDC_COMBO10)->EnableWindow(m_bSprt);
|
|
GetDlgItem(IDC_STATIC_U2)->EnableWindow(m_bSprt);
|
|
}
|
|
|
|
void CECableParamDlg::OnBnClickedButton1()
|
|
{
|
|
UpdateData();
|
|
CString sTmp = m_sW;
|
|
m_sW = m_sH;
|
|
m_sH = sTmp;
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CECableParamDlg::OnBnClickedButton3()
|
|
{
|
|
//弹出重置的填充率
|
|
CTCCZDlg dlg;
|
|
dlg.m_dFullPer = m_dFullPer;
|
|
dlg.m_dFillUsed = m_dUsed1;
|
|
|
|
if (IDOK == dlg.DoModal())
|
|
{
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, m_id, AcDb::kForWrite))
|
|
{
|
|
AecDbCurveBase *pCurBase = AecDbCurveBase::cast(pEnt);
|
|
if (pCurBase != NULL)
|
|
{
|
|
pCurBase->GetSpecialtyData(AcDb::kForWrite)->SetAt(KEY_FILLUSED, dlg.m_dFillUsed);
|
|
}
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CECableParamDlg::OnBnClickedButton5()
|
|
{
|
|
if (m_bSprt)
|
|
{
|
|
//弹出重置的填充率
|
|
CTCCZDlg dlg;
|
|
dlg.m_dFullPer = m_dFullPer2;
|
|
dlg.m_dFillUsed = m_dUsed2;
|
|
|
|
if (IDOK == dlg.DoModal())
|
|
{
|
|
AcDbEntity *pEnt = NULL;
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, m_id, AcDb::kForRead))
|
|
{
|
|
AecDbCurveBase *pCurBase = AecDbCurveBase::cast(pEnt);
|
|
if (pCurBase != NULL)
|
|
{
|
|
pCurBase->GetSpecialtyData(AcDb::kForWrite)->SetAt(KEY_FILLUSED2, dlg.m_dFillUsed);
|
|
}
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
}
|