Files
envi-code/SourceCode/Code2026/ElecCmd/ECableParamDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

422 lines
9.2 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();
}
}
}
}