#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(); } }