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

127 lines
2.7 KiB
C++

#include "stdafx.h"
#include "CirtorDlg.h"
#include "EarThwormDef.h"
IMPLEMENT_DYNAMIC(CCirtorDlg, CDialog)
CCirtorDlg::CCirtorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCirtorDlg::IDD, pParent)
, m_dR1(300)
, m_dR2(500)
, m_dSAngle(0)
, m_dEAngle(90)
, m_pData(NULL)
, m_clr(256)
, m_bSub(FALSE)
{
GET_CACHE(CCirtorDlg, %f%f%f%f%d, &m_dR1, &m_dR2, &m_dSAngle, &m_dEAngle, &m_clr);
}
CCirtorDlg::~CCirtorDlg()
{
}
void CCirtorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDITR1, m_dR1);
DDX_Text(pDX, IDC_EDITR2, m_dR2);
DDX_Text(pDX, IDC_EDITRSA, m_dSAngle);
DDX_Text(pDX, IDC_EDITREA, m_dEAngle);
DDX_Check(pDX, IDC_CHECK_SUB, m_bSub);
}
BEGIN_MESSAGE_MAP(CCirtorDlg, CDialog)
ON_BN_CLICKED(IDOK, &CCirtorDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
BOOL CCirtorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if (m_pData != NULL)
{
AecEqui::XCirtorus* pCirtor = (AecEqui::XCirtorus*)m_pData;
m_dR1 = pCirtor->dInr;
m_dR2 = pCirtor->dOutR;
m_dSAngle = pCirtor->dStaAngle * 180.0 / PI;
m_dEAngle = pCirtor->dEndAngle * 180.0 / PI;
}
UpdateData(FALSE);
return TRUE;
}
void CCirtorDlg::OnBnClickedOk()
{
UpdateData();
if (m_dR1 < 1.e-3 || m_dR2 < 1.e-3)
{
AfxMessageBox(_T("圆环内外半径必须大于0!请重新输入数据!"));
return;
}
if (m_dR2 - m_dR1 < 1.e-3)
{
AfxMessageBox(_T("圆环的外半径必须大于内半径!请重新输入数据!"));
return;
}
if (m_dSAngle - m_dEAngle > 1.e-3)
{
AfxMessageBox(_T("起始角度必须小于终止角度!请重新输入角度"));
return;
}
double dA = m_dEAngle - m_dSAngle;
if (dA - 360.0 > -1.e-6)
{
AfxMessageBox(_T("圆环的圆心角度必须小于360度,请重新输入角度!"));
return;
}
if (m_pData != NULL)
{
AecEqui::XCirtorus* pCirtor = (AecEqui::XCirtorus*)m_pData;
pCirtor->dInr = m_dR1;
pCirtor->dOutR = m_dR2;
pCirtor->dStaAngle = m_dSAngle * PI / 180.0;
pCirtor->dEndAngle = m_dEAngle * PI / 180.0;
}
SET_CACHE(CCirtorDlg, %f%f%f%f%d, m_dR1, m_dR2, m_dSAngle, m_dEAngle, m_clr);
OnOK();
}
void CCirtorDlg::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 CCirtorDlg::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;
}