Files
envi-code/SourceCode/Code2026/ArchCmd/BZJJDlg.cpp
T

103 lines
2.2 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#include "stdafx.h"
2026-09-28 15:28:50 +08:00
#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);
2026-10-04 00:04:20 +08:00
m_pEqu = CoreTools::selectEquipment(_T("常规卫浴\\"), _T(""));
2026-09-28 15:28:50 +08:00
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)
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("请选择一个洁具!"));
2026-09-28 15:28:50 +08:00
return;
}
if (m_dSpace < m_dWidth)
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("洁具之间的距离不能小于洁具的宽度!"));
2026-09-28 15:28:50 +08:00
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;
}