#include "stdafx.h" #include "YHPTDlg.h" #include "AecDbClimbStair.h" DLLIMPEXP CString IDCreate(); IMPLEMENT_DYNAMIC(CYHPTDlg, CDialog) CYHPTDlg::CYHPTDlg(CWnd* pParent /*=NULL*/) : CDialog(CYHPTDlg::IDD, pParent) , m_dD(1100) , m_dSegSp(800) , m_dSteepH(270) , m_dH(6000) , m_dW(800) , m_dBomEl(0) , m_dH1(1600) , m_dH2(400) , m_sFactory(_T("厂家自制")) , m_dd(30) , m_dt(1.5) , m_dbt(6) , m_dbw(10) , m_sMaterial(_T("普通碳钢")) , m_sNo(_T("P-001")) , m_nType(0) , m_dSpWall(180) , m_bNOSetDefault(TRUE) { GET_CACHE(CYHPTDlg , %f%f%f%f%f%f%f%f%f%f%f%f%s%s%s , &m_dD , &m_dSegSp , &m_dSteepH , &m_dH , &m_dW , &m_dBomEl , &m_dH1 , &m_dH2 , &m_dd , &m_dt , &m_dbt , &m_dbw , &m_sFactory , &m_sMaterial , &m_sNo); if (m_bNOSetDefault) m_sNo = IDCreate(); } CYHPTDlg::~CYHPTDlg() { } void CYHPTDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dD); DDX_Text(pDX, IDC_EDIT2, m_dSegSp); DDX_Text(pDX, IDC_EDIT3, m_dSteepH); DDX_Text(pDX, IDC_EDIT12, m_dH); DDX_Text(pDX, IDC_EDIT20, m_dW); DDX_Text(pDX, IDC_EDIT13, m_dBomEl); DDX_Text(pDX, IDC_EDIT25, m_dH1); DDX_Text(pDX, IDC_EDIT26, m_dH2); DDX_Text(pDX, IDC_EDIT15, m_dd); DDX_Text(pDX, IDC_EDIT16, m_dt); DDX_Text(pDX, IDC_EDIT17, m_dbt); DDX_Text(pDX, IDC_EDIT21, m_dbw); DDX_Text(pDX, IDC_EDIT14, m_sFactory); DDX_Text(pDX, IDC_EDIT22, m_sMaterial); DDX_Text(pDX, IDC_EDIT28, m_sNo); DDX_Radio(pDX, IDC_RADIO1, m_nType); DDX_Text(pDX, IDC_EDIT31, m_dSpWall); DDX_Check(pDX, IDC_CHECK6, m_bNOSetDefault); } BEGIN_MESSAGE_MAP(CYHPTDlg, CDialog) ON_BN_CLICKED(IDOK, &CYHPTDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON1, &CYHPTDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_CHECK6, &CYHPTDlg::OnBnClickedCheck6) END_MESSAGE_MAP() BOOL CYHPTDlg::OnInitDialog() { CDialog::OnInitDialog(); if (!m_bmp1.LoadBitmap (IDB_BITMAP20)) { AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAP20); ASSERT (FALSE); return FALSE; } if (!m_bmp2.LoadBitmap (IDB_BITMAP21)) { AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAP21); ASSERT (FALSE); return FALSE; } if (m_bNOSetDefault) { GetDlgItem(IDC_EDIT28)->EnableWindow(FALSE); } UpdateData(FALSE); return TRUE; } void CYHPTDlg::OnBnClickedOk() { UpdateData(); if (m_dW - m_dD > 1.e-2) { AfxMessageBox(_T("梯子的宽度不能大于爬孔直径!")); return; } if (m_dd - m_dD > 1.e-2) { AfxMessageBox(_T("踏步钢管外径过大!")); return; } if (m_dbt - m_dD > 1.e-2) { AfxMessageBox(_T("护栏板材厚度不正确!")); return; } if (m_dbt - m_dD > 1.e-2) { AfxMessageBox(_T("护栏板材宽不正确!")); return; } if ( (m_dH - m_dH1 - m_dH2) < 1.e-6) { AfxMessageBox(_T("出入无遮挡高度尺寸不正确!")); return; } SET_CACHE(CYHPTDlg , %f%f%f%f%f%f%f%f%f%f%f%f%s%s%s , m_dD , m_dSegSp , m_dSteepH , m_dH , m_dW , m_dBomEl , m_dH1 , m_dH2 , m_dd , m_dt , m_dbt , m_dbw , m_sFactory , m_sMaterial , m_sNo); AcAxDocLock lock; if (m_id.isValid()) { AcDbEntity* pEnt = NULL; if (Acad::eOk == acdbOpenAcDbEntity(pEnt,m_id,AcDb::kForWrite)) { AecDbClimbStair* pClimbStair = AecDbClimbStair::cast(pEnt); if (pClimbStair != NULL) { ClimbStair data; memset(&data,0,sizeof(ClimbStair)); GetLineStairData(data); AcDbCurve* pCr = pClimbStair->GetNativeCurve(); if (pCr != NULL) { AcDbLine* pL = AcDbLine::cast(pCr); if (pL != NULL) { AcGePoint3d ptS = pL->startPoint(); ptS.z = m_dBomEl; AcGePoint3d ptE = ptS; ptE.z += data.dH; pL->setStartPoint(ptS); pL->setEndPoint(ptE); } } pClimbStair->SetSection(data.dd,0.0); pClimbStair->SetClimbStairData(data); } pEnt->close(); } } OnOK(); } void CYHPTDlg::GetLineStairData(ClimbStair& data) const { data.dD = m_dD; data.dSegSp = m_dSegSp; data.dSteepH = m_dSteepH; data.dH = m_dH; data.dW = m_dW; data.dBomEl = m_dBomEl; data.dH1 = m_dH1; data.dH2 = m_dH2; data.dd = m_dd; data.dt = m_dt; data.dbt = m_dbt; data.dbw = m_dbw; data.dSpWall = m_dSpWall; data.nType = m_nType; _tcscpy(data.m_sMaterial,(LPCTSTR)m_sMaterial); _tcscpy(data.m_sFactory,(LPCTSTR)m_sFactory); _tcscpy(data.m_sNo,(LPCTSTR)m_sFactory); } void CYHPTDlg::SetFromId(AcDbObjectId& id) { AcDbEntity* pEnt = NULL; if (Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead)) { AecDbClimbStair* pClimbStair = AecDbClimbStair::cast(pEnt); if (pClimbStair != NULL) { m_id = id; ClimbStair data; pClimbStair->GetClimbStairData(data); m_dD = data.dD; m_dSegSp = data.dSegSp; m_dSteepH = data.dSteepH; m_dH = data.dH; m_dW = data.dW; m_dBomEl = data.dBomEl; m_dH1 = data.dH1; m_dH2 = data.dH2; m_dd = data.dd; m_dt = data.dt; m_dbt = data.dbt; m_dbw = data.dbw; m_dSpWall = data.dSpWall; m_nType = data.nType; m_sMaterial = data.m_sMaterial; m_sFactory = data.m_sFactory; m_sNo = data.m_sNo; } pEnt->close(); } } void CYHPTDlg::OnBnClickedButton1() { } void CYHPTDlg::OnBnClickedCheck6() { if (m_bNOSetDefault) { GetDlgItem(IDC_EDIT28)->EnableWindow(FALSE); } else { GetDlgItem(IDC_EDIT28)->EnableWindow(TRUE); } }