#include "stdafx.h" #include "BZJJDlg.h" #include "AecDbEwEquipment.h" #include "AcGiViewDraw.h" #include "UIHistory.h" #include "coretools.h" IMPLEMENT_DYNAMIC(CBZJJDlg, CDialog) CBZJJDlg::CBZJJDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_BZJJ_DLG, pParent) , m_pEqu(NULL) , m_dFirst(0) , m_dSpace(1500) , m_dSpaceWall(500) , m_dLength(0) , m_dWidth(0) , m_sFactory(_T("")) { GET_CACHE(CBZJJDlg, %s%d%d%d, &m_sFactory, &m_dFirst, &m_dSpace, &m_dSpaceWall); } CBZJJDlg::~CBZJJDlg() { DELETE_PTR(m_pEqu); } void CBZJJDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT20, m_sFactory); DDX_Text(pDX, IDC_EDIT1, m_dFirst); DDX_Text(pDX, IDC_EDIT2, m_dSpace); DDX_Text(pDX, IDC_EDIT3, m_dSpaceWall); DDX_Text(pDX, IDC_EDIT4, m_dLength); DDX_Text(pDX, IDC_EDIT5, m_dWidth); } BEGIN_MESSAGE_MAP(CBZJJDlg, CDialog) ON_BN_CLICKED(IDC_BTN_SELE, &CBZJJDlg::OnBnClickedBtnSele) ON_BN_CLICKED(IDOK, &CBZJJDlg::OnOk) END_MESSAGE_MAP() BOOL CBZJJDlg::OnInitDialog() { UpdateData(FALSE); CDialog::OnInitDialog(); m_wndViewCtrl.SubclassDlgItem(IDC_PREVIEW_PIC, this); return TRUE; } void CBZJJDlg::OnBnClickedBtnSele() { DELETE_PTR(m_pEqu); m_pEqu = CoreTools::selectEquipment(_T("常规卫浴\\"), _T("")); if (!m_pEqu) return; AcGiViewDraw dc; m_pEqu->Draw3d(dc); AcDbExtents exts; m_pEqu->getGeomExtents(exts); m_wndViewCtrl.clearAll(); m_wndViewCtrl.init(true); m_wndViewCtrl.SetOrbitFlag(OBF_PAN | OBF_ZOOM | OBF_COTE); m_wndViewCtrl.InitFromCurrentView3D(exts, true); m_wndViewCtrl.Add(m_pEqu); m_wndViewCtrl.view()->invalidate(); m_wndViewCtrl.Invalidate(); m_wndViewCtrl.RedrawWindow(); m_dWidth = exts.maxPoint().x - exts.minPoint().x; m_dLength = exts.maxPoint().y - exts.minPoint().y; UpdateData(FALSE); } void CBZJJDlg::OnOk() { if (!UpdateData(TRUE)) return; if (!m_pEqu) { AfxMessageBox(_T("请选择一个洁具!")); return; } if (m_dSpace < m_dWidth) { AfxMessageBox(_T("洁具之间的距离不能小于洁具的宽度!")); return; } SET_CACHE(CBZJJDlg, %s%d%d%d, m_sFactory, m_dFirst, m_dSpace, m_dSpaceWall); OnOK(); } AecDbEwEquipment* CBZJJDlg::getEquPtr() { if (m_pEqu) return (AecDbEwEquipment*)m_pEqu->clone(); return NULL; }