169 lines
3.2 KiB
C++
169 lines
3.2 KiB
C++
#include "stdafx.h"
|
|
#include "PyrmDlg.h"
|
|
#include "EarThwormDef.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CPyrmDlg, CDialog)
|
|
|
|
CPyrmDlg::CPyrmDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPyrmDlg::IDD, pParent)
|
|
, m_dTH(500)
|
|
, m_dTx(200)
|
|
, m_dTy(300)
|
|
, m_dBx(400)
|
|
, m_dBy(500)
|
|
, m_dXOffset(0)
|
|
, m_bIs90Tr(FALSE)
|
|
, m_pData(NULL)
|
|
, m_clr(256)
|
|
, m_bSub(FALSE)
|
|
{
|
|
GET_CACHE(CPyrmDlg
|
|
, %f%f%f%f%f%f%d%d
|
|
, &m_dTH
|
|
, &m_dTx
|
|
, &m_dTy
|
|
, &m_dBx
|
|
, &m_dBy
|
|
, &m_dXOffset
|
|
, &m_bIs90Tr
|
|
, &m_clr);
|
|
}
|
|
|
|
CPyrmDlg::~CPyrmDlg()
|
|
{
|
|
}
|
|
|
|
void CPyrmDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_EDITH, m_dTH);
|
|
DDX_Text(pDX, IDC_EDITTX, m_dTx);
|
|
DDX_Text(pDX, IDC_EDITTY, m_dTy);
|
|
DDX_Text(pDX, IDC_EDITBX, m_dBx);
|
|
DDX_Text(pDX, IDC_EDITBY, m_dBy);
|
|
DDX_Text(pDX, IDC_EDITHXOFF, m_dXOffset);
|
|
DDX_Check(pDX, IDC_CHECK90, m_bIs90Tr);
|
|
DDX_Check(pDX, IDC_CHECK_SUB, m_bSub);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CPyrmDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CPyrmDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_CHECK90, &CPyrmDlg::OnBnClickedCheck90)
|
|
ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor)
|
|
ON_WM_CTLCOLOR()
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CPyrmDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
if (m_pData != NULL)
|
|
{
|
|
AecEqui::XPyramid* pPyr = (AecEqui::XPyramid*)m_pData;
|
|
m_dTx = pPyr->dTX;
|
|
m_dTy = pPyr->dTY;
|
|
m_dBx = pPyr->dBX;
|
|
m_dBy = pPyr->dBY;
|
|
m_dTH = pPyr->dH;
|
|
m_dXOffset = pPyr->dXOffset;
|
|
}
|
|
UpdateData(FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
void CPyrmDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
if ( (m_dBx + m_dBy) < 1.e-3 || (m_dBx * m_dBy )> 1.e-3 )
|
|
{
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("方台的底边尺寸必须都大于0 或都为0,请重新输入数据!"));
|
|
return;
|
|
}
|
|
|
|
if ( (m_dTx + m_dTy ) < 1.e-3 || (m_dTx * m_dTy ) > 1.e-3)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("方台的顶边尺寸必须都大于0 或都为0,请重新输入数据!"));
|
|
return;
|
|
}
|
|
|
|
if (m_dTx + m_dBx < 1.e-3)
|
|
{
|
|
AfxMessageBox(_T("方台的顶底边尺寸不能都为0,请重新输入数据!"));
|
|
return;
|
|
}
|
|
|
|
if (m_dTH < 1.e-3)
|
|
{
|
|
AfxMessageBox(_T("方台的高度尺寸数据必须大于0,请重新输入数据!"));
|
|
return;
|
|
}
|
|
|
|
if (m_pData != NULL)
|
|
{
|
|
AecEqui::XPyramid* pPyr = (AecEqui::XPyramid*)m_pData;
|
|
pPyr->dTX = m_dTx;
|
|
pPyr->dTY = m_dTy;
|
|
pPyr->dBX = m_dBx;
|
|
pPyr->dBY = m_dBy;
|
|
pPyr->dH = m_dTH;
|
|
pPyr->dXOffset = m_dXOffset;
|
|
}
|
|
|
|
SET_CACHE(CPyrmDlg
|
|
, %f%f%f%f%f%f%d%d
|
|
, m_dTH
|
|
, m_dTx
|
|
, m_dTy
|
|
, m_dBx
|
|
, m_dBy
|
|
, m_dXOffset
|
|
, m_bIs90Tr
|
|
, m_clr);
|
|
|
|
OnOK();
|
|
}
|
|
|
|
void CPyrmDlg::OnBnClickedCheck90()
|
|
{
|
|
UpdateData();
|
|
if (m_bIs90Tr)
|
|
{
|
|
m_dXOffset = (m_dBx - m_dTx) / 2.0;
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
void CPyrmDlg::OnStaticColor()
|
|
{
|
|
AcCmColor clr;
|
|
#if ARX < 24
|
|
clr.setColorMethod(AcCmEntityColor::kByACI);
|
|
#endif
|
|
clr.setColorIndex(256);
|
|
if (acedSetColorDialogTrueColor(clr, Adesk::kTrue, clr, (AcCm::DialogTabs)(AcCm::kACITab)) == Adesk::kFalse) return;
|
|
m_clr = clr.colorIndex();
|
|
Invalidate();
|
|
}
|
|
|
|
HBRUSH CPyrmDlg::OnCtlColor(CDC * pDC, CWnd * pWnd, UINT nCtlColor)
|
|
{
|
|
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
if (nCtlColor == CTLCOLOR_STATIC)
|
|
{
|
|
if (pWnd != NULL && pWnd->GetDlgCtrlID() == IDC_STATIC_COLOR)
|
|
{
|
|
CRect rc;
|
|
pWnd->GetClientRect(rc);
|
|
pDC->FillSolidRect(rc, acedGetRGB(m_clr));
|
|
}
|
|
}
|
|
return hbr;
|
|
}
|