#include "stdafx.h" #include "ZXPTDlg.h" #include "AecDbClimbStair.h" DLLIMPEXP CString IDCreate(); IMPLEMENT_DYNAMIC(CZXPTDlg, CDialog) CZXPTDlg::CZXPTDlg(CWnd* pParent /*=NULL*/) : CDialog(CZXPTDlg::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(2) , m_dSpWall(180) , m_bNOSetDefault(TRUE) { GET_CACHE(CZXPTDlg , %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); m_id.setNull(); if (m_bNOSetDefault) m_sNo = IDCreate(); } CZXPTDlg::~CZXPTDlg() { } void CZXPTDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); 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_EDIT31, m_dSpWall); DDX_Text(pDX, IDC_EDIT14, m_sFactory); DDX_Text(pDX, IDC_EDIT28, m_sNo); 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_EDIT22, m_sMaterial); DDX_Check(pDX, IDC_CHECK6, m_bNOSetDefault); } BEGIN_MESSAGE_MAP(CZXPTDlg, CDialog) ON_BN_CLICKED(IDOK, &CZXPTDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_CHECK6, &CZXPTDlg::OnBnClickedCheck6) END_MESSAGE_MAP() void CZXPTDlg::OnBnClickedOk() { UpdateData(); SET_CACHE(CZXPTDlg , %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 CZXPTDlg::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 CZXPTDlg::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(); } } BOOL CZXPTDlg::OnInitDialog() { CDialog::OnInitDialog(); if (m_bNOSetDefault) { GetDlgItem(IDC_EDIT28)->EnableWindow(FALSE); } return TRUE; } void CZXPTDlg::OnBnClickedCheck6() { if (m_bNOSetDefault) { GetDlgItem(IDC_EDIT28)->EnableWindow(FALSE); } else { GetDlgItem(IDC_EDIT28)->EnableWindow(TRUE); } }