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

164 lines
3.5 KiB
C++

#include "stdafx.h"
#include "RZWDDlg.h"
#include "AecDbRoof.h"
#include "EarThwormDef.h"
IMPLEMENT_DYNAMIC(CRZWDDlg, CDialog)
CRZWDDlg::CRZWDDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRZWDDlg::IDD, pParent)
, m_dLeftAng(30)
, m_dRightAng(30)
, m_dHeight(3000)
, m_dRigeEl(3000)
, m_sMaterial(_T("PVC防腐隔热瓦"))
, m_sProvider(_T("现场定制"))
, m_bHLocked(FALSE)
, m_dSlabThick(200)
{
GET_CACHE(CRZWDDlg
, %f % f % f % f % s % s %d %f
, &m_dLeftAng
, &m_dRightAng
, &m_dHeight
, &m_dRigeEl
, &m_sMaterial
, &m_sProvider
, &m_bHLocked
, &m_dSlabThick);
}
CRZWDDlg::~CRZWDDlg()
{
}
void CRZWDDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_dLeftAng);
DDX_Text(pDX, IDC_EDIT2, m_dRightAng);
DDX_Text(pDX, IDC_EDIT3, m_dHeight);
DDX_Text(pDX, IDC_EDIT12, m_dRigeEl);
DDX_Text(pDX, IDC_EDIT13, m_sMaterial);
DDX_Text(pDX, IDC_EDIT14, m_sProvider);
DDX_Check(pDX, IDC_CHECK1, m_bHLocked);
DDX_Control(pDX, IDC_EDIT1, m_wndLAng);
DDX_Control(pDX, IDC_EDIT2, m_wndRAng);
DDX_Control(pDX, IDC_EDIT3, m_wndH);
DDX_Text(pDX, IDC_EDIT_ELEV2, m_dSlabThick);
}
BEGIN_MESSAGE_MAP(CRZWDDlg, CDialog)
ON_BN_CLICKED(IDOK, &CRZWDDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_CHECK1, &CRZWDDlg::OnBnClickedCheck1)
END_MESSAGE_MAP()
BOOL CRZWDDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(FALSE);
m_wndH.EnableWindow(m_bHLocked);
m_wndLAng.EnableWindow(!m_bHLocked);
m_wndRAng.EnableWindow(!m_bHLocked);
return TRUE;
}
void CRZWDDlg::OnBnClickedOk()
{
UpdateData();
if (m_dLeftAng > 89.999 || m_dRightAng > 89.9999)
{
AfxMessageBox(_T("坡度角范围为0~90度!"));
}
if (m_dRigeEl < 1E-6)
{
if (fabs(m_dRigeEl - 0.0) <=1E-6);
else
{
AfxMessageBox(_T("标高不能小于0"));
}
}
if (m_idFrm.isValid())
{
UpdateDataObject();
}
SET_CACHE(CRZWDDlg
, %f % f % f % f % s % s % d % f
, m_dLeftAng
, m_dRightAng
, m_dHeight
, m_dRigeEl
, m_sMaterial
, m_sProvider
, m_bHLocked
, m_dSlabThick);
OnOK();
}
void CRZWDDlg::OnBnClickedCheck1()
{
UpdateData();
m_wndH.EnableWindow(m_bHLocked);
m_wndLAng.EnableWindow(!m_bHLocked);
m_wndRAng.EnableWindow(!m_bHLocked);
}
void CRZWDDlg::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)
{
m_dRigeEl = pRoof->GetElevation();
m_dLeftAng = pRoof->GetAngleLeft() * 180.0 / PI;
m_dRightAng = pRoof->GetAngleRight() * 180.0 / PI;
m_bHLocked = pRoof->IsHeightLim();
m_dSlabThick = pRoof->GetSlabThick();
m_dHeight = pRoof->GetRoofHeight();
pRoof->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_MATERIAL,m_sMaterial);
pRoof->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_FACTORY,m_sProvider);
}
pEnt->close();
}
}
void CRZWDDlg::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->SetElevation(m_dRigeEl);
pRoof->SetEqualAngle(Adesk::kFalse);
double dLSlant = m_dLeftAng;
double dRSlant = m_dRightAng;
pRoof->SetAngle(dLSlant*PI / 180.0,dRSlant*PI / 180.0);
pRoof->SetHeightLim(m_bHLocked);
pRoof->SetSlabThick(m_dSlabThick);
if (m_bHLocked)
{
pRoof->SetRoofHeight(m_dHeight);
}
}
pEnt->close();
}
}