#include "stdafx.h" #include "AcDbObjectPtr.h" #include "globalFunc.h" #include "DbVerticalSection.h" #include "DbVerticalSectionFeed.h" #include "VerticalSectionSettingDlg.h" //*************************************************************************************************** // 设置表头 //*************************************************************************************************** void SetVerticalSectionHead() { TCHAR szText[256]; BOOL bIsFeedSys = FALSE; ads_getstring(0, _T("\n设置纵断面图表头1:雨污系统 2:给水系统<雨污系统>:"), szText); if (_tcsicmp(szText, _T("2")) == 0) bIsFeedSys = TRUE; CTemporaryResourceOverride vTemp; CVerticalSectionSettingDlg dlg; //CRegProperty regProp(GetRegLocation(), _T("TWTConfig")); //regProp.SetTopRootKey(HKEY_CURRENT_USER); //regProp.GetValue(_T("VerticalSectionHead"), g_csVerticalSectionHead); //regProp.GetValue(_T("VerticalSectionHeadFeed"), g_csVerticalSectionHeadFeed); CString csHead = g_Option::instance().g_csVerticalSectionHead; if (bIsFeedSys) csHead = g_Option::instance().g_csVerticalSectionHeadFeed; int idx(1); while (1) { TCHAR sBuf[256] = _T(""); GlobalFunc::GetStringAtIndex(csHead, idx, sBuf); if (_tcsicmp(sBuf, _T("")) == 0) break; dlg.m_lstSel.Append(tstrnew(sBuf)); idx++; } if (dlg.DoModal() != IDOK) return; if (bIsFeedSys) g_Option::instance().g_csVerticalSectionHeadFeed = dlg.m_csRet; else g_Option::instance().g_csVerticalSectionHead = dlg.m_csRet; //regProp.SetValue(_T("VerticalSectionHead"), g_csVerticalSectionHead); //regProp.SetValue(_T("VerticalSectionHeadFeed"), g_csVerticalSectionHeadFeed); } //*************************************************************************************************** // 修改表头 //*************************************************************************************************** void ModifyVerticalSectionHead() { RBList rbMask(RTDXF0, _T("AEC_ZT_VERTICALSECTION,AEC_ZT_VERTICALSECTION_FEED"), 8, _T("*"), NULL); Entity ent; CTemporaryResourceOverride vTemp; CVerticalSectionSettingDlg dlg; if (GlobalFunc::SelectEntity(_T("\n请选择要修改表头的纵断面图<退出>:"), ent, rbMask) != RTNORM) return; CString csHead; if (ent.Is(_T("AEC_ZT_VERTICALSECTION"))) { OPENOBJ_BEGIN(ent, AcDb::kForRead, CDbVerticalSection, pVt); if (pVt) { csHead = pVt->GetSheetHead(); } OPENOBJ_END(); } else { OPENOBJ_BEGIN(ent, AcDb::kForRead, CDbVerticalSectionFeed, pVt); if (pVt) { csHead = pVt->GetSheetHead(); } OPENOBJ_END(); } int idx(1); while (1) { TCHAR sBuf[256] = _T(""); GlobalFunc::GetStringAtIndex(csHead, idx, sBuf); if (_tcsicmp(sBuf, _T("")) == 0) break; dlg.m_lstSel.Append(tstrnew(sBuf)); idx++; } if (dlg.DoModal() != IDOK) return; if (ent.Is(_T("AEC_ZT_VERTICALSECTION"))) { OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbVerticalSection, pVt); if (pVt) { pVt->SetSheetHead(dlg.m_csRet); } OPENOBJ_END(); } else { OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbVerticalSectionFeed, pVt); if (pVt) { pVt->SetSheetHead(dlg.m_csRet); } OPENOBJ_END(); } } ///////////////////////////////////////////////////////////////////////////// // CVerticalSectionSettingDlg dialog CVerticalSectionSettingDlg::CVerticalSectionSettingDlg(CWnd* pParent /*=NULL*/) : CDialog(CVerticalSectionSettingDlg::IDD, pParent) { //{{AFX_DATA_INIT(CVerticalSectionSettingDlg) m_iSelAll = 0; m_iSelSel = 0; //}}AFX_DATA_INIT } void CVerticalSectionSettingDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CVerticalSectionSettingDlg) DDX_Control(pDX, IDC_LIST_SEL, m_listSel); DDX_Control(pDX, IDC_LIST_ALL, m_listAll); DDX_LBIndex(pDX, IDC_LIST_ALL, m_iSelAll); DDX_LBIndex(pDX, IDC_LIST_SEL, m_iSelSel); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CVerticalSectionSettingDlg, CDialog) //{{AFX_MSG_MAP(CVerticalSectionSettingDlg) ON_BN_CLICKED(IDC_BUT_ADD, OnButAdd) ON_BN_CLICKED(IDC_BUT_REMOVE, OnButRemove) ON_BN_CLICKED(IDC_BUTTON_UP, OnButtonUp) ON_BN_CLICKED(IDC_BUTTON_DOWN, OnButtonDown) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVerticalSectionSettingDlg message handlers BOOL CVerticalSectionSettingDlg::OnInitDialog() { CDialog::OnInitDialog(); m_lstAll.Append(tstrnew(_T("井编号"))); m_lstAll.Append(tstrnew(_T("自然地面标高(m)"))); m_lstAll.Append(tstrnew(_T("设计地面标高(m)"))); m_lstAll.Append(tstrnew(_T("埋设深度(m)"))); m_lstAll.Append(tstrnew(_T("覆土厚度(m)"))); m_lstAll.Append(tstrnew(_T("管标高(m)"))); m_lstAll.Append(tstrnew(_T("管道基础"))); m_lstAll.Append(tstrnew(_T("管材和接口形式"))); m_lstAll.Append(tstrnew(_T("桩号"))); m_lstAll.Append(tstrnew(_T("管道长度(m)"))); m_lstAll.Append(tstrnew(_T("管径(mm)"))); m_lstAll.Append(tstrnew(_T("管道坡度"))); m_lstAll.Append(tstrnew(_T("管线平面"))); m_lstAll.Append(tstrnew(_T("井径(mm)"))); m_lstAll.Append(tstrnew(_T("备注"))); for (int i = 0; i < m_lstAll.Length(); i++) { m_listAll.AddString(m_lstAll[i]); } ResetList(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CVerticalSectionSettingDlg::ResetList() { m_listSel.ResetContent(); for (int i = 0; i < m_lstSel.Length(); i++) { m_listSel.AddString(m_lstSel[i]); } } void CVerticalSectionSettingDlg::OnButAdd() { UpdateData(TRUE); if (m_iSelAll < 0) return; CString csSel = m_lstAll[m_iSelAll]; if (m_lstSel.Index((const TCHAR*)csSel) > -1) return; m_lstSel.Append(tstrnew(csSel)); ResetList(); } void CVerticalSectionSettingDlg::OnButRemove() { UpdateData(TRUE); if (m_iSelSel < 0) return; m_lstSel.Remove(m_iSelSel); ResetList(); } void CVerticalSectionSettingDlg::OnButtonUp() { UpdateData(TRUE); if (m_iSelSel < 1) return; m_lstSel.Swap(m_iSelSel, m_iSelSel - 1); int old = m_iSelSel - 1; ResetList(); m_iSelSel = old; UpdateData(FALSE); } void CVerticalSectionSettingDlg::OnButtonDown() { UpdateData(TRUE); if (m_iSelSel < 0 || m_iSelSel == m_lstSel.Length() - 1) return; int old = m_iSelSel + 1; m_lstSel.Swap(m_iSelSel, m_iSelSel + 1); ResetList(); m_iSelSel = old; UpdateData(FALSE); } void CVerticalSectionSettingDlg::OnOK() { UpdateData(TRUE); for (int i = 0; i < m_lstSel.Length(); i++) { m_csRet = m_csRet + _T(" ") + m_lstSel[i]; } CDialog::OnOK(); }