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

144 lines
3.0 KiB
C++

#include "stdafx.h"
#include "ZJPDDlg.h"
#include "AecDbRoof.h"
#include "EarThwormDef.h"
IMPLEMENT_DYNAMIC(CZJPDDlg, CDialog)
CZJPDDlg::CZJPDDlg(CWnd* pParent /*=NULL*/)
: CDialog(CZJPDDlg::IDD, pParent)
, m_sMaterial(_T("PVC防腐隔热瓦"))
, m_sProvider(_T("现场定制"))
, m_dSlabThick(200)
{
m_dRoofHeight = 3000;
m_nEdgeNum = 6;
m_dRadus = 10000;
m_dChuyanchang = 600;
m_dElev = 3000;
GET_CACHE(CZJPDDlg
, %s % s % f % f % d % f %f %f
, &m_sMaterial
, &m_sProvider
, &m_dSlabThick
, &m_dRoofHeight
, &m_nEdgeNum
, &m_dRadus
, &m_dChuyanchang
, &m_dElev);
}
CZJPDDlg::~CZJPDDlg()
{
}
void CZJPDDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX,IDC_SPIN1,m_ctrlSideNumSpin);
DDX_Text(pDX, IDC_EDIT_EDGENUM, m_nEdgeNum);
DDX_Text(pDX, IDC_EDIT_RADUS, m_dRadus);
DDX_Text(pDX, IDC_EDIT_HEIGHT, m_dRoofHeight);
DDX_Text(pDX, IDC_EDIT_CHUYANCHANG, m_dChuyanchang);
DDX_Text(pDX, IDC_EDIT_ELEV, m_dElev);
DDX_Text(pDX, IDC_EDIT4, m_sMaterial);
DDX_Text(pDX, IDC_EDIT5, m_sProvider);
DDX_Text(pDX, IDC_EDIT_ELEV2, m_dSlabThick);
}
BEGIN_MESSAGE_MAP(CZJPDDlg, CDialog)
ON_BN_CLICKED(IDOK, &CZJPDDlg::OnBnClickedOk)
END_MESSAGE_MAP()
BOOL CZJPDDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ctrlSideNumSpin.SetRange32(3,10000);
m_ctrlSideNumSpin.SetBuddy(GetDlgItem(IDC_EDIT_EDGENUM));
UpdateData(FALSE);
return TRUE;
}
void CZJPDDlg::OnBnClickedOk()
{
UpdateData();
if (m_nEdgeNum < 3)
{
AfxMessageBox(_T("边数不正确!"));
return;
}
if (m_dRadus < 10.0)
{
AfxMessageBox(_T("半径太小!"));
return;
}
if (m_dChuyanchang < 10.0)
{
AfxMessageBox(_T("出檐长太小!"));
return;
}
SET_CACHE(CZJPDDlg
, %s % s % f % f % d % f % f % f
, m_sMaterial
, m_sProvider
, m_dSlabThick
, m_dRoofHeight
, m_nEdgeNum
, m_dRadus
, m_dChuyanchang
, m_dElev);
OnOK();
}
void CZJPDDlg::SetFromId(AcDbObjectId& id)
{
m_idFrm = id;
AcDbEntity* pEnt = NULL;
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
{
AecDbXRoof* pRoof = AecDbXRoof::cast(pEnt);
if (pRoof != NULL)
{
pRoof->GetSpecialtyData()->GetAt(KEY_MATERIAL,m_sMaterial);
pRoof->GetSpecialtyData()->GetAt(KEY_FACTORY,m_sProvider);
m_dRadus = pRoof->GetRadius();
m_dSlabThick = pRoof->GetSlabThick();
m_dRoofHeight = pRoof->GetRoofHeight();
m_dChuyanchang = pRoof->GetEavesLen();
m_nEdgeNum = pRoof->GetSideNum();
m_dElev = pRoof->GetElevation();
}
pEnt->close();
}
}
void CZJPDDlg::UpdateDataObject()
{
AcDbEntity* pEnt = NULL;
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,m_idFrm,AcDb::kForWrite))
{
AecDbXRoof* pRoof = AecDbXRoof::cast(pEnt);
if (pRoof != NULL)
{
pRoof->GetSpecialtyData()->SetAt(KEY_MATERIAL,m_sMaterial);
pRoof->GetSpecialtyData()->SetAt(KEY_FACTORY,m_sProvider);
pRoof->SetRadius(m_dRadus);
pRoof->SetSlabThick(m_dSlabThick);
pRoof->SetRoofHeight(m_dRoofHeight);
pRoof->SetEavesLen(m_dChuyanchang);
pRoof->SetSideNum(m_nEdgeNum);
pRoof->SetElevation(m_dElev);
}
pEnt->close();
}
}