411 lines
12 KiB
C++
411 lines
12 KiB
C++
#include "stdafx.h"
|
|
#include "LayoutExtinguisher.h"
|
|
#include "CoreTools.h"
|
|
#include "AcGiViewDraw.h"
|
|
#include "AecDbEwEquipment.h"
|
|
#include "dbobjptr.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CLayoutExtinguisher, CDialog)
|
|
|
|
CLayoutExtinguisher::CLayoutExtinguisher(CWnd* pParent)
|
|
: CDialog(IDD_DLG_EXTINGUISHER, pParent)
|
|
, m_bShowProtectR(FALSE)
|
|
, m_bDrawBox(FALSE)
|
|
, m_iBoxGround(0)
|
|
, m_iLayout(1)
|
|
, m_dBoxL(290)
|
|
, m_dBoxW(290)
|
|
, m_sBoxModel(_T("XMDF1-2"))
|
|
, m_sExtModel(_T("MSTZ/20(水型)"))
|
|
, m_sExtLevel(_T("4A"))
|
|
, m_iExtCount(1)
|
|
, m_dExtScale(.35)
|
|
, m_dExtProtectR(3)
|
|
, m_iExtType(1)
|
|
, m_s2DSel(_T(""))
|
|
, m_s3DSel(_T(""))
|
|
, m_pEqu(NULL)
|
|
{ }
|
|
|
|
CLayoutExtinguisher::~CLayoutExtinguisher()
|
|
{
|
|
DELETE_PTR(m_pEqu);
|
|
}
|
|
|
|
void CLayoutExtinguisher::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Check(pDX, IDC_CHECK_EXT_SHOW_PROTECT_R, m_bShowProtectR);
|
|
DDX_Check(pDX, IDC_CHECK_BOX_DRAW_BOX, m_bDrawBox);
|
|
DDX_Radio(pDX, IDC_RADIO_BOX_GROUND, m_iBoxGround);
|
|
DDX_Radio(pDX, IDC_RADIO_LAYOUT_FREE, m_iLayout);
|
|
DDX_Text(pDX, IDC_CMB_BOX_LENGTH, m_dBoxL);
|
|
DDX_Text(pDX, IDC_CMB_BOX_WIDTH, m_dBoxW);
|
|
DDX_CBString(pDX, IDC_CMB_BOX_MODEL, m_sBoxModel);
|
|
DDX_CBString(pDX, IDC_CMB_EXT_STANDARD, m_sExtModel);
|
|
DDX_Text(pDX, IDC_EDIT_EXT_LEVEL, m_sExtLevel);
|
|
DDX_Text(pDX, IDC_EDIT_EXT_COUNT, m_iExtCount);
|
|
DDX_Text(pDX, IDC_EDIT_EXT_SCALE, m_dExtScale);
|
|
DDX_Text(pDX, IDC_EDIT_EXT_PROTECT_R, m_dExtProtectR);
|
|
DDX_Radio(pDX, IDC_RADIO_EXT_MODEL_HAND, m_iExtType);
|
|
}
|
|
|
|
BOOL CLayoutExtinguisher::OnInitDialog()
|
|
{
|
|
UpdateData(FALSE);
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
if (!m_wndViewCtrl2d.SubclassDlgItem(IDC_PREVIEW_2D, this))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
if (!m_wndViewCtrl3d.SubclassDlgItem(IDC_PREVIEW_3D, this))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
initExtStandard();
|
|
initBoxiGround();
|
|
|
|
OnBnClickedDrawBox();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CLayoutExtinguisher, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CLayoutExtinguisher::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_CHECK_BOX_DRAW_BOX, &CLayoutExtinguisher::OnBnClickedDrawBox)
|
|
ON_BN_CLICKED(IDC_BTN_SEL_2D, &CLayoutExtinguisher::OnBnClickedBtnSel2d)
|
|
ON_BN_CLICKED(IDC_BTN_SEL_3D, &CLayoutExtinguisher::OnBnClickedBtnSel3d)
|
|
ON_BN_CLICKED(IDC_RADIO_BOX_GROUND, &CLayoutExtinguisher::OnBnClickedRadioBoxGround)
|
|
ON_BN_CLICKED(IDC_RADIO_BOX_WALL, &CLayoutExtinguisher::OnBnClickedRadioBoxGround)
|
|
ON_BN_CLICKED(IDC_RADIO_EXT_MODEL_HAND, &CLayoutExtinguisher::OnBnClickedRadioExtModelHand)
|
|
ON_BN_CLICKED(IDC_RADIO_EXT_MODEL_HAND_P, &CLayoutExtinguisher::OnBnClickedRadioExtModelHand)
|
|
ON_BN_CLICKED(IDC_RADIO_EXT_MODEL_CART, &CLayoutExtinguisher::OnBnClickedRadioExtModelHand)
|
|
ON_BN_CLICKED(IDC_RADIO_EXT_MODEL_CART_P, &CLayoutExtinguisher::OnBnClickedRadioExtModelHand)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CLayoutExtinguisher::OnBnClickedOk()
|
|
{
|
|
if (!UpdateData(TRUE)) return;
|
|
|
|
if (!m_pEqu)
|
|
{
|
|
AfxMessageBox(_T("请选择一个灭火器!"));
|
|
return;
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CLayoutExtinguisher::OnBnClickedDrawBox()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd = GetDlgItem(IDC_RADIO_BOX_GROUND);
|
|
if (pWnd) pWnd->EnableWindow(m_bDrawBox);
|
|
pWnd = GetDlgItem(IDC_RADIO_BOX_WALL);
|
|
if (pWnd) pWnd->EnableWindow(m_bDrawBox);
|
|
pWnd = GetDlgItem(IDC_CMB_BOX_MODEL);
|
|
if (pWnd) pWnd->EnableWindow(m_bDrawBox);
|
|
pWnd = GetDlgItem(IDC_CMB_BOX_LENGTH);
|
|
if (pWnd) pWnd->EnableWindow(m_bDrawBox);
|
|
pWnd = GetDlgItem(IDC_CMB_BOX_WIDTH);
|
|
if (pWnd) pWnd->EnableWindow(m_bDrawBox);
|
|
}
|
|
|
|
void CLayoutExtinguisher::OnBnClickedBtnSel2d()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
CString sFile(FilePath::GetRootDir());
|
|
sFile += _T("\\TK\\Customer\\图库中心\\图块库\\给排水图库\\");
|
|
if (m_iExtType == 0) // 手提
|
|
sFile += _T("手提式灭火器.dwg");
|
|
else if (m_iExtType == 1) // 手提贮压
|
|
sFile += _T("手提贮压式灭火器.dwg");
|
|
else if (m_iExtType == 2) // 推车
|
|
sFile += _T("推车式灭火器.dwg");
|
|
else // 推车贮压
|
|
sFile += _T("推车贮压式灭火器.dwg");
|
|
|
|
m_s2DSel = CoreTools::selectBlockByDWG( sFile , _T("") , m_s2DSel);
|
|
|
|
AcDbDatabase* _pDb = new AcDbDatabase(false);
|
|
std::shared_ptr<AcDbDatabase> pDb(_pDb);
|
|
if (pDb->readDwgFile(sFile, AcDbDatabase::kForReadAndAllShare) != Acad::eOk) return;
|
|
|
|
AcDbBlockTable* _pBT = NULL;
|
|
pDb->getSymbolTable(_pBT, AcDb::kForRead);
|
|
if (!_pBT) return;
|
|
AcDbObjectId idBT(_pBT->objectId());
|
|
_pBT->close();
|
|
|
|
AcDbBlockTablePointer pBT(idBT, AcDb::kForRead);
|
|
if (pBT.openStatus() != Acad::eOk) return;
|
|
|
|
std::vector<CString> vec;
|
|
CoreTools::SplitString(m_s2DSel, _T('|'), vec);
|
|
if (vec.size() < 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
AcDbObjectId idBlock;
|
|
pBT->getAt(vec.at(1), idBlock);
|
|
pBT->close();
|
|
|
|
AcDbBlockReference* pRef = new AcDbBlockReference();
|
|
pRef->setBlockTableRecord(idBlock);
|
|
pRef->setPosition(AcGePoint3d::kOrigin);
|
|
pRef->setRotation(0.0);
|
|
|
|
pRef->setScaleFactors(AcGeScale3d(.8));
|
|
|
|
AcDbExtents ext;
|
|
pRef->getGeomExtents(ext);
|
|
|
|
m_wndViewCtrl2d.clearAll();
|
|
m_wndViewCtrl2d.init(true);
|
|
m_wndViewCtrl2d.SetOrbitFlag(OBF_ZOOM);
|
|
m_wndViewCtrl2d.InitFromCurrentView2D(ext, true);
|
|
|
|
m_wndViewCtrl2d.Add(pRef);
|
|
|
|
m_wndViewCtrl2d.view()->invalidate();
|
|
m_wndViewCtrl2d.Invalidate();
|
|
m_wndViewCtrl2d.RedrawWindow();
|
|
}
|
|
|
|
void CLayoutExtinguisher::OnBnClickedBtnSel3d()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
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_wndViewCtrl3d.clearAll();
|
|
m_wndViewCtrl3d.init(true);
|
|
m_wndViewCtrl3d.SetOrbitFlag(OBF_PAN | OBF_ZOOM | OBF_COTE);
|
|
m_wndViewCtrl3d.InitFromCurrentView3D(exts, true);
|
|
|
|
m_wndViewCtrl3d.Add(m_pEqu);
|
|
|
|
m_wndViewCtrl3d.view()->invalidate();
|
|
m_wndViewCtrl3d.Invalidate();
|
|
m_wndViewCtrl3d.RedrawWindow();
|
|
|
|
m_dBoxW = exts.maxPoint().x - exts.minPoint().x;
|
|
m_dBoxL = exts.maxPoint().y - exts.minPoint().y;
|
|
}
|
|
|
|
void CLayoutExtinguisher::initExtStandard()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
CComboBox *pCmb = (CComboBox *)GetDlgItem(IDC_CMB_EXT_STANDARD);
|
|
if (!pCmb) return;
|
|
|
|
pCmb->ResetContent();
|
|
|
|
if (m_iExtType == 0)
|
|
{
|
|
pCmb->AddString(_T("MF/ABC2(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF/ABC3(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF/ABC4(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF/ABC5(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MS/Q3(水型)"));
|
|
pCmb->AddString(_T("MS/T3(水型)"));
|
|
pCmb->AddString(_T("MS/Q6(水型)"));
|
|
pCmb->AddString(_T("MS/T6(水型)"));
|
|
pCmb->AddString(_T("MS/Q9(水型)"));
|
|
pCmb->AddString(_T("MS/T9(水型)"));
|
|
pCmb->AddString(_T("MP3(泡沫)"));
|
|
pCmb->AddString(_T("MP/AR3(泡沫)"));
|
|
pCmb->AddString(_T("MP4(泡沫)"));
|
|
pCmb->AddString(_T("MP/AR4(泡沫)"));
|
|
pCmb->AddString(_T("MP6(泡沫)"));
|
|
pCmb->AddString(_T("MP/AR6(泡沫)"));
|
|
pCmb->AddString(_T("MP9(泡沫)"));
|
|
pCmb->AddString(_T("MP/AR9(泡沫)"));
|
|
pCmb->AddString(_T("MF/ABC1(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF/ABC6(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF/ABC8(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF/ABC10(干粉磷酸铵盐)"));
|
|
pCmb->AddString(_T("MF1(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF2(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF3(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF4(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF5(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF6(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF8(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MF10(干粉碳酸氢钠)"));
|
|
pCmb->AddString(_T("MY1(卤代烷)"));
|
|
pCmb->AddString(_T("MY2(卤代烷)"));
|
|
pCmb->AddString(_T("MY3(卤代烷)"));
|
|
pCmb->AddString(_T("MY4(卤代烷)"));
|
|
pCmb->AddString(_T("MY6(卤代烷)"));
|
|
pCmb->AddString(_T("MT2(二氧化碳)"));
|
|
pCmb->AddString(_T("MT3(二氧化碳)"));
|
|
pCmb->AddString(_T("MT5(二氧化碳)"));
|
|
pCmb->AddString(_T("MT7(二氧化碳)"));
|
|
}
|
|
else if (m_iExtType == 1)
|
|
{
|
|
pCmb->AddString(_T("MSTZ/20(水型)"));
|
|
pCmb->AddString(_T("MSTZ/45(水型)"));
|
|
pCmb->AddString(_T("MSTZ/60(水型)"));
|
|
pCmb->AddString(_T("MSTZ/125(水型)"));
|
|
pCmb->AddString(_T("MPTZ/AR20(泡沫)"));
|
|
pCmb->AddString(_T("MPTZ/AR45(泡沫)"));
|
|
pCmb->AddString(_T("MPTZ/AR60(泡沫)"));
|
|
pCmb->AddString(_T("MPTZ/AR125(泡沫)"));
|
|
pCmb->AddString(_T("MFTZ/20(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/50(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/100(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/125(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC20(ABC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC50(ABC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC100(ABC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC125(ABC干粉)"));
|
|
pCmb->AddString(_T("MJTZ/10(卤代烷)"));
|
|
pCmb->AddString(_T("MJTZ/20(卤代烷)"));
|
|
pCmb->AddString(_T("MJTZ/30(卤代烷)"));
|
|
pCmb->AddString(_T("MJTZ/50(卤代烷)"));
|
|
pCmb->AddString(_T("MTT/10(二氧化碳)"));
|
|
pCmb->AddString(_T("MTT/20(二氧化碳)"));
|
|
pCmb->AddString(_T("MTT/30(二氧化碳)"));
|
|
pCmb->AddString(_T("MTT/50(二氧化碳)"));
|
|
}
|
|
else if (m_iExtType == 2)
|
|
{
|
|
pCmb->AddString(_T("MSZ/3(水型)"));
|
|
pCmb->AddString(_T("MSZ/AR3(水型)"));
|
|
pCmb->AddString(_T("MSZ/6(水型)"));
|
|
pCmb->AddString(_T("MSZ/AR6(水型)"));
|
|
pCmb->AddString(_T("MSZ/9(水型)"));
|
|
pCmb->AddString(_T("MSZ/AR9(水型)"));
|
|
pCmb->AddString(_T("MPZ/AR3(泡沫)"));
|
|
pCmb->AddString(_T("MPZ/AR6(泡沫)"));
|
|
pCmb->AddString(_T("MPZ/AR9(泡沫)"));
|
|
pCmb->AddString(_T("MFZ/1(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/2(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/3(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/4(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/5(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/6(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/8(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/9(BC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC1(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC2(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC3(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC4(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC5(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC6(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC8(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC9(ABC干粉)"));
|
|
pCmb->AddString(_T("MFZ/ABC12(ABC干粉)"));
|
|
pCmb->AddString(_T("MJZ/1(卤代烷)"));
|
|
pCmb->AddString(_T("MJZ/2(卤代烷)"));
|
|
pCmb->AddString(_T("MJZ/4(卤代烷)"));
|
|
pCmb->AddString(_T("MJZ/6(卤代烷)"));
|
|
pCmb->AddString(_T("MTZ/2(二氧化碳)"));
|
|
pCmb->AddString(_T("MTZ/3(二氧化碳)"));
|
|
pCmb->AddString(_T("MTZ/5(二氧化碳)"));
|
|
pCmb->AddString(_T("MTZ/7(二氧化碳)"));
|
|
}
|
|
else
|
|
{
|
|
pCmb->AddString(_T("MSTZ/20(水型)"));
|
|
pCmb->AddString(_T("MSTZ/45(水型)"));
|
|
pCmb->AddString(_T("MSTZ/60(水型)"));
|
|
pCmb->AddString(_T("MSTZ/125(水型)"));
|
|
pCmb->AddString(_T("MPTZ/AR20(泡沫)"));
|
|
pCmb->AddString(_T("MPTZ/AR45(泡沫)"));
|
|
pCmb->AddString(_T("MPTZ/AR60(泡沫)"));
|
|
pCmb->AddString(_T("MPTZ/AR125(泡沫)"));
|
|
pCmb->AddString(_T("MFTZ/20(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/50(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/100(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/125(BC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC20(ABC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC50(ABC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC100(ABC干粉)"));
|
|
pCmb->AddString(_T("MFTZ/ABC125(ABC干粉)"));
|
|
pCmb->AddString(_T("MJTZ/10(卤代烷)"));
|
|
pCmb->AddString(_T("MJTZ/20(卤代烷)"));
|
|
pCmb->AddString(_T("MJTZ/30(卤代烷)"));
|
|
pCmb->AddString(_T("MJTZ/50(卤代烷)"));
|
|
pCmb->AddString(_T("MTT/10(二氧化碳)"));
|
|
pCmb->AddString(_T("MTT/20(二氧化碳)"));
|
|
pCmb->AddString(_T("MTT/30(二氧化碳)"));
|
|
pCmb->AddString(_T("MTT/50(二氧化碳)"));
|
|
}
|
|
|
|
pCmb->SetCurSel(0);
|
|
return;
|
|
}
|
|
|
|
void CLayoutExtinguisher::initBoxiGround()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
CComboBox *pCmb = (CComboBox *)GetDlgItem(IDC_CMB_BOX_MODEL);
|
|
if (!pCmb) return;
|
|
|
|
pCmb->ResetContent();
|
|
|
|
if (m_iBoxGround == 0)
|
|
{
|
|
pCmb->AddString(_T("XMDF1-2"));
|
|
pCmb->AddString(_T("XMDF1-3"));
|
|
pCmb->AddString(_T("XMDF1-4"));
|
|
pCmb->AddString(_T("XMDF2-2"));
|
|
pCmb->AddString(_T("XMDF2-3"));
|
|
pCmb->AddString(_T("XMDF2-4"));
|
|
pCmb->AddString(_T("XMDF3-2"));
|
|
pCmb->AddString(_T("XMDF3-3"));
|
|
pCmb->AddString(_T("XMDF3-4"));
|
|
}
|
|
else
|
|
{
|
|
pCmb->AddString(_T("XMQK1-2"));
|
|
pCmb->AddString(_T("XMQK1-3"));
|
|
pCmb->AddString(_T("XMQK1-4"));
|
|
pCmb->AddString(_T("XMQK2-2"));
|
|
pCmb->AddString(_T("XMQK2-3"));
|
|
pCmb->AddString(_T("XMQK2-4"));
|
|
pCmb->AddString(_T("XMQK3-2"));
|
|
pCmb->AddString(_T("XMQK3-3"));
|
|
pCmb->AddString(_T("XMQK3-4"));
|
|
}
|
|
|
|
pCmb->SetCurSel(0);
|
|
return;
|
|
}
|
|
|
|
void CLayoutExtinguisher::OnBnClickedRadioBoxGround()
|
|
{
|
|
initBoxiGround();
|
|
}
|
|
|
|
void CLayoutExtinguisher::OnBnClickedRadioExtModelHand()
|
|
{
|
|
initExtStandard();
|
|
}
|
|
|
|
AecDbEwEquipment* CLayoutExtinguisher::getEquPtr()
|
|
{
|
|
if (m_pEqu)
|
|
return (AecDbEwEquipment*)m_pEqu->clone();
|
|
|
|
return NULL;
|
|
}
|