144 lines
3.0 KiB
C++
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();
|
|
}
|
|
} |