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