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