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

229 lines
5.0 KiB
C++

#include "stdafx.h"
#include "JXPDDlg.h"
#include "AecDbroof.h"
#include "EarThwormDef.h"
IMPLEMENT_DYNAMIC(CJXPDDlg, CDialog)
CJXPDDlg::CJXPDDlg(CWnd* pParent /*=NULL*/)
: CDialog(CJXPDDlg::IDD, pParent)
, m_nRoofType(0)
, m_dElevation(3000)
, m_dRoofHeight(3000)
, m_dMountLength(600)
, m_dEavesLength(600)
, m_dSlopeAngle(30)
, m_dMountHeight(1100)
, m_sMaterial(_T("PVC防腐隔热瓦"))
, m_sProvider(_T("现场定制"))
, m_dSlabThick(200)
{
GET_CACHE(CJXPDDlg
, %d %f %f %f %f %f %f %s %s %f
, &m_nRoofType
, &m_dElevation
, &m_dRoofHeight
, &m_dMountLength
, &m_dEavesLength
, &m_dSlopeAngle
, &m_dMountHeight
, &m_sMaterial
, &m_sProvider
, &m_dSlabThick);
}
CJXPDDlg::~CJXPDDlg()
{
}
void CJXPDDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_CBIndex(pDX, IDC_COMBO1, m_nRoofType);
DDX_Text(pDX, IDC_EDIT3, m_dElevation);
DDX_Text(pDX, IDC_EDIT1, m_dRoofHeight);
DDX_Text(pDX, IDC_EDIT13, m_dMountLength);
DDX_Text(pDX, IDC_EDIT12, m_dEavesLength);
DDX_Text(pDX, IDC_EDIT2, m_dSlopeAngle);
DDX_Text(pDX, IDC_EDIT6, m_dMountHeight);
DDX_Control(pDX, IDC_COMBO1, m_comboType);
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(CJXPDDlg, CDialog)
ON_BN_CLICKED(IDOK, &CJXPDDlg::OnBnClickedOk)
ON_CBN_SELCHANGE(IDC_COMBO1,OnSelChangeType)
END_MESSAGE_MAP()
BOOL CJXPDDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_comboType.SetCurSel(m_nRoofType);
OnSelChangeType();
UpdateData(FALSE);
return TRUE;
}
void CJXPDDlg::OnSelChangeType()
{
m_nRoofType=m_comboType.GetCurSel();
BOOL bShowLen=TRUE,bShowHeight=TRUE,bEnableAngle=TRUE;
if (m_nRoofType==0) //歇山
{
bShowLen=FALSE;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
}
else if (m_nRoofType==1) //四坡
{
bShowLen=FALSE;
bShowHeight=FALSE;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ANG)->ShowWindow(SW_SHOW);
}
else if (m_nRoofType==2) //人字坡
{
bShowHeight=FALSE;
bEnableAngle=FALSE;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ANG)->ShowWindow(SW_SHOW);
}
else //攒尖
{
bShowHeight=FALSE;
bShowLen=FALSE;
bShowLen=FALSE;
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_ANG)->ShowWindow(SW_HIDE);
}
GetDlgItem(IDC_EDIT13)->ShowWindow(bShowLen?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_STATIC_LENGTH)->ShowWindow(bShowLen?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_EDIT6)->ShowWindow(bShowHeight?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_STATIC_HEIGHT)->ShowWindow(bShowHeight?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_EDIT2)->EnableWindow(bEnableAngle);
}
void CJXPDDlg::OnBnClickedOk()
{
UpdateData();
UpdateDataObject();
SET_CACHE(CJXPDDlg
, %d % f % f % f % f % f % f % s % s % f
, m_nRoofType
, m_dElevation
, m_dRoofHeight
, m_dMountLength
, m_dEavesLength
, m_dSlopeAngle
, m_dMountHeight
, m_sMaterial
, m_sProvider
, m_dSlabThick);
OnOK();
}
void CJXPDDlg::SetFromId(AcDbObjectId& id)
{
m_idFrm = id;
AcDbEntity* pEnt = NULL;
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,m_idFrm,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_dSlabThick = pRoof->GetSlabThick();
m_dElevation = pRoof->GetElevation();
m_dRoofHeight = pRoof->GetRoofHeight();
m_dEavesLength = pRoof->GetEavesLen();
m_nRoofType = pRoof->GetRoofType();
switch(m_nRoofType)
{
case 0:
{
m_dMountHeight = pRoof->GetMountHeight();
m_dSlopeAngle = pRoof->GetSlopeAngle2() * 180 / PI;
break;
}
case 1:
{
m_dSlopeAngle = pRoof->GetSlopeAngle2() * 180 / PI;
break;
}
case 2:
{
m_dSlopeAngle = 90;
m_dMountLength = pRoof->GetMountLen();
break;
}
default:
{
m_dMountLength = 0;
break;
}
}
}
pEnt->close();
}
}
void CJXPDDlg::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->SetSlabThick(m_dSlabThick);
pRoof->SetShowSide(FALSE);
pRoof->SetElevation(m_dElevation);
pRoof->SetRoofHeight(m_dRoofHeight);
pRoof->SetEavesLen(m_dEavesLength);
pRoof->SetRoofType(m_nRoofType);
switch(m_nRoofType)
{
case 0:
{
pRoof->SetMountHeight(m_dMountHeight);
pRoof->SetSlopeAngle2(PI*m_dSlopeAngle/180.0);
break;
}
case 1:
{
pRoof->SetMountHeight(0);
pRoof->SetSlopeAngle2(PI*m_dSlopeAngle/180.0);
break;
}
case 2:
{
pRoof->SetMountHeight(0);
pRoof->SetSlopeAngle2(PI*0.5);
pRoof->SetMountLen(m_dMountLength);
break;
}
default:
{
pRoof->SetMountHeight(0);
break;
}
}
}
pEnt->close();
}
}