594 lines
16 KiB
C++
594 lines
16 KiB
C++
// DrawWaterTankDlg.cpp : implementation file
|
||||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "DrawWaterTankDlg.h"
|
|||
|
|
#include "SelWaterTankDlg.h"
|
|||
|
|
|
|||
|
|
#include <dbrect.h>
|
|||
|
|
#include <dbWaterTank.h>
|
|||
|
|
#include <tapi.h>
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
#define new DEBUG_NEW
|
|||
|
|
#undef THIS_FILE
|
|||
|
|
static char THIS_FILE[] = __FILE__;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//extern TARCH_IMPEXP int DragMovePickSet(PickSet &ss, const TCHAR *pszPrompt, const XPoint &ptBase, XPoint &ptFinal);
|
|||
|
|
//extern GEOAPI int DragPickSet1(PickSet &ss, XPoint &ptBase);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// CDrawWaterTankDlg dialog
|
|||
|
|
|
|||
|
|
void DrawDashLine(XPoint pt1, XPoint pt2, double nScale)
|
|||
|
|
{
|
|||
|
|
XLine line5(pt1, pt2, 1);
|
|||
|
|
line5.Make();
|
|||
|
|
Entity entLast;
|
|||
|
|
entLast.GetLast();
|
|||
|
|
AcDbObjectId eId;
|
|||
|
|
AcDbEntity *pEnt = NULL;
|
|||
|
|
acdbGetObjectId(eId, entLast);
|
|||
|
|
acdbOpenObject(pEnt, eId, AcDb::kForWrite);
|
|||
|
|
if(!pEnt)
|
|||
|
|
return;
|
|||
|
|
pEnt->setLinetype(_T("DASH"));
|
|||
|
|
pEnt->setLinetypeScale(nScale);
|
|||
|
|
pEnt->close();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//***************************************************************************************************
|
|||
|
|
// 编辑水箱
|
|||
|
|
//***************************************************************************************************
|
|||
|
|
int EditWaterTank(AcDbObjectId id)
|
|||
|
|
{
|
|||
|
|
if(!id)
|
|||
|
|
return RTERROR;
|
|||
|
|
int iLength(0), iWidth(0), iHeight(0);
|
|||
|
|
CTemporaryResourceOverride vTemp;
|
|||
|
|
CDrawWaterTankDlg dlg;
|
|||
|
|
|
|||
|
|
OPENOBJ_BEGIN(id, AcDb::kForRead, TDbWaterTank, pEquip);
|
|||
|
|
if(pEquip){
|
|||
|
|
dlg.m_nHeight = pEquip->GetHeight();
|
|||
|
|
dlg.m_nLength = pEquip->GetLength();
|
|||
|
|
dlg.m_nWidth = pEquip->GetWidth();
|
|||
|
|
dlg.m_bNeedHole = pEquip->IsNeedHole();
|
|||
|
|
dlg.m_bNeedSleeper = pEquip->IsNeedSleeper();
|
|||
|
|
dlg.m_iNum = pEquip->GetSleeperNum();
|
|||
|
|
dlg.m_nHoleWidth = pEquip->GetHoleWidth();
|
|||
|
|
dlg.m_nLowLine = pEquip->GetLowLine();
|
|||
|
|
dlg.m_nHighLine = pEquip->GetHighLine();
|
|||
|
|
dlg.m_iSleepPos = pEquip->GetSleeperPos();
|
|||
|
|
dlg.m_iShape = pEquip->GetShape();
|
|||
|
|
dlg.m_iType = pEquip->GetShowType();
|
|||
|
|
dlg.m_dSleeperHeight = pEquip->GetSleeperWidth(); //枕木高
|
|||
|
|
dlg.m_nInEle = pEquip->GetWaterInEle();
|
|||
|
|
dlg.m_nOutEle = pEquip->GetRushEle();
|
|||
|
|
dlg.m_nHoleType = pEquip->HoleIsRect();
|
|||
|
|
dlg.m_dSleeperWidth = pEquip->GetSpare(); //枕木宽 modified by cet 2009.11.11
|
|||
|
|
dlg.m_dSleeperLen = pEquip->GetSleeperLen(); // 枕木长 cet 2011.4.22 add
|
|||
|
|
dlg.m_dTankElev = pEquip->GetElev();// zxl 2012.12.03 add
|
|||
|
|
}
|
|||
|
|
OPENOBJ_END();
|
|||
|
|
if(dlg.DoModal() != IDOK)
|
|||
|
|
return 1;
|
|||
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbWaterTank, pEquip);
|
|||
|
|
if(pEquip){
|
|||
|
|
pEquip->SetHeight(dlg.m_nHeight);
|
|||
|
|
pEquip->SetLength(dlg.m_nLength);
|
|||
|
|
pEquip->SetWidth(dlg.m_nWidth);
|
|||
|
|
pEquip->SetNeedHole(dlg.m_bNeedHole);
|
|||
|
|
pEquip->SetNeedSleeper(dlg.m_bNeedSleeper);
|
|||
|
|
pEquip->SetSleeperNum(dlg.m_iNum);
|
|||
|
|
pEquip->SetHoleWidth(dlg.m_nHoleWidth);
|
|||
|
|
pEquip->SetLowLine(dlg.m_nLowLine);
|
|||
|
|
pEquip->SetHighLine(dlg.m_nHighLine);
|
|||
|
|
pEquip->SetSleeperPos(dlg.m_iSleepPos);
|
|||
|
|
pEquip->SetShape(dlg.m_iShape);
|
|||
|
|
pEquip->SetShowType(dlg.m_iType);
|
|||
|
|
pEquip->SetSleeperWidth(dlg.m_dSleeperHeight); //枕木高
|
|||
|
|
pEquip->SetWaterInEle(dlg.m_nInEle);
|
|||
|
|
pEquip->SetRushEle(dlg.m_nOutEle);
|
|||
|
|
pEquip->SetHoleRect(dlg.m_nHoleType);
|
|||
|
|
pEquip->SetSpare(dlg.m_dSleeperWidth); //枕木宽 modified by cet 2009.11.11
|
|||
|
|
pEquip->SetSleeperLen(dlg.m_dSleeperLen); // 枕木长 cet 2011.4.22 add
|
|||
|
|
pEquip->SetElev(dlg.m_dTankElev);// zxl 2012.12.03 add
|
|||
|
|
|
|||
|
|
//调整人孔位置
|
|||
|
|
TDbRect rect1;
|
|||
|
|
XPoint ptIns;
|
|||
|
|
ptIns = pEquip->GetLocation();
|
|||
|
|
double nLength = dlg.m_nLength * 1000;
|
|||
|
|
double nWidth = dlg.m_nWidth * 1000;
|
|||
|
|
double nHoleWidth = dlg.m_nHoleWidth * 1000;
|
|||
|
|
rect1.SetSizeX(nLength);
|
|||
|
|
rect1.SetSizeY(nWidth);
|
|||
|
|
rect1.SetCenter(ptIns);
|
|||
|
|
rect1.SetRotation(pEquip->GetRotation()); // cet 2011.9.15 add
|
|||
|
|
if(dlg.m_iShape == 1)
|
|||
|
|
{
|
|||
|
|
XPoint ptHole;
|
|||
|
|
XPoint ptHoleBefore = pEquip->GetHoleInsert();
|
|||
|
|
double dMin = ptHoleBefore.Distance2d(rect1.GetUpLeft());
|
|||
|
|
ptHole = rect1.GetUpLeft();
|
|||
|
|
ptHole = Wcs2Ucs(ptHole); // cet 2011.9.15
|
|||
|
|
ads_polar(ptHole, 0, nHoleWidth/2, ptHole);
|
|||
|
|
ads_polar(ptHole, PI/2, -nHoleWidth/2, ptHole);
|
|||
|
|
ptHole = Ucs2Wcs(ptHole); // cet 2011.9.15
|
|||
|
|
|
|||
|
|
if (ptHoleBefore.Distance2d(rect1.GetUpRight()) < dMin)
|
|||
|
|
{
|
|||
|
|
ptHole = rect1.GetUpRight();
|
|||
|
|
ptHole = Wcs2Ucs(ptHole); // cet 2011.9.15
|
|||
|
|
ads_polar(ptHole, 0, -nHoleWidth/2, ptHole);
|
|||
|
|
ads_polar(ptHole, PI/2, -nHoleWidth/2, ptHole);
|
|||
|
|
ptHole = Ucs2Wcs(ptHole); // cet 2011.9.15
|
|||
|
|
dMin = ptHoleBefore.Distance2d(rect1.GetUpRight());
|
|||
|
|
}
|
|||
|
|
if (ptHoleBefore.Distance2d(rect1.GetLowLeft()) < dMin)
|
|||
|
|
{
|
|||
|
|
ptHole = rect1.GetLowLeft();
|
|||
|
|
ptHole = Wcs2Ucs(ptHole); // cet 2011.9.15
|
|||
|
|
ads_polar(ptHole, 0, nHoleWidth/2, ptHole);
|
|||
|
|
ads_polar(ptHole, PI/2, nHoleWidth/2, ptHole);
|
|||
|
|
ptHole = Ucs2Wcs(ptHole); // cet 2011.9.15
|
|||
|
|
dMin = ptHoleBefore.Distance2d(rect1.GetLowLeft());
|
|||
|
|
}
|
|||
|
|
if (ptHoleBefore.Distance2d(rect1.GetLowRight()) < dMin)
|
|||
|
|
{
|
|||
|
|
ptHole = rect1.GetLowRight();
|
|||
|
|
ptHole = Wcs2Ucs(ptHole); // cet 2011.9.15
|
|||
|
|
ads_polar(ptHole, 0, -nHoleWidth/2, ptHole);
|
|||
|
|
ads_polar(ptHole, PI/2, nHoleWidth/2, ptHole);
|
|||
|
|
ptHole = Ucs2Wcs(ptHole); // cet 2011.9.15
|
|||
|
|
dMin = ptHoleBefore.Distance2d(rect1.GetLowRight());
|
|||
|
|
}
|
|||
|
|
pEquip->SetHoleInsert(ptHole);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
OPENOBJ_END();
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void DrawWaterTank()
|
|||
|
|
{
|
|||
|
|
CTemporaryResourceOverride over;
|
|||
|
|
CDrawWaterTankDlg dlg;
|
|||
|
|
if(dlg.DoModal() != IDOK)
|
|||
|
|
return;
|
|||
|
|
XPoint ptIns, ptHole;
|
|||
|
|
if(ads_getpoint(NULL, _T("\n请点取水箱插入点<退出>:"), ptIns) != RTNORM)
|
|||
|
|
return;
|
|||
|
|
ptIns = Ucs2Wcs(ptIns);
|
|||
|
|
InitLayer(LAY_TWT_WATERTANK);
|
|||
|
|
//XPushVarStr clayer(_T("CLAYER"), LAY_TWT_WATERTANK); cet 2011.10.11 del 导致产生"CLAYER"图层
|
|||
|
|
|
|||
|
|
double nLength = dlg.m_nLength * 1000;
|
|||
|
|
double nWidth = dlg.m_nWidth * 1000;
|
|||
|
|
double nHoleWidth = dlg.m_nHoleWidth * 1000;
|
|||
|
|
TDbRect rect1;
|
|||
|
|
rect1.SetSizeX(nLength);
|
|||
|
|
rect1.SetSizeY(nWidth);
|
|||
|
|
rect1.SetCenter(ptIns);
|
|||
|
|
rect1.SetRotation(Ucs2Wcs(0.0)); // cet 2011.9.15 add
|
|||
|
|
ptHole = rect1.GetUpLeft();
|
|||
|
|
|
|||
|
|
ptHole = Wcs2Ucs(ptHole); // cet 2011.9.15 add
|
|||
|
|
ads_polar(ptHole, 0, nHoleWidth/2, ptHole);
|
|||
|
|
ads_polar(ptHole, PI/2, -nHoleWidth/2, ptHole);
|
|||
|
|
ptHole = Ucs2Wcs(ptHole); // cet 2011.9.15 add
|
|||
|
|
|
|||
|
|
CString csDwb = g_csDwbPath + _T("TwtSys");
|
|||
|
|
XString xsTmp;
|
|||
|
|
if(LoadDwbBlock(csDwb, _T("00000415"), xsTmp) != RTNORM) //锅盖
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
TDbWaterTank *pTank = new TDbWaterTank;
|
|||
|
|
pTank->SetLocation(ptIns);
|
|||
|
|
if(dlg.m_iShape != 1)
|
|||
|
|
pTank->SetHoleInsert(ptIns);
|
|||
|
|
else
|
|||
|
|
pTank->SetHoleInsert(ptHole);
|
|||
|
|
pTank->SetDashLayer(InitDashLayer(_T("TWT_DASH")));
|
|||
|
|
pTank->SetHeight(dlg.m_nHeight);
|
|||
|
|
pTank->SetWidth(dlg.m_nWidth);
|
|||
|
|
pTank->SetLength(dlg.m_nLength);
|
|||
|
|
pTank->SetNeedHole(dlg.m_bNeedHole);
|
|||
|
|
pTank->SetNeedSleeper(dlg.m_bNeedSleeper);
|
|||
|
|
pTank->SetSleeperPos(dlg.m_iSleepPos);
|
|||
|
|
pTank->SetLowLine(dlg.m_nLowLine);
|
|||
|
|
pTank->SetHighLine(dlg.m_nHighLine);
|
|||
|
|
pTank->SetSleeperNum(dlg.m_iNum);
|
|||
|
|
pTank->SetShowType(dlg.m_iType);
|
|||
|
|
pTank->SetElev(dlg.m_dTankElev);// zxl 2012.12.03 add
|
|||
|
|
pTank->SetBlock3d(GetBlockIdFromString(xsTmp));
|
|||
|
|
pTank->SetShape(dlg.m_iShape);
|
|||
|
|
pTank->SetSleeperWidth(dlg.m_dSleeperHeight); //枕木高
|
|||
|
|
pTank->SetSpare(dlg.m_dSleeperWidth); //枕木宽 modified by cet 2009.11.11
|
|||
|
|
pTank->SetSleeperLen(dlg.m_dSleeperLen); // 枕木长 cet 2011.4.22 addd
|
|||
|
|
pTank->SetHoleWidth(dlg.m_nHoleWidth);
|
|||
|
|
pTank->SetHoleRect(dlg.m_nHoleType);
|
|||
|
|
pTank->SetRotation(Ucs2Wcs(0.0)); // cet 2011.8.29 add
|
|||
|
|
pTank->setLayer(LAY_TWT_WATERTANK); // cet 2011.10.11 add
|
|||
|
|
AcDbObjectId id = AddToCurrentSpace(pTank, Adesk::kTrue);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
double CDrawWaterTankDlg::m_nHeight = 2;
|
|||
|
|
double CDrawWaterTankDlg::m_nLength = 3;
|
|||
|
|
double CDrawWaterTankDlg::m_nWidth = 2;
|
|||
|
|
int CDrawWaterTankDlg::m_iType = 0;
|
|||
|
|
int CDrawWaterTankDlg::m_iShape = 1; // cet 2011.9.14 add
|
|||
|
|
double CDrawWaterTankDlg::m_dTankElev = 0.0;
|
|||
|
|
|
|||
|
|
CString CDrawWaterTankDlg::m_csCubage = _T("0.5");
|
|||
|
|
|
|||
|
|
CDrawWaterTankDlg::CDrawWaterTankDlg(CWnd* pParent /*=NULL*/)
|
|||
|
|
: CDialog(CDrawWaterTankDlg::IDD, pParent)
|
|||
|
|
{
|
|||
|
|
//{{AFX_DATA_INIT(CDrawWaterTankDlg)
|
|||
|
|
m_bNeedHole = TRUE;
|
|||
|
|
m_bNeedSleeper = TRUE;
|
|||
|
|
m_iNum = 3;
|
|||
|
|
m_iSleepPos = 0;
|
|||
|
|
m_nHighLine = 1.8;
|
|||
|
|
m_nHoleWidth = 0.5;
|
|||
|
|
m_nLowLine = 0;
|
|||
|
|
m_nInEle = 0.0;
|
|||
|
|
m_nOutEle = 0.0;
|
|||
|
|
m_nHoleType = 0;
|
|||
|
|
m_dSleeperHeight = 0.5;
|
|||
|
|
m_dSleeperWidth = 0.2;
|
|||
|
|
m_dSleeperLen = 0.0;
|
|||
|
|
//}}AFX_DATA_INIT
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::DoDataExchange(CDataExchange* pDX)
|
|||
|
|
{
|
|||
|
|
CDialog::DoDataExchange(pDX);
|
|||
|
|
//{{AFX_DATA_MAP(CDrawWaterTankDlg)
|
|||
|
|
DDX_Control(pDX, IDC_SPIN_NUM, m_spinNum);
|
|||
|
|
DDX_Check(pDX, IDC_CHECK_NEED_HOLE, m_bNeedHole);
|
|||
|
|
DDX_Check(pDX, IDC_CHECK_NEED_SLEEPER, m_bNeedSleeper);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_NUM, m_iNum);
|
|||
|
|
DDX_CBIndex(pDX, IDC_COMBO_POS2, m_iSleepPos);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_HIGH_LINE, m_nHighLine);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_HOLE_WIDTH, m_nHoleWidth);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_LOW_LINE, m_nLowLine);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_IN_ELE, m_nInEle);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_OUT_ELE, m_nOutEle);
|
|||
|
|
DDX_Radio(pDX, IDC_RADIORECTAN, m_nHoleType);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_SLEEPER_HEIGHT, m_dSleeperHeight);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_SLEEPER_WIDTH, m_dSleeperWidth);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_SLEEPER_LEN, m_dSleeperLen);
|
|||
|
|
DDX_Radio(pDX, IDC_RADIO_SHAPE1, m_iShape);
|
|||
|
|
DDX_Radio(pDX, IDC_RADIO_TYPE1, m_iType);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_CUBAGE, m_csCubage);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_ELEV, m_dTankElev);
|
|||
|
|
//}}AFX_DATA_MAP
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
BEGIN_MESSAGE_MAP(CDrawWaterTankDlg, CDialog)
|
|||
|
|
//{{AFX_MSG_MAP(CDrawWaterTankDlg)
|
|||
|
|
ON_BN_CLICKED(IDC_RADIO_SHAPE1, OnRadioShape1)
|
|||
|
|
ON_BN_CLICKED(IDC_RADIO_SHAPE2, OnRadioShape2)
|
|||
|
|
ON_BN_CLICKED(IDC_BUTTON_STANDARD, OnButtonStandard)
|
|||
|
|
ON_BN_CLICKED(IDC_CHECK_NEED_HOLE, OnCheckNeedHole)
|
|||
|
|
ON_BN_CLICKED(IDC_CHECK_NEED_SLEEPER, OnCheckNeedSleeper)
|
|||
|
|
ON_BN_CLICKED(IDC_RADIO_SHAPE3, OnRadioShape3)
|
|||
|
|
ON_EN_CHANGE(IDC_EDIT_LENGTH, OnChangeEditLength)
|
|||
|
|
ON_EN_CHANGE(IDC_EDIT_WIDTH, OnChangeEditWidth)
|
|||
|
|
ON_CBN_SELCHANGE(IDC_COMBO_POS2, OnSelchangeComboPos2)
|
|||
|
|
ON_EN_CHANGE(IDC_EDIT_HEIGHT, OnChangeEditHeight)
|
|||
|
|
//}}AFX_MSG_MAP
|
|||
|
|
END_MESSAGE_MAP()
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// CDrawWaterTankDlg message handlers
|
|||
|
|
|
|||
|
|
|
|||
|
|
BOOL CDrawWaterTankDlg::OnInitDialog()
|
|||
|
|
{
|
|||
|
|
CDialog::OnInitDialog();
|
|||
|
|
m_spinNum.SetRange(1, 10);
|
|||
|
|
ResetCheck();
|
|||
|
|
|
|||
|
|
CWnd *pWnd1 = GetDlgItem(IDC_CHECK_NEED_SLEEPER);
|
|||
|
|
if(m_iShape == 0 || m_iShape == 2)
|
|||
|
|
pWnd1->EnableWindow(FALSE);
|
|||
|
|
else
|
|||
|
|
pWnd1->EnableWindow(TRUE);
|
|||
|
|
ResetEdit();
|
|||
|
|
|
|||
|
|
// cet 2011.6.7 add
|
|||
|
|
UpdateTankData();
|
|||
|
|
|
|||
|
|
// cet 2011.4.22 add 枕木长未被赋值时
|
|||
|
|
if (m_iSleepPos == 0 && fabs(m_dSleeperLen) < g_fZero)
|
|||
|
|
{
|
|||
|
|
OnChangeEditLength();
|
|||
|
|
}
|
|||
|
|
else if (m_iSleepPos == 1 && fabs(m_dSleeperLen) < g_fZero)
|
|||
|
|
{
|
|||
|
|
OnChangeEditWidth();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|||
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 更新水箱数据 zxxl 2012.03.28 add
|
|||
|
|
void CDrawWaterTankDlg::UpdateTankData()
|
|||
|
|
{
|
|||
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_HEIGHT);
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_LENGTH);
|
|||
|
|
CWnd *pWnd4 = GetDlgItem(IDC_EDIT_WIDTH);
|
|||
|
|
CString sTemp;
|
|||
|
|
if (pWnd2 != NULL)
|
|||
|
|
{
|
|||
|
|
sTemp.Format(_T("%.3f"), m_nHeight);
|
|||
|
|
sTemp.TrimRight(_T("0"));
|
|||
|
|
sTemp.TrimRight(_T("."));
|
|||
|
|
pWnd2->SetWindowText(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pWnd3 != NULL)
|
|||
|
|
{
|
|||
|
|
sTemp.Format(_T("%.3f"), m_nLength);
|
|||
|
|
sTemp.TrimRight(_T("0"));
|
|||
|
|
sTemp.TrimRight(_T("."));
|
|||
|
|
pWnd3->SetWindowText(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pWnd4 != NULL)
|
|||
|
|
{
|
|||
|
|
sTemp.Format(_T("%.3f"), m_nWidth);
|
|||
|
|
sTemp.TrimRight(_T("0"));
|
|||
|
|
sTemp.TrimRight(_T("."));
|
|||
|
|
pWnd4->SetWindowText(sTemp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnRadioShape1()
|
|||
|
|
{
|
|||
|
|
ResetEdit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnRadioShape2()
|
|||
|
|
{
|
|||
|
|
ResetEdit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnRadioShape3()
|
|||
|
|
{
|
|||
|
|
ResetEdit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnButtonStandard()
|
|||
|
|
{
|
|||
|
|
CTemporaryResourceOverride vTemp;
|
|||
|
|
CSelWaterTankDlg dlg;
|
|||
|
|
|
|||
|
|
// zxl 2012.03.28 add 水箱类型联动
|
|||
|
|
if (m_iShape == 0 || m_iShape == 2)
|
|||
|
|
{
|
|||
|
|
dlg.m_iShape = 0;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
dlg.m_iShape = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(dlg.DoModal() != IDOK)
|
|||
|
|
return;
|
|||
|
|
m_csCubage = dlg.m_csCubage;
|
|||
|
|
if (!((m_iShape == 0 || m_iShape == 2) && dlg.m_iShape == 0))
|
|||
|
|
{
|
|||
|
|
m_iShape = dlg.m_iShape;
|
|||
|
|
}
|
|||
|
|
if(m_iShape == 0 || m_iShape == 2){
|
|||
|
|
m_nLength = (double)dlg.m_iRadius/1000;
|
|||
|
|
m_nHeight = (double)dlg.m_iHeight/1000;
|
|||
|
|
m_bNeedHole = FALSE;
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
m_nLength = (double)dlg.m_iLength/1000;
|
|||
|
|
m_nWidth = (double)dlg.m_iWidth/1000;
|
|||
|
|
m_nHeight = (double)dlg.m_iHeight/1000;
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
|
|||
|
|
// zxl 2012.03.28 add 显示水箱数据
|
|||
|
|
UpdateTankData();
|
|||
|
|
ResetEdit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::ResetEdit()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
CWnd *pWnd1 = GetDlgItem(IDC_CHECK_NEED_SLEEPER);
|
|||
|
|
CWnd *pWnd2 = GetDlgItem(IDC_STATIC_TEXT);
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_STATIC_TEXT2);
|
|||
|
|
// CWnd *pWnd4 = GetDlgItem(IDC_STATIC_TEXT3);
|
|||
|
|
// if(m_iShape == 2)
|
|||
|
|
// pWnd4->SetWindowText("水箱长(m):");
|
|||
|
|
// else
|
|||
|
|
// pWnd4->SetWindowText("水箱高(m):");
|
|||
|
|
|
|||
|
|
if(m_iShape == 0 || m_iShape == 2){
|
|||
|
|
pWnd1->EnableWindow(FALSE);
|
|||
|
|
pWnd2->SetWindowText(_T("水箱直径:"));
|
|||
|
|
pWnd3->SetWindowText(_T("支座高度:"));
|
|||
|
|
if(m_nWidth > 1)
|
|||
|
|
m_nWidth = 0.5;
|
|||
|
|
m_bNeedSleeper = FALSE;
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
pWnd1->EnableWindow(TRUE);
|
|||
|
|
pWnd2->SetWindowText(_T("水箱长(m):"));
|
|||
|
|
pWnd3->SetWindowText(_T("水箱宽(m):"));
|
|||
|
|
if(m_nWidth < 1)
|
|||
|
|
m_nWidth = 2;
|
|||
|
|
m_bNeedSleeper = TRUE;
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
ResetCheck();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnCheckNeedHole()
|
|||
|
|
{
|
|||
|
|
ResetCheck();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnCheckNeedSleeper()
|
|||
|
|
{
|
|||
|
|
ResetCheck();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::ResetCheck()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_HOLE_WIDTH);
|
|||
|
|
// CWnd *pWnd2 = GetDlgItem(IDC_COMBO_POS);
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_NUM);
|
|||
|
|
CWnd *pWnd4 = GetDlgItem(IDC_SPIN_NUM);
|
|||
|
|
CWnd *pWnd5 = GetDlgItem(IDC_COMBO_POS2);
|
|||
|
|
CWnd *pWnd6 = GetDlgItem(IDC_EDIT_SLEEPER_HEIGHT);
|
|||
|
|
CWnd *pWnd7 = GetDlgItem(IDC_EDIT_SLEEPER_WIDTH);
|
|||
|
|
CWnd *pWnd8 = GetDlgItem(IDC_EDIT_SLEEPER_LEN); // cet 2011.4.22 add 枕木长
|
|||
|
|
if(!m_bNeedHole){
|
|||
|
|
pWnd1->EnableWindow(FALSE);
|
|||
|
|
// pWnd2->EnableWindow(FALSE);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
pWnd1->EnableWindow(TRUE);
|
|||
|
|
// pWnd2->EnableWindow(TRUE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(m_bNeedSleeper){
|
|||
|
|
pWnd3->EnableWindow(TRUE);
|
|||
|
|
pWnd4->EnableWindow(TRUE);
|
|||
|
|
pWnd5->EnableWindow(TRUE);
|
|||
|
|
pWnd6->EnableWindow(TRUE);
|
|||
|
|
pWnd7->EnableWindow(TRUE);
|
|||
|
|
pWnd8->EnableWindow(TRUE); // cet 2011.4.22 add
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
pWnd3->EnableWindow(FALSE);
|
|||
|
|
pWnd4->EnableWindow(FALSE);
|
|||
|
|
pWnd5->EnableWindow(FALSE);
|
|||
|
|
pWnd6->EnableWindow(FALSE);
|
|||
|
|
pWnd7->EnableWindow(FALSE);
|
|||
|
|
pWnd8->EnableWindow(FALSE); // cet 2011.4.22 add
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//added by cet 2009.11.11
|
|||
|
|
void CDrawWaterTankDlg::OnOK()
|
|||
|
|
{
|
|||
|
|
UpdateData();
|
|||
|
|
|
|||
|
|
// cet 2011.6.7 add
|
|||
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_HEIGHT);
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_LENGTH);
|
|||
|
|
CWnd *pWnd4 = GetDlgItem(IDC_EDIT_WIDTH);
|
|||
|
|
CString sTemp;
|
|||
|
|
if (pWnd2 != NULL)
|
|||
|
|
{
|
|||
|
|
pWnd2->GetWindowText(sTemp);
|
|||
|
|
m_nHeight = _tstof(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pWnd3 != NULL)
|
|||
|
|
{
|
|||
|
|
pWnd3->GetWindowText(sTemp);
|
|||
|
|
m_nLength = _tstof(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pWnd4 != NULL)
|
|||
|
|
{
|
|||
|
|
pWnd4->GetWindowText(sTemp);
|
|||
|
|
m_nWidth = _tstof(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ((m_nWidth - (m_iNum - 1) * m_dSleeperWidth) < 0)
|
|||
|
|
{
|
|||
|
|
MessageBox(_T("枕木数宽度和应小于水箱宽度!"));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
CDialog::OnOK();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnChangeEditLength()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
// cet 2011.6.7 add
|
|||
|
|
CWnd *pWnd = GetDlgItem(IDC_EDIT_LENGTH);
|
|||
|
|
if (pWnd != NULL)
|
|||
|
|
{
|
|||
|
|
CString sTemp;
|
|||
|
|
pWnd->GetWindowText(sTemp);
|
|||
|
|
m_nLength = _tstof(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(m_iSleepPos == 0) // 枕木位置:水平
|
|||
|
|
{
|
|||
|
|
m_dSleeperLen = m_nLength + 0.1;
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnChangeEditWidth()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
// cet 2011.6.7 add
|
|||
|
|
CWnd *pWnd = GetDlgItem(IDC_EDIT_WIDTH);
|
|||
|
|
if (pWnd != NULL)
|
|||
|
|
{
|
|||
|
|
CString sTemp;
|
|||
|
|
pWnd->GetWindowText(sTemp);
|
|||
|
|
m_nWidth = _tstof(sTemp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(m_iSleepPos == 1) // 枕木位置:垂直
|
|||
|
|
{
|
|||
|
|
m_dSleeperLen = m_nWidth + 0.1;
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnSelchangeComboPos2()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
if (m_iSleepPos == 0)
|
|||
|
|
{
|
|||
|
|
m_dSleeperLen = m_nLength + 0.1;
|
|||
|
|
}
|
|||
|
|
else if (m_iSleepPos == 1)
|
|||
|
|
{
|
|||
|
|
m_dSleeperLen = m_nWidth + 0.1;
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDrawWaterTankDlg::OnChangeEditHeight()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
CWnd *pWnd = GetDlgItem(IDC_EDIT_HEIGHT);
|
|||
|
|
if (pWnd != NULL)
|
|||
|
|
{
|
|||
|
|
CString sTemp;
|
|||
|
|
pWnd->GetWindowText(sTemp);
|
|||
|
|
m_nHeight = _tstof(sTemp);
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
}
|