Files
envi-code/SourceCode/Code2026/PipelineCmd/PyrmDlg.cpp
T
2026-09-28 15:28:50 +08:00

169 lines
3.1 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;
}