139 lines
2.7 KiB
C++
139 lines
2.7 KiB
C++
#include "stdafx.h"
|
|
#include "ReducerDlg.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CReducerDlg, CDialog)
|
|
|
|
CReducerDlg::CReducerDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CReducerDlg::IDD, pParent)
|
|
, m_nEcCen(0)
|
|
, m_dW(100)
|
|
, m_dH(100)
|
|
, m_sEndW(_T("150"))
|
|
, m_dL(200)
|
|
, m_dAngle(60)
|
|
, m_bAngleCal(FALSE)
|
|
, m_nZECen(0)
|
|
{
|
|
}
|
|
|
|
CReducerDlg::~CReducerDlg()
|
|
{
|
|
}
|
|
|
|
void CReducerDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_EDIT5, m_dW);
|
|
DDX_CBString(pDX, IDC_COMBO2, m_sEndW);
|
|
DDX_CBString(pDX, IDC_COMBO3, m_sEndH);
|
|
DDX_Text(pDX, IDC_EDIT6, m_dL);
|
|
DDX_Text(pDX, IDC_EDIT7, m_dAngle);
|
|
DDX_Text(pDX, IDC_EDIT8, m_dH);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bAngleCal);
|
|
DDX_Control(pDX, IDC_EDIT6, m_wndEditL);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nEcCen);
|
|
DDX_Radio(pDX, IDC_RADIO4, m_nZECen);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CReducerDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CReducerDlg::OnBnClickedOk)
|
|
ON_EN_KILLFOCUS(IDC_EDIT7, &CReducerDlg::OnEnKillfocusEdit7)
|
|
//ON_CBN_SELENDOK(IDC_COMBO2, &CReducerDlg::OnCbnSelendokCombo2)
|
|
ON_BN_CLICKED(IDC_CHECK1, &CReducerDlg::OnBnClickedCheck1)
|
|
ON_CBN_CLOSEUP(IDC_COMBO2, &CReducerDlg::OnCbnCloseupCombo2)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CReducerDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_wndEditL.EnableWindow(!m_bAngleCal);
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CReducerDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
if ( fabs(_ttof(m_sEndW) - m_dW) < 1.e-2 &&
|
|
fabs(_ttof(m_sEndH) - m_dH) < 1.e-2)
|
|
{
|
|
AfxMessageBox(_T("变径首尾宽高不能相同!请重新选择宽高度!"));
|
|
return;
|
|
}
|
|
|
|
if (m_dL < 10.0 )
|
|
{
|
|
AfxMessageBox(_T("变径长度过小!请重新输入长度!"));
|
|
return;
|
|
}
|
|
|
|
if (m_dAngle < 10.0)
|
|
{
|
|
AfxMessageBox(_T("变径角度过小!请重新输入角度!"));
|
|
return;
|
|
}
|
|
OnOK();
|
|
}
|
|
|
|
void CReducerDlg::SetCurWidth(double dW,double dL)
|
|
{
|
|
m_dW = dW;
|
|
m_dL = dL;
|
|
}
|
|
|
|
void CReducerDlg::SetCurHeight(double dH)
|
|
{
|
|
m_dH = dH;
|
|
m_sEndH.Format(_T("%d"),(int)(dH + 0.5));
|
|
}
|
|
|
|
CPoint CReducerDlg::GetReducer(AcGePoint3d& ptSize,double& dEH) const
|
|
{
|
|
ptSize.x = m_dW;
|
|
ptSize.y = _ttof(m_sEndW);
|
|
|
|
ptSize.z = m_dL;
|
|
dEH = _ttof(m_sEndH);
|
|
|
|
CPoint ptEc;
|
|
ptEc.x = m_nEcCen;
|
|
ptEc.y = m_nZECen;
|
|
return ptEc;
|
|
}
|
|
|
|
void CReducerDlg::OnEnKillfocusEdit7()
|
|
{
|
|
//计算变径长度
|
|
UpdateData();
|
|
|
|
if (m_bAngleCal)
|
|
{
|
|
double dWx = 0.5 * fabs(m_dW - _ttof(m_sEndW));
|
|
m_dL = (int)( tan(m_dAngle * PI / 180.0) * dWx + 0.5);
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
void CReducerDlg::OnBnClickedCheck1()
|
|
{
|
|
UpdateData();
|
|
m_wndEditL.EnableWindow(!m_bAngleCal);
|
|
}
|
|
|
|
void CReducerDlg::OnCbnCloseupCombo2()
|
|
{
|
|
//计算变径长度
|
|
UpdateData();
|
|
|
|
if (m_bAngleCal)
|
|
{
|
|
double dWx = 0.5 * fabs(m_dW - _ttof(m_sEndW));
|
|
m_dL = (int)( tan(m_dAngle * PI / 180.0) * dWx + 0.5);
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|