#include "stdafx.h" #include "DrawBridgeDlg.h" #include "pipelinetools.h" IMPLEMENT_DYNAMIC(DrawBridgeDlg, CDialog) DrawBridgeDlg::DrawBridgeDlg(CWnd* pParent /*=nullptr*/) : CDialog(IDD_DRAW_BRIDGE, pParent) , m_sMaterial(_T("")) , m_sFittingMaterial(_T("")) , m_sSysLay(_T("")) , m_pDb(NULL) { ::memset(&m_param, 0, sizeof(WPipe::PipeParam)); m_param.m_dRRatio = 1.; m_param.m_dW = 200.; m_param.m_dH = 100.; m_param.m_dThick = 2.; } DrawBridgeDlg::~DrawBridgeDlg() { } void DrawBridgeDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDT_W, m_param.m_dW); DDV_MinMaxDouble(pDX, m_param.m_dW, 0.1, 9999999.0); DDX_Text(pDX, IDC_EDT_H, m_param.m_dH); DDV_MinMaxDouble(pDX, m_param.m_dH, 0.1, 999999.0); DDX_Text(pDX, IDC_EDT_T, m_param.m_dThick); DDV_MinMaxDouble(pDX, m_param.m_dThick, 0.1, 999999.0); DDX_Text(pDX, IDC_EDT_R, m_param.m_dRRatio); DDV_MinMaxDouble(pDX, m_param.m_dRRatio, 1., 999999.0); DDX_CBString(pDX, IDC_CMB_MATERIAL, m_sMaterial); DDX_CBString(pDX, IDC_CMB_FITTING_MATERIAL, m_sFittingMaterial); DDX_CBString(pDX, IDC_CMB_SYSLAY, m_sSysLay); DDX_Control(pDX, IDC_CMB_SYSLAY, m_cmbSysLay); DDX_Control(pDX, IDC_CMB_MATERIAL, m_cmbMaterial); DDX_Control(pDX, IDC_CMB_FITTING_MATERIAL, m_cmbFittingMaterial); } BOOL DrawBridgeDlg::OnInitDialog() { CDialog::OnInitDialog(); CStringArray arPipe, arFit, arSyses; if (PipelineTools::getPipelineMaterial(m_pDb, arPipe, arFit)) { m_cmbMaterial.ResetContent(); for (int i = 0; i < arPipe.GetSize(); i++) m_cmbMaterial.AddString(arPipe.GetAt(i)); if (!arPipe.IsEmpty()) { m_cmbMaterial.SetCurSel(0); m_cmbMaterial.GetLBText(0, m_sMaterial); } m_cmbFittingMaterial.ResetContent(); for (int i = 0; i < arFit.GetSize(); i++) m_cmbFittingMaterial.AddString(arFit.GetAt(i)); if (!arFit.IsEmpty()) { m_cmbFittingMaterial.SetCurSel(0); m_cmbFittingMaterial.GetLBText(0, m_sFittingMaterial); } } if (PipelineTools::getLayerSys(m_pDb, arSyses)) { m_cmbSysLay.ResetContent(); for (int i = 0; i < arSyses.GetSize(); i++) m_cmbSysLay.AddString(arSyses.GetAt(i)); if (arSyses.GetSize() > 0) { m_cmbSysLay.SetCurSel(0); m_cmbSysLay.GetLBText(0, m_sSysLay); } } GET_CACHE(DrawBridgeDlg, %f%f%s%f%f%s%s , &m_param.m_dW, &m_param.m_dH, &m_sMaterial , &m_param.m_dThick, &m_param.m_dRRatio, &m_sFittingMaterial , &m_sSysLay); UpdateData(FALSE); return TRUE; } BEGIN_MESSAGE_MAP(DrawBridgeDlg, CDialog) ON_BN_CLICKED(IDC_BTN_PICK, &DrawBridgeDlg::OnBnClickedBtnPick) ON_BN_CLICKED(IDOK, &DrawBridgeDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BTN_ADDMETI, &DrawBridgeDlg::OnBnClickedBtnAddmeti) ON_BN_CLICKED(IDC_BTN_SYSSET, &DrawBridgeDlg::OnBnClickedBtnSysset) ON_BN_CLICKED(IDC_BTN_BIM, &DrawBridgeDlg::OnBnClickedBtnBim) END_MESSAGE_MAP() void DrawBridgeDlg::OnBnClickedBtnPick() { //切换界面的当前活动 acedGetAcadFrame()->EnableWindow(TRUE); ShowWindow(SW_HIDE); acedGetAcadFrame()->SetFocus(); CString strLay(_T("")); WPipe::PipeParam param; if (!PipelineTools::getPipelineParam(param, strLay)) { AfxMessageBox(_T("提取失败。")); return; } if (param.m_app != WPipe::eBridge) { AfxMessageBox(_T("请选择一段风管。")); return; } ::memset(&m_param, 0, sizeof(WPipe::PipeParam)); ::memcpy(&m_param, ¶m, sizeof(WPipe::PipeParam)); if (!PipelineTools::getSysByLayer(m_pDb, strLay, m_sSysLay)) { AfxMessageBox(_T("查询当前图层系统失败。")); return; } CString sSysTmp; for (int j = 0; j < m_cmbSysLay.GetCount(); j++) { m_cmbSysLay.GetLBText(j, sSysTmp); if (m_sSysLay.CompareNoCase(sSysTmp)) { m_cmbSysLay.SetCurSel(j); break; } } UpdateData(FALSE); ShowWindow(SW_SHOW); SetFocus(); acedGetAcadFrame()->EnableWindow(FALSE); EnableWindow(TRUE); } void DrawBridgeDlg::OnBnClickedOk() { UpdateData(TRUE); SET_CACHE(DrawBridgeDlg, %f%f%s%f%f%s%s , m_param.m_dW, m_param.m_dH, m_sMaterial , m_param.m_dThick, m_param.m_dRRatio, m_sFittingMaterial , m_sSysLay); //创建系统图层 int nCursel = m_cmbSysLay.GetCurSel(); if (nCursel == -1) { AfxMessageBox(_T("请选择绘制管线的系统!")); return; } //确认创建图层 m_cmbSysLay.GetLBText(nCursel, m_sSysLay); PipelineTools::createSysAllLayer(m_pDb, m_sSysLay); PipelineTools::setCurrentLayerSys(m_sSysLay); m_param.m_dD = m_param.m_dW; m_param.m_dDN = m_param.m_dW; m_param.m_dOD = m_param.m_dW + m_param.m_dThick; m_param.m_eD = WPipe::eDN; m_param.m_app = WPipe::eBridge; if (_tcsclen((LPCTSTR)m_sMaterial) < 255) _tcscpy(m_param.szMertial, (LPCTSTR)m_sMaterial); if (_tcsclen((LPCTSTR)m_sFittingMaterial) < 255) _tcscpy(m_param.szMertialFit, (LPCTSTR)m_sFittingMaterial); CDialog::OnOK(); } void DrawBridgeDlg::OnBnClickedBtnAddmeti() { CStringArray arPipe, arFit; if (!PipelineTools::setPipelineMaterial(m_pDb, arPipe, arFit)) { return; } m_cmbMaterial.ResetContent(); for (int i = 0; i < arPipe.GetSize(); i++) { m_cmbMaterial.InsertString(i, arPipe.GetAt(i)); if (m_sMaterial.CompareNoCase(arPipe.GetAt(i)) == 0) m_cmbMaterial.SetCurSel(i); } m_cmbFittingMaterial.ResetContent(); for (int i = 0; i < arFit.GetSize(); i++) { m_cmbFittingMaterial.InsertString(i, arFit.GetAt(i)); if (m_sFittingMaterial.CompareNoCase(arFit.GetAt(i)) == 0) m_cmbFittingMaterial.SetCurSel(i); } } void DrawBridgeDlg::OnBnClickedBtnSysset() { CStringArray arSyses; if (!PipelineTools::setLayerSys(m_pDb, arSyses)) { return; } m_cmbSysLay.ResetContent(); for (int i = 0; i < arSyses.GetSize(); i++) { m_cmbSysLay.AddString(arSyses.GetAt(i)); } if (arSyses.GetSize() > 0) { m_cmbSysLay.SetCurSel(0); m_cmbSysLay.GetLBText(0, m_sSysLay); } } void DrawBridgeDlg::OnBnClickedBtnBim() { // TODO: Add your control notification handler code here } void DrawBridgeDlg::SetDbServer(CUIISQLiteServer * pDb) { m_pDb = pDb; }