1704 lines
39 KiB
C++
1704 lines
39 KiB
C++
#include "stdafx.h"
|
||
#include "DGGLDlg.h"
|
||
#include "AecDbEarthWorm.h"
|
||
#include "AecDbEarthWormFitting.h"
|
||
#include "KTCADUtilityEx.h"
|
||
#include "UITools.h"
|
||
#include "GLTKDlg.h"
|
||
#include "GLBJDlg.h"
|
||
#include "AecDbX3dGroup.h"
|
||
#include "TJBZJCDlg.h"
|
||
#include "TJZJDlg.h"
|
||
#include "FZGWDlg.h"
|
||
#include "TJDJDlg.h"
|
||
#include "TJDHDlg.h"
|
||
#include "TJDUDlg.h"
|
||
#include "MHQDlg.h"
|
||
#include "JPSGDLG.h"
|
||
#include "FMHDlg.h"
|
||
#include "JKSBDlg.h"
|
||
#include "SDFJDlg.h"
|
||
#include "WSJCDlg.h"
|
||
#include "SectionSettingDlg.h"
|
||
#include "AecDbShEarthWorm.h"
|
||
#include "GiDrawUtility.h"
|
||
#include "CoreTools.h"
|
||
|
||
#ifndef LAYOUTNAME_HD
|
||
#define LAYOUTNAME_HD _T("横断出图")
|
||
#endif
|
||
|
||
extern Acad::ErrorStatus AddToModelSpace(AcDbEntity* pEnt, AcDbObjectId& id, AcDbDatabase* pDb, bool bClose);
|
||
|
||
IMPLEMENT_DYNAMIC(CDGGLDlg, CBaseDialog)
|
||
|
||
|
||
CDGGLDlg::CDGGLDlg(bool bInsertLibrary, CWnd* pParent)
|
||
: CBaseDialog(CDGGLDlg::IDD, _T("DGGL"), IDC_STATIC_FRM, pParent)
|
||
, m_bIsInsertLibrary(bInsertLibrary)
|
||
, m_dInterH(3600)
|
||
, m_dOutT(400)
|
||
, m_dIntT(300)
|
||
, m_dRoomWAdd(3900)
|
||
, m_sCity(_T(""))
|
||
, m_sRoad(_T(""))
|
||
, m_dYXLen(80.0f)
|
||
, m_sRoomName(_T("电力舱"))
|
||
, m_dG(0.0)
|
||
, m_dt4(400)
|
||
, m_dt5(300)
|
||
, m_iSectionType(0)
|
||
{
|
||
SetCrossSectionScr(_T("RECT:2.6x3.0|4.2x3.0|2.4x3.0|0.4x0.3"));
|
||
m_bIsYXGLJD = false;
|
||
m_bHasGrade = false;
|
||
m_dG = 0.0;
|
||
m_pGroup = NULL;
|
||
m_pGroupRB = NULL;
|
||
m_pGLBJXDataMap = NULL;
|
||
m_dChamferInter = 150.0f;
|
||
m_pGLBZJCDataMap = NULL;
|
||
|
||
return;
|
||
}
|
||
|
||
CDGGLDlg::~CDGGLDlg()
|
||
{
|
||
|
||
}
|
||
|
||
void CDGGLDlg::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CBaseDialog::DoDataExchange(pDX);
|
||
DDX_Text(pDX, IDC_EDITCHARM, m_dChamferInter);
|
||
DDX_Text(pDX, IDC_EDITH, m_dInterH);
|
||
DDX_Text(pDX, IDC_EDITT1, m_dOutT);
|
||
DDX_Text(pDX, IDC_EDITT2, m_dIntT);
|
||
DDX_Text(pDX, IDC_EDITROOMW, m_dRoomWAdd);
|
||
DDX_CBString(pDX, IDC_COMBO1, m_sCity);
|
||
DDX_CBString(pDX, IDC_COMBO2, m_sRoad);
|
||
DDX_Text(pDX, IDC_EDITYX, m_dYXLen);
|
||
DDX_Text(pDX, IDC_EDIT21, m_dG);
|
||
DDX_Control(pDX, IDC_STATICG, m_wndStaticG);
|
||
DDX_Control(pDX, IDC_EDIT21, m_wndEditG);
|
||
DDX_Control(pDX, IDC_STATICP, m_wndStaticP);
|
||
DDX_Control(pDX, IDC_BUTTON1, m_wndRoomReducerBt);
|
||
DDX_Control(pDX, IDC_BUTTON4, m_wndBTRainbow);
|
||
DDX_Control(pDX, IDC_COMBO4, m_wndCombo4);
|
||
DDX_Text(pDX, IDC_EDIT24, m_sRoomName);
|
||
DDX_Text(pDX, IDC_EDITT3, m_dt4);
|
||
DDX_Text(pDX, IDC_EDITT4, m_dt5);
|
||
DDX_Control(pDX, IDC_BTADDROOM2, m_wndButton2);
|
||
DDX_Control(pDX, IDC_BTADDROOM4, m_wndButton4);
|
||
DDX_Control(pDX, IDC_BTADDROOM3, m_wndButton3);
|
||
DDX_Control(pDX, IDC_BTADDROOM5, m_wndButton5);
|
||
DDX_Control(pDX, IDC_BTADDROOM6, m_wndButton6);
|
||
DDX_Control(pDX, IDC_BTADDROOM9, m_wndButton9);
|
||
DDX_Control(pDX, IDC_BTADDROOM8, m_wndButton8);
|
||
DDX_Control(pDX, IDC_BTADDROOM10, m_wndButton10);
|
||
DDX_Control(pDX, IDC_BTADDROOM7, m_wndButton7);
|
||
DDX_Control(pDX, IDC_BTADDROOM11, m_wndButton11);
|
||
DDX_Control(pDX, IDC_BUTTON6, m_wndButton12);
|
||
DDX_Control(pDX, IDC_BUTTON5, m_wndButton13);
|
||
DDX_Control(pDX, IDC_BUTTON3, m_wndButton14);
|
||
DDX_Radio(pDX, IDC_RADIO1, m_iSectionType);
|
||
DDV_MinMaxInt(pDX, m_iSectionType, 0, 4);
|
||
}
|
||
|
||
BEGIN_MESSAGE_MAP(CDGGLDlg, CBaseDialog)
|
||
ON_BN_CLICKED(IDOK, &CDGGLDlg::OnBnClickedOk)
|
||
ON_BN_CLICKED(IDC_BTADDROOM, &CDGGLDlg::OnBnClickedBtaddroom)
|
||
ON_BN_CLICKED(IDC_BTADDTODB, &CDGGLDlg::OnBnClickedBtaddtodb)
|
||
ON_BN_CLICKED(IDC_BTSELFROMDB, &CDGGLDlg::OnBnClickedBtselfromdb)
|
||
ON_BN_CLICKED(IDC_BTMODIROOM2, &CDGGLDlg::OnBnClickedBtmodiroom2)
|
||
ON_EN_KILLFOCUS(IDC_EDITH, &CDGGLDlg::OnEnChangeEdith)
|
||
ON_EN_KILLFOCUS(IDC_EDITT1, &CDGGLDlg::OnEnChangeEditt1)
|
||
ON_EN_KILLFOCUS(IDC_EDITT2, &CDGGLDlg::OnEnChangeEditt2)
|
||
ON_EN_KILLFOCUS(IDC_EDITCHARM, &CDGGLDlg::OnEnChangeEditcharm)
|
||
ON_CBN_SELCHANGE(IDC_COMBO4, &CDGGLDlg::OnCbnSelchangeCombo4)
|
||
ON_EN_KILLFOCUS(IDC_EDITROOMW, &CDGGLDlg::OnEnKillfocusEditroomw)
|
||
ON_BN_CLICKED(IDC_BUTTON1, &CDGGLDlg::OnBnClickedButton1)
|
||
ON_BN_CLICKED(IDC_BUTTON4, &CDGGLDlg::OnBnClickedButton4)
|
||
ON_EN_CHANGE(IDC_EDIT24, &CDGGLDlg::OnEnChangeEdit24)
|
||
ON_BN_CLICKED(IDC_BUTTON2, &CDGGLDlg::OnBnClickedButton2)
|
||
ON_BN_CLICKED(IDC_BTADDROOM2, &CDGGLDlg::OnBnClickedBtaddroom2)
|
||
ON_BN_CLICKED(IDC_BTADDROOM3, &CDGGLDlg::OnBnClickedBtaddroom3)
|
||
ON_BN_CLICKED(IDC_BTADDROOM4, &CDGGLDlg::OnBnClickedBtaddroom4)
|
||
ON_BN_CLICKED(IDC_BTADDROOM5, &CDGGLDlg::OnBnClickedBtaddroom5)
|
||
ON_BN_CLICKED(IDC_BTADDROOM6, &CDGGLDlg::OnBnClickedBtaddroom6)
|
||
ON_BN_CLICKED(IDC_BTADDROOM7, &CDGGLDlg::OnBnClickedBtaddroom7)
|
||
ON_BN_CLICKED(IDC_BTADDROOM9, &CDGGLDlg::OnBnClickedBtaddroom9)
|
||
ON_BN_CLICKED(IDC_BTADDROOM8, &CDGGLDlg::OnBnClickedBtaddroom8)
|
||
ON_BN_CLICKED(IDC_BTADDROOM10, &CDGGLDlg::OnBnClickedBtaddroom10)
|
||
ON_BN_CLICKED(IDC_BTADDROOM11, &CDGGLDlg::OnBnClickedBtaddroom11)
|
||
ON_BN_CLICKED(IDC_BUTTON6, &CDGGLDlg::OnBnClickedButton6)
|
||
ON_BN_CLICKED(IDC_BUTTON5, &CDGGLDlg::OnBnClickedButton5)
|
||
ON_BN_CLICKED(IDC_BUTTON3, &CDGGLDlg::OnBnClickedButton3)
|
||
ON_BN_CLICKED(IDC_BUTTON11, &CDGGLDlg::OnBnClickedSetSection)
|
||
ON_BN_CLICKED(IDC_BUTTON52, &CDGGLDlg::OnBnClickedSetSection)
|
||
ON_BN_CLICKED(IDC_BUTTON53, &CDGGLDlg::OnBnClickedSetSection)
|
||
ON_BN_CLICKED(IDC_BUTTON54, &CDGGLDlg::OnBnClickedSetSection)
|
||
ON_BN_CLICKED(IDC_BUTTON55, &CDGGLDlg::OnBnClickedHorseshoeSection)
|
||
ON_BN_CLICKED(IDC_BUTTON12, &CDGGLDlg::OnBnClickedTest)
|
||
ON_BN_CLICKED(IDC_RADIO1, &CDGGLDlg::OnBnClickedRadio)
|
||
ON_BN_CLICKED(IDC_RADIO2, &CDGGLDlg::OnBnClickedRadio)
|
||
ON_BN_CLICKED(IDC_RADIO14, &CDGGLDlg::OnBnClickedRadio)
|
||
ON_BN_CLICKED(IDC_RADIO15, &CDGGLDlg::OnBnClickedRadio)
|
||
ON_BN_CLICKED(IDC_RADIO16, &CDGGLDlg::OnBnClickedRadio)
|
||
END_MESSAGE_MAP()
|
||
|
||
BOOL CDGGLDlg::OnInitDialog()
|
||
{
|
||
m_data.fNodeDef[0] = AS_MUNITF(200);
|
||
m_data.fNodeDef[1] = AS_MUNITF(3000);
|
||
m_data.fNodeDef[2] = AS_MUNITF(400);
|
||
m_data.fNodeDef[3] = AS_MUNITF(300);
|
||
m_data.fNodeDef[4] = AS_MUNITF(3000);
|
||
m_data.fNodeDef[5] = .0;
|
||
m_data.fNodeDef[6] = 80.;
|
||
if (!IsInplaceEdit())
|
||
{
|
||
_tcscpy(m_data.szNodeSpec, _T("RECT:2.6x3.0|4.2x3.0|2.4x3.0|0.4x0.3"));
|
||
}
|
||
else
|
||
{
|
||
_tcscpy(m_data.szNodeSpec, m_sCrossSectionScr);
|
||
}
|
||
|
||
CBaseDialog::OnInitDialog();
|
||
|
||
CBitmap bmp32;
|
||
if (!bmp32.LoadBitmap(IDB_BITMAP10))
|
||
{
|
||
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAP32);
|
||
ASSERT(FALSE);
|
||
return FALSE;
|
||
}
|
||
|
||
//附属物界面
|
||
BITMAP bmpObj32;
|
||
bmp32.GetBitmap(&bmpObj32);
|
||
UINT nFlags = ILC_COLOR24 | ILC_MASK;
|
||
m_Imagelist32.Create(32, bmpObj32.bmHeight, nFlags, 0, 0);
|
||
m_Imagelist32.Add(&bmp32, RGB(255, 0, 0));
|
||
m_wndButton2.SetIcon(m_Imagelist32.ExtractIcon(0));
|
||
m_wndButton3.SetIcon(m_Imagelist32.ExtractIcon(2));
|
||
m_wndButton4.SetIcon(m_Imagelist32.ExtractIcon(1));
|
||
m_wndButton5.SetIcon(m_Imagelist32.ExtractIcon(3));
|
||
m_wndButton6.SetIcon(m_Imagelist32.ExtractIcon(4));
|
||
m_wndButton9.SetIcon(m_Imagelist32.ExtractIcon(5));
|
||
m_wndButton8.SetIcon(m_Imagelist32.ExtractIcon(6));
|
||
m_wndButton10.SetIcon(m_Imagelist32.ExtractIcon(7));
|
||
m_wndButton7.SetIcon(m_Imagelist32.ExtractIcon(8));
|
||
m_wndButton11.SetIcon(m_Imagelist32.ExtractIcon(9));
|
||
m_wndButton12.SetIcon(m_Imagelist32.ExtractIcon(10));
|
||
m_wndButton13.SetIcon(m_Imagelist32.ExtractIcon(11));
|
||
m_wndButton14.SetIcon(m_Imagelist32.ExtractIcon(12));
|
||
|
||
m_dChamferInter = AS_M2MM(m_data.fNodeDef[0]);
|
||
m_dInterH = AS_M2MM(m_data.fNodeDef[1]);
|
||
m_dOutT = AS_M2MM(m_data.fNodeDef[2]);
|
||
m_dIntT = AS_M2MM(m_data.fNodeDef[3]);
|
||
m_dRoomWAdd = AS_M2MM(m_data.fNodeDef[4]);
|
||
m_dG = m_data.fNodeDef[5];
|
||
m_dYXLen = m_data.fNodeDef[6];
|
||
SetCrossSectionScr(m_data.szNodeSpec);
|
||
|
||
//写入临时文件
|
||
CString sFullPath = FilePath::GetSysDir();
|
||
sFullPath.MakeLower();
|
||
sFullPath += _T("\\HZGLDlg.map");
|
||
|
||
if (!IsInplaceEdit())
|
||
{
|
||
CStdioFile file1;
|
||
if (file1.Open(sFullPath, CFile::modeRead))
|
||
{
|
||
CString sLast, sText;
|
||
int nPos = 0;
|
||
while (file1.ReadString(sText))
|
||
{
|
||
sText.TrimRight(_T('\n'));
|
||
if (nPos % 2 == 1)
|
||
{
|
||
m_mapIndexToName.SetAt(sLast, sText);
|
||
}
|
||
else
|
||
{
|
||
sLast = sText;
|
||
}
|
||
nPos += 1;
|
||
}
|
||
file1.Close();
|
||
}
|
||
else
|
||
{
|
||
CString str(_T(""));
|
||
GetCrossSectionScr(str);
|
||
AecDbEarthWorm ew;
|
||
ew.SetCrossSectionScr(m_sCrossSectionScr);
|
||
int roomCount = ew.GetRoomCount();
|
||
LPCTSTR ar[] = { _T("电力舱"), _T("综合舱"), _T("燃气舱") };
|
||
for (int i = 0; i < roomCount; ++i)
|
||
{
|
||
str.Format(_T("%d"), i);
|
||
m_mapIndexToName.SetAt(str, ar[i]);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
|
||
std::vector<CString> vec(0);
|
||
CString type(_T("")), sTemp;
|
||
for (int i = 0; i < m_mapIndexToName.GetCount(); ++i)
|
||
{
|
||
sTemp.Format(_T("%d"), i);
|
||
if (!m_mapIndexToName.Lookup(sTemp, type))
|
||
type = _T("NONE");
|
||
vec.push_back(type);
|
||
}
|
||
|
||
if (!vec.empty())
|
||
m_sRoomName = vec[0];
|
||
|
||
SetRoomFeature(vec);
|
||
ShowEarthWorm();
|
||
|
||
std::vector<CString> strs;
|
||
CoreTools::SplitString(m_data.szNodeDefSpec, _T("|"), strs);
|
||
|
||
if (strs.size() == 2)
|
||
{
|
||
m_sCity = strs[0];
|
||
m_sRoad = strs[1];
|
||
}
|
||
|
||
m_wndRoomReducerBt.ShowWindow(SW_HIDE);
|
||
m_wndBTRainbow.ShowWindow(SW_HIDE);
|
||
if (!m_bIsYXGLJD)
|
||
{
|
||
GetDlgItem(IDC_STATIC_YX)->ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDC_EDITYX)->ShowWindow(SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_YXM)->ShowWindow(SW_HIDE);
|
||
}
|
||
|
||
if (!m_bHasGrade)
|
||
{
|
||
m_wndStaticG.ShowWindow(SW_HIDE);
|
||
m_wndEditG.ShowWindow(SW_HIDE);
|
||
m_wndStaticP.ShowWindow(SW_HIDE);
|
||
}
|
||
else
|
||
{
|
||
m_wndRoomReducerBt.ShowWindow(SW_SHOW);
|
||
m_wndBTRainbow.ShowWindow(SW_SHOW);
|
||
}
|
||
UpdateData(FALSE);
|
||
OnBnClickedRadio();
|
||
return TRUE;
|
||
}
|
||
|
||
void CDGGLDlg::OnViewLButtonDownMsg()
|
||
{
|
||
if (m_idxRoom != -1 && m_pRectCell != NULL)
|
||
{
|
||
UpdateData(TRUE);
|
||
|
||
AcGePoint2d pt1, pt2, pt3;
|
||
m_pRectCell->getPointAt(0, pt1);
|
||
m_pRectCell->getPointAt(1, pt2);
|
||
m_pRectCell->getPointAt(2, pt3);
|
||
|
||
m_dRoomWAdd = pt1.distanceTo(pt2) * 1000;
|
||
m_dInterH = pt2.distanceTo(pt3) * 1000;
|
||
|
||
CString sTemp;
|
||
sTemp.Format(_T("%d"), m_idxRoom);
|
||
m_mapIndexToName.Lookup(sTemp, m_sRoomName);
|
||
|
||
UpdateData(FALSE);
|
||
|
||
int nSel = m_wndCombo4.FindString(0, m_sRoomName);
|
||
if (nSel != -1)
|
||
{
|
||
m_wndCombo4.SetCurSel(nSel);
|
||
}
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::SetFeatureForEarthworm(AecDbEarthWorm *pEw)
|
||
{
|
||
if (!pEw) return;
|
||
CString sTemp, sName;
|
||
for (int ii = 0; ii < m_mapIndexToName.GetCount(); ii++)
|
||
{
|
||
sTemp.Format(_T("%d"), ii);
|
||
|
||
if (m_mapIndexToName.Lookup(sTemp, sName))
|
||
pEw->GetSpecialtyData()->SetAt(sTemp, sName);
|
||
}
|
||
return;
|
||
}
|
||
|
||
void CDGGLDlg::SetFeatureForEarthworm(AecDbEarthWormFitting *pEw)
|
||
{
|
||
if (!pEw) return;
|
||
CString sTemp, sName, sTemp2;
|
||
for (int ii = 0; ii < m_mapIndexToName.GetCount(); ii++)
|
||
{
|
||
sTemp.Format(_T("%d"), ii);
|
||
sTemp2.Format(_T("room-%d"), ii);
|
||
if (m_mapIndexToName.Lookup(sTemp, sName))
|
||
pEw->GetSpecialtyData()->SetAt(sTemp2, sName);
|
||
}
|
||
return;
|
||
}
|
||
|
||
void CDGGLDlg::InitRoomFeature(const AecDbEarthWorm *pEw)
|
||
{
|
||
if (!pEw) // 新建一段管廊时
|
||
{
|
||
std::vector<CString> vec(10, _T("NONE"));
|
||
SetRoomFeature(vec);
|
||
return;
|
||
}
|
||
|
||
CString str(_T("")), feature(_T(""));
|
||
for (int i = 0; i < pEw->GetRoomCount(); ++i)
|
||
{
|
||
str.Format(_T("%d"), i);
|
||
const AecDbObjXDataMap *pMap = pEw->GetSpecialtyData();
|
||
if (pMap)
|
||
{
|
||
pMap->GetAt(str, feature);
|
||
m_mapIndexToName.SetAt(str, feature);
|
||
m_roomTypes.push_back(feature);
|
||
}
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedOk()
|
||
{
|
||
UpdateData();
|
||
|
||
CString sText;
|
||
if (!m_bIsInsertLibrary)
|
||
{
|
||
if (m_dInterH < 100.0f)
|
||
{
|
||
sText = _T("舱室高度太小!");
|
||
AfxMessageBox(sText);
|
||
return;
|
||
}
|
||
|
||
if (m_dOutT < 10.0f || m_dIntT < 10.0f)
|
||
{
|
||
sText = _T("管廊外壁厚度或室间厚度太小!");
|
||
AfxMessageBox(sText);
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (m_bIsYXGLJD)
|
||
{
|
||
if (m_dYXLen < 5.0f)
|
||
{
|
||
sText = _T("异型管廊节点长度太小,至少大于5米!");
|
||
AfxMessageBox(sText);
|
||
return;
|
||
}
|
||
}
|
||
|
||
m_data.fNodeDef[0] = AS_MUNITF(m_dChamferInter);
|
||
m_data.fNodeDef[1] = AS_MUNITF(m_dInterH);
|
||
m_data.fNodeDef[2] = AS_MUNITF(m_dOutT);
|
||
m_data.fNodeDef[3] = AS_MUNITF(m_dIntT);
|
||
m_data.fNodeDef[4] = AS_MUNITF(m_dRoomWAdd);
|
||
m_data.fNodeDef[5] = m_dG;
|
||
m_data.fNodeDef[6] = m_dYXLen;
|
||
if (m_sCrossSectionScr.GetLength() < MAX_PATH)
|
||
_tcscpy(m_data.szNodeSpec, m_sCrossSectionScr);
|
||
std::vector<CString> strs;
|
||
strs.push_back(m_sCity);
|
||
strs.push_back(m_sRoad);
|
||
CString str = CoreTools::ConnectString(strs, _T("|"));
|
||
if (!str.IsEmpty())
|
||
_tcscpy(m_data.szNodeDefSpec, str);
|
||
|
||
AecDbEarthWorm ew;
|
||
ew.SetCrossSectionScr(m_sCrossSectionScr);
|
||
int roomCount = ew.GetRoomCount();
|
||
CString key(_T("")), value(_T(""));
|
||
bool bWrong(false);
|
||
|
||
|
||
//本地路径
|
||
CString sFullPath = FilePath::GetSysDir();
|
||
sFullPath.MakeLower();
|
||
sFullPath += _T("\\HZGLDlg.map");
|
||
|
||
//写入临时文件
|
||
CStdioFile file1;
|
||
if (file1.Open(sFullPath, CFile::modeWrite | CFile::modeCreate))
|
||
{
|
||
for (POSITION ps = m_mapIndexToName.GetStartPosition(); ps != NULL;)
|
||
{
|
||
m_mapIndexToName.GetNextAssoc(ps, key, value);
|
||
key += _T("\n");
|
||
file1.WriteString(key);
|
||
|
||
value += _T("\n");
|
||
file1.WriteString(value);
|
||
}
|
||
|
||
file1.Close();
|
||
}
|
||
|
||
if (m_mapIndexToName.GetSize() >= roomCount)
|
||
{
|
||
for (int i = 0; i < roomCount; ++i)
|
||
{
|
||
key.Format(_T("%d"), i);
|
||
if (!m_mapIndexToName.Lookup(key, value))
|
||
{
|
||
bWrong = true;
|
||
break;
|
||
}
|
||
if (value.CompareNoCase(_T("NONE")) == 0)
|
||
{
|
||
bWrong = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
bWrong = true;
|
||
}
|
||
|
||
if (bWrong && !m_bIsInsertLibrary)
|
||
{
|
||
AfxMessageBox(_T("请确定为每个舱室设置了功能。"));
|
||
return;
|
||
}
|
||
|
||
CBaseDialog::OnOK();
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedBtaddroom()
|
||
{
|
||
UpdateData();
|
||
|
||
if (m_dRoomWAdd - 100.0 > 1.e-3)
|
||
{
|
||
//m_sCrossSectionScr = _T("RECT:3.900x3.600|2.900x3.600|0.400x0.300");
|
||
AecDbEarthWorm worm;
|
||
worm.SetCrossSectionScr(m_sCrossSectionScr);//last
|
||
worm.SetChamferInter(m_dChamferInter);
|
||
|
||
ESection eType = eRect;
|
||
AcGePoint2dArray arDatas;
|
||
eType = worm.ExtractEarthWormScr(arDatas);
|
||
|
||
AcGePoint2d ptLastRoom(AS_MUNITF(m_dRoomWAdd), AS_MUNITF(m_dInterH));
|
||
|
||
for (int i = 0; i < arDatas.length() - 1; i++)
|
||
{
|
||
AcGePoint2d& ptTemp = arDatas.at(i);
|
||
ptTemp.x = AS_MUNITF(m_dInterH);
|
||
}
|
||
arDatas.insertAt(arDatas.length() - 1, ptLastRoom);
|
||
|
||
//_T("RECT:3.900x3.600|2.900x3.600|0.400x0.300");
|
||
CString sCrossSectionScr = _T("RECT:");
|
||
CString sTemp;
|
||
for (int i = 0; i < arDatas.length(); i++)
|
||
{
|
||
sTemp.Format(_T("%gx%g"), arDatas.at(i).x, arDatas.at(i).y);
|
||
sCrossSectionScr += sTemp;
|
||
|
||
if (i < arDatas.length() - 1) sCrossSectionScr += _T("|");
|
||
}
|
||
m_sCrossSectionScr = sCrossSectionScr;
|
||
ShowEarthWorm();
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("舱的宽度尺寸过小!"));
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedBtmodiroom()
|
||
{
|
||
UpdateData();
|
||
if (m_dRoomWAdd < AS_MUNIT(10.0))
|
||
{
|
||
AfxMessageBox(_T("室宽度太小!请重新输入管廊截面内舱舱宽!"));
|
||
return;
|
||
}
|
||
|
||
if (m_dInterH < AS_MUNIT(10.0))
|
||
{
|
||
AfxMessageBox(_T("室高度太小!请重新输入管廊截面内舱高度!"));
|
||
return;
|
||
}
|
||
|
||
if (GetIdxOfRoom() != -1)
|
||
{
|
||
AecDbEarthWorm worm;
|
||
worm.SetCrossSectionScr(m_sCrossSectionScr);//last
|
||
worm.SetChamferInter(m_dChamferInter);
|
||
|
||
ESection eType = eRect;
|
||
AcGePoint2dArray arDatas;
|
||
eType = worm.ExtractEarthWormScr(arDatas);
|
||
|
||
//修改 W
|
||
AcGePoint2d& pt = arDatas.at(GetIdxOfRoom());
|
||
pt.x = AS_MUNIT(m_dRoomWAdd);
|
||
|
||
//修改全部高度,合成文本
|
||
CString sCrossSectionScr = _T("RECT:");
|
||
CString sTemp;
|
||
for (int i = 0; i < arDatas.length(); i++)
|
||
{
|
||
//W x H
|
||
if (i < arDatas.length() - 1)
|
||
sTemp.Format(_T("%gx%g"), arDatas.at(i).x, AS_MUNIT(m_dInterH));
|
||
else
|
||
sTemp.Format(_T("%gx%g"), AS_MUNIT(m_dOutT), AS_MUNIT(m_dIntT));
|
||
|
||
sCrossSectionScr += sTemp;
|
||
if (i < arDatas.length() - 1) sCrossSectionScr += _T("|");
|
||
}
|
||
|
||
CString sExt = _T("|EXT:"), sKey, sExtVal;
|
||
for (POSITION ps = m_mapAddtion.GetStartPosition(); ps != NULL;)
|
||
{
|
||
m_mapAddtion.GetNextAssoc(ps, sKey, sExtVal);
|
||
sExt += sExtVal;
|
||
}
|
||
|
||
m_sCrossSectionScr = sCrossSectionScr;
|
||
if (sExt.CompareNoCase(_T("|EXT:")) != 0)
|
||
{
|
||
m_sCrossSectionScr += sExt;
|
||
}
|
||
|
||
worm.SetCrossSectionScr(m_sCrossSectionScr);//last
|
||
worm.SetChamferInter(m_dChamferInter);
|
||
|
||
sTemp.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.SetAt(sTemp, m_sRoomName);
|
||
|
||
int count = worm.GetRoomCount();
|
||
std::vector<CString> vec(0);
|
||
CString type(_T(""));
|
||
for (int i = 0; i < count; ++i)
|
||
{
|
||
sTemp.Format(_T("%d"), i);
|
||
if (!m_mapIndexToName.Lookup(sTemp, type))
|
||
type = _T("NONE");
|
||
vec.push_back(type);
|
||
}
|
||
SetRoomFeature(vec);
|
||
ShowEarthWorm();
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedBtaddtodb()
|
||
{
|
||
//_T("RECT:3900x3600|2900x3600|400x300|EXT:...");//EXT为扩充字段
|
||
OnBnClickedBtmodiroom();
|
||
CGLTKDlg dlg(CGLTKDlg::eInput);
|
||
dlg.SetCrossSectionScr(m_sCrossSectionScr);
|
||
dlg.DoModal();
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedBtselfromdb()
|
||
{
|
||
CGLTKDlg dlg(CGLTKDlg::eSelect);
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sScr;
|
||
if (dlg.GetCrossSectionScr(sScr))
|
||
{
|
||
m_sCrossSectionScr = sScr;
|
||
ShowEarthWorm();
|
||
|
||
AecDbEarthWorm worm;
|
||
worm.SetCrossSectionScr(m_sCrossSectionScr);
|
||
|
||
AcGePoint2dArray arDatas;
|
||
worm.ExtractEarthWormScr(arDatas);
|
||
|
||
if (arDatas.length() > 0)
|
||
{
|
||
m_dInterH = 1000.0 * arDatas.first().y;
|
||
m_dOutT = 1000.0 * arDatas.last().x;
|
||
m_dIntT = 1000.0 * arDatas.last().y;
|
||
|
||
UpdateData(FALSE);
|
||
}
|
||
|
||
UpdateWindow();
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
void CDGGLDlg::OnBnClickedBtmodiroom2()
|
||
{
|
||
UpdateData();
|
||
if (GetIdxOfRoom() != -1)
|
||
{
|
||
AecDbEarthWorm worm;
|
||
worm.SetCrossSectionScr(m_sCrossSectionScr);//last
|
||
worm.SetChamferInter(m_dChamferInter);
|
||
|
||
ESection eType = eRect;
|
||
AcGePoint2dArray arDatas;
|
||
eType = worm.ExtractEarthWormScr(arDatas);
|
||
|
||
if (arDatas.length() == 2) return;
|
||
|
||
arDatas.removeAt(GetIdxOfRoom());
|
||
|
||
//修改全部高度,合成文本
|
||
CString sCrossSectionScr = _T("RECT:");
|
||
CString sTemp;
|
||
for (int i = 0; i < arDatas.length(); i++)
|
||
{
|
||
if (i < arDatas.length() - 1)
|
||
sTemp.Format(_T("%gx%g"), arDatas.at(i).x, arDatas.at(i).y);
|
||
else
|
||
sTemp.Format(_T("%gx%g"), AS_MUNIT(m_dOutT), AS_MUNIT(m_dIntT));
|
||
|
||
sCrossSectionScr += sTemp;
|
||
|
||
if (i < arDatas.length() - 1)
|
||
sCrossSectionScr += _T("|");
|
||
}
|
||
|
||
CString sExt = _T("EXT:"), sKey, sExtVal;
|
||
for (POSITION ps = m_mapAddtion.GetStartPosition(); ps != NULL;)
|
||
{
|
||
m_mapAddtion.GetNextAssoc(ps, sKey, sExtVal);
|
||
sExt += sExtVal;
|
||
}
|
||
|
||
m_sCrossSectionScr = sCrossSectionScr;
|
||
if (sExt.CompareNoCase(_T("EXT:")) != 0)
|
||
{
|
||
m_sCrossSectionScr += sExt;
|
||
}
|
||
|
||
ShowEarthWorm();
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnEnChangeEdith()
|
||
{
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
void CDGGLDlg::OnEnChangeEditt1()
|
||
{
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
void CDGGLDlg::OnEnChangeEditt2()
|
||
{
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
void CDGGLDlg::OnEnChangeEditcharm()
|
||
{
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
void CDGGLDlg::OnCbnSelchangeCombo4()
|
||
{
|
||
int nSel = m_wndCombo4.GetCurSel();
|
||
if (nSel != -1)
|
||
{
|
||
m_wndCombo4.GetLBText(nSel, m_sRoomName);
|
||
UpdateData(FALSE);
|
||
}
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
void CDGGLDlg::OnEnKillfocusEditroomw()
|
||
{
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
void CDGGLDlg::ReloadGLBJ(AecDbObjXDataMap* pXDataMap)
|
||
{
|
||
m_pGLBJXDataMap = pXDataMap;
|
||
|
||
CGLBJDlg dlg;
|
||
dlg.m_bIsAddRec = true;
|
||
dlg.SetCrossSectionScr(m_sCrossSectionScr, m_dYXLen);
|
||
dlg.SetReloadGLBJ(m_pGLBJXDataMap);
|
||
dlg.ReloadFromXDataMap();
|
||
{
|
||
//合成AecX3DSolid 集合,加入FIT
|
||
if (m_pGroup != NULL)
|
||
DELETE_PTR(m_pGroup);
|
||
m_pGroup = NULL;
|
||
|
||
AcGePoint3d ptOrg(0, 0, 0);
|
||
ptOrg.y += 0.5 * m_dYXLen;
|
||
|
||
dlg.GetX3dSolidRecs(m_pGroup, ptOrg, -AcGeVector3d::kYAxis);
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::ReloadBZJC(AecDbObjXDataMap* pXDataMap)
|
||
{
|
||
m_pGLBZJCDataMap = pXDataMap;
|
||
|
||
CTJBZJCDlg dlg;
|
||
dlg.SetCrossSectionScr(m_sCrossSectionScr, m_dYXLen);
|
||
dlg.SetReloadTJBZJC(m_pGLBZJCDataMap);
|
||
dlg.ReloadFromXDataMap();
|
||
{
|
||
//合成AecX3DSolid 集合,加入FIT
|
||
if (m_pGroupRB != NULL)
|
||
DELETE_PTR(m_pGroupRB);
|
||
m_pGroupRB = NULL;
|
||
|
||
dlg.GetX3dSolidRecsForYGL(m_pGroupRB);
|
||
}
|
||
}
|
||
|
||
//舱室变径
|
||
void CDGGLDlg::OnBnClickedButton1()
|
||
{
|
||
UpdateData();
|
||
|
||
CGLBJDlg dlg;
|
||
dlg.m_bIsAddRec = true;
|
||
dlg.SetCrossSectionScr(m_sCrossSectionScr, m_dYXLen);
|
||
dlg.SetReloadGLBJ(m_pGLBJXDataMap);
|
||
|
||
int nRes = dlg.DoModal();
|
||
if (nRes == IDOK)
|
||
{
|
||
//合成AecX3DSolid 集合,加入FIT
|
||
if (m_pGroup != NULL)
|
||
DELETE_PTR(m_pGroup);
|
||
m_pGroup = NULL;
|
||
|
||
AcGePoint3d ptOrg(0, 0, 0);
|
||
ptOrg.y += 0.5 * m_dYXLen;
|
||
|
||
dlg.GetX3dSolidRecs(m_pGroup, ptOrg, -AcGeVector3d::kYAxis);
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedButton4()
|
||
{
|
||
UpdateData();
|
||
|
||
CTJBZJCDlg dlg;
|
||
dlg.SetCrossSectionScr(m_sCrossSectionScr, m_dYXLen);
|
||
int nRes = dlg.DoModal();
|
||
if (nRes == IDOK)
|
||
{
|
||
//合成AecX3DSolid 集合,加入FIT
|
||
if (m_pGroupRB != NULL)
|
||
DELETE_PTR(m_pGroupRB);
|
||
m_pGroupRB = NULL;
|
||
|
||
dlg.GetX3dSolidRecsForYGL(m_pGroupRB);
|
||
}
|
||
}
|
||
|
||
int CDGGLDlg::GetX3dSolidRecsRB(AecDbX3dGroup*& pGroup)
|
||
{
|
||
pGroup = m_pGroupRB;
|
||
return m_pGroupRB != NULL ? TRUE : FALSE;
|
||
}
|
||
|
||
int CDGGLDlg::GetX3dSolidRecs(AecDbX3dGroup*& pGroup)
|
||
{
|
||
if (pGroup != NULL)
|
||
{
|
||
AcArray<X3dSolidRec> arRecs;
|
||
if (m_pGroup != NULL)
|
||
{
|
||
m_pGroup->GetX3dSolidRecs(arRecs);
|
||
|
||
for (int i = 0; i < arRecs.length(); i++)
|
||
{
|
||
X3dSolidRec& rc = arRecs.at(i);
|
||
pGroup->AddX3dSolidRec(rc);
|
||
}
|
||
|
||
for (int i = 0; i < 10; i++)
|
||
{
|
||
AecDbObjXDataMap rcXDataMap;
|
||
if (m_pGroup->GetSpecialtyData()->GetAt(_T("CGLBJDlg"), i, rcXDataMap))
|
||
{
|
||
pGroup->GetSpecialtyData()->SetAt(_T("CGLBJDlg"), i, rcXDataMap);
|
||
}
|
||
else
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (m_pGroupRB != NULL)
|
||
{
|
||
arRecs.removeAll();
|
||
m_pGroupRB->GetX3dSolidRecs(arRecs);
|
||
|
||
for (int i = 0; i < arRecs.length(); i++)
|
||
{
|
||
X3dSolidRec& rc = arRecs.at(i);
|
||
pGroup->AddX3dSolidRec(rc);
|
||
}
|
||
|
||
AecDbObjXDataMap rcXDataMap;
|
||
if (m_pGroupRB->GetSpecialtyData()->GetAt(_T("CTJBZJCDlg"), 0, rcXDataMap))
|
||
{
|
||
pGroup->GetSpecialtyData()->SetAt(_T("CTJBZJCDlg"), 0, rcXDataMap);
|
||
}
|
||
}
|
||
|
||
if (pGroup != NULL || m_pGroupRB != NULL)
|
||
{
|
||
return TRUE;
|
||
}
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
STSection* CDGGLDlg::GetSTSection( )
|
||
{
|
||
return &m_curSection;
|
||
}
|
||
|
||
void CDGGLDlg::GetRoomNames(CStringArray& arRoomNames)
|
||
{
|
||
AecDbEarthWorm ew;
|
||
ew.SetCrossSectionScr(m_sCrossSectionScr);
|
||
CString sKey, sName;
|
||
for (int i = 0; i < ew.GetRoomCount(); i++)
|
||
{
|
||
sKey.Format(_T("%d"), i);
|
||
if (m_mapIndexToName.Lookup(sKey, sName))
|
||
{
|
||
arRoomNames.Add(sName);
|
||
}
|
||
else
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnEnChangeEdit24()
|
||
{
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
|
||
//自定义属性
|
||
void CDGGLDlg::OnBnClickedButton2()
|
||
{
|
||
|
||
}
|
||
|
||
//添加支架
|
||
void CDGGLDlg::OnBnClickedBtaddroom2()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CTJZJDlg dlg;
|
||
dlg.m_data.m_sSpec = sName;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sHolder;
|
||
int nPos = dlg.GetScript(sHolder, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-%d-HOLDER"), nIndex, nPos,dlg.m_data.m_nNo);
|
||
|
||
m_mapAddtion.SetAt(sKey, sHolder);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加支架!"));
|
||
}
|
||
}
|
||
|
||
//添加吊架
|
||
void CDGGLDlg::OnBnClickedBtaddroom3()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CTJDJDlg dlg;
|
||
dlg.m_data.m_sSpec = sName;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sHolder;
|
||
int nPos = dlg.GetScript(sHolder, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-HANGER"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sHolder);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加吊架!"));
|
||
}
|
||
}
|
||
|
||
//预留管位
|
||
void CDGGLDlg::OnBnClickedBtaddroom4()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CFZGWDlg dlg;
|
||
dlg.m_data.m_sSpec = sName;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sBoss;
|
||
CString sPos = dlg.GetScript(sBoss, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%s-BOSS"), nIndex, sPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sBoss);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室预留管位!"));
|
||
}
|
||
}
|
||
|
||
//添加吊环
|
||
void CDGGLDlg::OnBnClickedBtaddroom5()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CTJDHDlg dlg;
|
||
dlg.m_sSpec = _T("吊环");
|
||
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sRings;
|
||
int nPos = dlg.GetScript(sRings, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-RINGS"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sRings);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加吊环!"));
|
||
}
|
||
}
|
||
|
||
//添加灯具
|
||
void CDGGLDlg::OnBnClickedBtaddroom6()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CTJDUDlg dlg;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sLamps;
|
||
int nPos = dlg.GetScript(sLamps, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-LAMPS"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sLamps);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加灯具!"));
|
||
}
|
||
}
|
||
|
||
//添加排风
|
||
void CDGGLDlg::OnBnClickedBtaddroom7()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
//DRAFAN:房间|外径|长度|吊高|间距|风量|功率|机号|名称|型号|厂家
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CSDFJDlg dlg;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sScript;
|
||
int nPos = dlg.GetScript(sScript, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-DRAFAN"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sScript);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加风机!"));
|
||
}
|
||
}
|
||
|
||
//添加灭火器
|
||
void CDGGLDlg::OnBnClickedBtaddroom9()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CMHQDlg dlg;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sFireet;
|
||
int nPos = dlg.GetScript(sFireet, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-FIREET"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sFireet);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加灭火器!"));
|
||
}
|
||
}
|
||
|
||
//添加防火门
|
||
void CDGGLDlg::OnBnClickedBtaddroom8()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
//FIREDOOR:房间|宽|高|型号|厂家
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CFMHDlg dlg;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sFireet;
|
||
int nPos = dlg.GetScript(sFireet, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-FIREDOOR"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sFireet);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加防火门!"));
|
||
}
|
||
}
|
||
|
||
//添加监控
|
||
void CDGGLDlg::OnBnClickedBtaddroom10()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
//FIREDOOR:房间|宽|高|型号|厂家
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CJKSBDlg dlg;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sSecurity;
|
||
int nPos = dlg.GetScript(sSecurity, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-SECURITY"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sSecurity);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加监控!"));
|
||
}
|
||
}
|
||
|
||
//排水沟
|
||
void CDGGLDlg::OnBnClickedBtaddroom11()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CJPSGDlg gDlg;
|
||
if (IDOK == gDlg.DoModal())
|
||
{
|
||
CString sWater;
|
||
int nPos = gDlg.GetScript(sWater, nIndex);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-GUTTERWAY"), 0, 0);
|
||
|
||
m_mapAddtion.SetAt(sKey, sWater);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加排水沟!"));
|
||
}
|
||
}
|
||
|
||
//瓦斯报警器
|
||
void CDGGLDlg::OnBnClickedButton6()
|
||
{
|
||
int nIndex = GetIdxOfRoom();
|
||
if (nIndex != -1)
|
||
{
|
||
//GASALARM:房间|位置|高度|长|宽|厚|间距|名称|等级|型号|厂家
|
||
CString sKey, sName;
|
||
sKey.Format(_T("%d"), GetIdxOfRoom());
|
||
m_mapIndexToName.Lookup(sKey, sName);
|
||
|
||
CString sOffsets;
|
||
|
||
CWSJCDlg dlg;
|
||
if (IDOK == dlg.DoModal())
|
||
{
|
||
CString sScript;
|
||
int nPos = dlg.GetScript(sScript, nIndex,sOffsets);
|
||
|
||
CString sKey;
|
||
sKey.Format(_T("%d-%d-GASALARM"), nIndex, nPos);
|
||
|
||
m_mapAddtion.SetAt(sKey, sScript);
|
||
OnBnClickedBtmodiroom();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
AfxMessageBox(_T("请选择管廊舱室添加瓦斯报警器!"));
|
||
}
|
||
}
|
||
|
||
//分舱
|
||
void CDGGLDlg::OnBnClickedButton5()
|
||
{
|
||
|
||
}
|
||
|
||
//横断出图
|
||
extern BOOL OutDrawing(LPCTSTR pszDrawFileSub, AcDbVoidPtrArray& arEntPtrs, const AcGeVector3d& vtDir, bool bIsShowEntPtrs,bool bAddToModelSpace, bool bHasDim = true);
|
||
void CDGGLDlg::OnBnClickedButton3()
|
||
{
|
||
EnableWindow(FALSE);
|
||
CWnd* pFrame = acedGetAcadFrame();
|
||
pFrame->EnableWindow(TRUE);
|
||
ShowWindow(SW_HIDE);
|
||
pFrame->SetFocus();
|
||
|
||
AcDbVoidPtrArray arDrawffer;
|
||
GetDrawBuffer(arDrawffer);
|
||
|
||
AcAxDocLock lock;
|
||
|
||
/*AcDbObjectId id;
|
||
AcDbEntity* pEnt = NULL;
|
||
for (int i = 0;i < arDrawffer.length();i++)
|
||
{
|
||
pEnt = (AcDbEntity*)arDrawffer.at(i);
|
||
AddToModelSpace(pEnt,id,NULL,true);
|
||
}*/
|
||
|
||
OutDrawing(LAYOUTNAME_HD, arDrawffer, AcGeVector3d::kXAxis,true,false);
|
||
|
||
pFrame->EnableWindow(FALSE);
|
||
EndDialog(IDCANCLE);
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedSetSection()
|
||
{
|
||
UpdateData(TRUE);
|
||
CSectionSettingDlg dlg(m_iSectionType < 2);
|
||
if (dlg.DoModal() != IDOK) return;
|
||
m_curSection.clear();
|
||
if (m_iSectionType == 0 || m_iSectionType == 1)
|
||
m_curSection.a = dlg.m_fA;
|
||
else
|
||
m_curSection.a = dlg.m_fA;
|
||
m_curSection.b = dlg.m_fB;
|
||
m_curSection.pt = AcGePoint3d::kOrigin;
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedHorseshoeSection()
|
||
{
|
||
// 界面上选取一个闭合曲线,再选一点做为中心点
|
||
EnableWindow(FALSE);
|
||
CWnd* pFrame = acedGetAcadFrame();
|
||
pFrame->EnableWindow(TRUE);
|
||
ShowWindow(SW_HIDE);
|
||
pFrame->SetFocus();
|
||
|
||
do
|
||
{
|
||
ads_point pt;
|
||
ads_name ent;
|
||
|
||
int nRes = acedEntSel(_T("\n请选择一个面域:"), ent, pt);
|
||
if (nRes != RTNORM) break;
|
||
AcDbObjectId id;
|
||
acdbGetObjectId(id, ent);
|
||
m_curSection.clear();
|
||
nRes = acedGetPoint(pt, _T("\n请选一点做为截面的对齐点:"), pt);
|
||
acdbUcs2Wcs(pt, pt, false);
|
||
m_curSection.pt = asPnt3d(pt);
|
||
OPENOBJ_BEGIN(id, AcDb::kForRead, AcDbRegion, pReg)
|
||
if (pReg)
|
||
{
|
||
m_curSection.pReg = (AcDbRegion*)pReg->clone();
|
||
}
|
||
OPENOBJ_END()
|
||
|
||
} while (false);
|
||
|
||
pFrame->EnableWindow(FALSE);
|
||
ShowWindow(SW_SHOW);
|
||
EnableWindow(TRUE);
|
||
UpdateData(FALSE);
|
||
}
|
||
|
||
namespace
|
||
{
|
||
void GiDrawPipeTest()
|
||
{
|
||
AcDbObjectId _id;
|
||
AcDbEntity *p(NULL);
|
||
ads_name adsEnt;
|
||
ads_point adsPt;
|
||
int rt;
|
||
TCHAR szKey[131] = {};
|
||
acedInitGet(RSG_OTHER, _T("1 2 3"));
|
||
rt = acedGetKword(_T("\n请选择[通过半径壁厚绘制(1)/通过闭合polyline做为截面绘制(2)/通过region做为截面绘制(3)]<通过半径壁厚绘制(1)>:"), szKey);
|
||
if (rt == RTNONE) _tcscpy(szKey, _T("1"));
|
||
else if (rt == RTCAN) return;
|
||
|
||
if (_tcscmp(szKey, _T("1")) == 0)
|
||
{
|
||
double dR(100), dT(10);
|
||
rt = acedGetReal(_T("\n请输入管线半径<100>:"), &dR);
|
||
rt = acedGetReal(_T("\n请输入管线厚度<10>:"), &dT);
|
||
rt = acedGetPoint(NULL, _T("\n请选择起点:"), adsPt);
|
||
ads_point adsPt1;
|
||
acdbUcs2Wcs(adsPt, adsPt1, false);
|
||
if (rt != RTNORM) return;
|
||
AcGePoint3d ptS(asPnt3d(adsPt1));
|
||
rt = acedGetPoint(adsPt, _T("\n请选择终点:"), adsPt);
|
||
acdbUcs2Wcs(adsPt, adsPt1, false);
|
||
if (rt != RTNORM) return;
|
||
AcGePoint3d ptE(asPnt3d(adsPt1));
|
||
p = GiDrawUtility::DrawPipe(ptS, ptE, dR, dT);
|
||
AddToModelSpace(p, _id, NULL, true);
|
||
return;
|
||
}
|
||
rt = acedEntSel(_T("\n选择一段曲线做为管线路径:"), adsEnt, adsPt);
|
||
if (rt != RTNORM) return;
|
||
|
||
|
||
AcDbObjectId id;
|
||
acdbGetObjectId(id, adsEnt);
|
||
OPENOBJ_BEGIN(id, AcDb::kForRead, AcDbCurve, pPath)
|
||
if (!pPath)
|
||
{
|
||
acutPrintf(_T("\n所选实体不是曲线。"));
|
||
return;
|
||
}
|
||
if (_tcscmp(szKey, _T("2")) == 0)
|
||
{
|
||
rt = acedEntSel(_T("\n请选择一个闭合的曲线做为管线截面:"), adsEnt, adsPt);
|
||
if (rt != RTNORM) return;
|
||
AcDbObjectId idSection;
|
||
acdbGetObjectId(idSection, adsEnt);
|
||
OPENOBJ_BEGIN(idSection, AcDb::kForRead, AcDbCurve, pSection)
|
||
if (!pSection)
|
||
{
|
||
acutPrintf(_T("\n所选实体不是polyline。"));
|
||
return;
|
||
}
|
||
if (!pSection->isClosed())
|
||
{
|
||
acutPrintf(_T("\n请选择一个闭合的曲线。"));
|
||
return;
|
||
}
|
||
AcDbExtents ext;
|
||
pSection->getGeomExtents(ext);
|
||
AcGePoint3d ptOn((ext.maxPoint().x + ext.minPoint().x) * .5, (ext.maxPoint().y + ext.minPoint().y) * .5, (ext.maxPoint().z + ext.minPoint().z) * .5);
|
||
p = GiDrawUtility::DrawPipe(pPath, pSection, ptOn);
|
||
if (p) AddToModelSpace(p, _id, NULL, true);
|
||
OPENOBJ_END()
|
||
}
|
||
else
|
||
{
|
||
rt = acedEntSel(_T("\n请选择一个region做为管线截面:"), adsEnt, adsPt);
|
||
if (rt != RTNORM) return;
|
||
AcDbObjectId idSection;
|
||
acdbGetObjectId(idSection, adsEnt);
|
||
OPENOBJ_BEGIN(idSection, AcDb::kForRead, AcDbRegion, pSection)
|
||
if (!pSection)
|
||
{
|
||
acutPrintf(_T("\n所选实体不是region。"));
|
||
return;
|
||
}
|
||
AcDbExtents ext;
|
||
pSection->getGeomExtents(ext);
|
||
AcGePoint3d ptOn((ext.maxPoint().x + ext.minPoint().x) * .5, (ext.maxPoint().y + ext.minPoint().y) * .5, (ext.maxPoint().z + ext.minPoint().z) * .5);
|
||
p = GiDrawUtility::DrawPipe(pPath, pSection, ptOn);
|
||
if (p) AddToModelSpace(p, _id, NULL, true);
|
||
OPENOBJ_END()
|
||
}
|
||
OPENOBJ_END()
|
||
}
|
||
|
||
bool createRegion(const AcDbVoidPtrArray& curveSegments, AcDbVoidPtrArray& regions)
|
||
{
|
||
if (AcDbRegion::createFromCurves(curveSegments, regions) != Acad::eOk)
|
||
{
|
||
acutPrintf(_T("\n createFromCurves failed."));
|
||
return false;
|
||
}
|
||
|
||
if (regions.isEmpty())
|
||
{
|
||
acutPrintf(_T("\n result is empty."));
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
AcDbRegion* createRegion(const AcDbVoidPtrArray& curveSegments)
|
||
{
|
||
if (curveSegments.isEmpty()) return NULL;
|
||
AcDbVoidPtrArray regs;
|
||
if (!createRegion(curveSegments, regs)) return NULL;
|
||
return (AcDbRegion*)regs[0];
|
||
}
|
||
|
||
AcDbRegion* createRegion(AcDbEntity *pEnt)
|
||
{
|
||
AcDbVoidPtrArray arr, regs;
|
||
arr.append(pEnt);
|
||
if (!createRegion(arr, regs)) return NULL;
|
||
return (AcDbRegion*)regs[0];
|
||
}
|
||
|
||
AcDbRegion* makeRegion(const int &iType, float &dThick, STSection §ion)
|
||
{
|
||
switch (iType)
|
||
{
|
||
case 0: // 圆
|
||
{
|
||
if (section.a <= dThick) return NULL;
|
||
// 构建两个圆
|
||
AcDbCircle cirBig(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, section.a);
|
||
AcDbCircle cirSml(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, section.a - dThick);
|
||
// 构建两个region
|
||
AcDbRegion *pRegBig = createRegion(&cirBig);
|
||
AcDbRegion *pRegSml = createRegion(&cirSml);
|
||
if (!pRegBig || !pRegSml)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
return NULL;
|
||
}
|
||
if (pRegBig->booleanOper(AcDb::kBoolSubtract, pRegSml) != Acad::eOk)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
return NULL;
|
||
}
|
||
DELETE_PTR(pRegSml);
|
||
return pRegBig;
|
||
}
|
||
break;
|
||
case 1: // 半圆
|
||
{
|
||
if (section.a <= dThick) return NULL;
|
||
AcDbArc ArcBig(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, section.a, 0., PI);
|
||
AcDbLine LineBig(AcGePoint3d(section.a, .0, .0), AcGePoint3d(-1 * section.a, .0, .0));
|
||
double delta(section.a - dThick);
|
||
AcDbArc ArcSml(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, delta, 0., PI);
|
||
AcDbLine LineSml(AcGePoint3d(delta, .0, .0), AcGePoint3d(-1 * delta, .0, .0));
|
||
AcDbVoidPtrArray arBig, arSml;
|
||
arBig.append(&ArcBig);
|
||
arBig.append(&LineBig);
|
||
arSml.append(&ArcSml);
|
||
arSml.append(&LineSml);
|
||
AcDbRegion *pRegBig = createRegion(arBig);
|
||
AcDbRegion *pRegSml = createRegion(arSml);
|
||
if (!pRegBig || !pRegSml)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
return NULL;
|
||
}
|
||
if (pRegBig->booleanOper(AcDb::kBoolSubtract, pRegSml) != Acad::eOk)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
return NULL;
|
||
}
|
||
DELETE_PTR(pRegSml);
|
||
return pRegBig;
|
||
}
|
||
break;
|
||
case 2: // 椭圆
|
||
{
|
||
if (section.a * .5 <= dThick) return NULL;
|
||
if (section.b * .5 <= dThick) return NULL;
|
||
// 构建两个椭圆
|
||
AcDbEllipse cirBig(AcGePoint3d::kOrigin
|
||
, AcGeVector3d::kZAxis
|
||
, AcGeVector3d::kXAxis * section.b * .5
|
||
, section.a / section.b);
|
||
|
||
double deltaB(section.b - dThick);
|
||
double deltaA(section.a - dThick);
|
||
AcDbEllipse cirSml(AcGePoint3d::kOrigin
|
||
, AcGeVector3d::kZAxis
|
||
, AcGeVector3d::kXAxis * deltaB * .5
|
||
, deltaA / deltaB);
|
||
// 构建两个region
|
||
AcDbRegion *pRegBig = createRegion(&cirBig);
|
||
AcDbRegion *pRegSml = createRegion(&cirSml);
|
||
if (pRegBig->booleanOper(AcDb::kBoolSubtract, pRegSml) != Acad::eOk)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
}
|
||
DELETE_PTR(pRegSml);
|
||
return pRegBig;
|
||
}
|
||
break;
|
||
case 3: // 半椭圆
|
||
{
|
||
if (section.a * .5 <= dThick) return NULL;
|
||
if (section.b * .5 <= dThick) return NULL;
|
||
AcDbEllipse ArcBig(AcGePoint3d::kOrigin
|
||
, AcGeVector3d::kZAxis
|
||
, AcGeVector3d::kXAxis * section.b * .5
|
||
, section.a / section.b
|
||
, 0.
|
||
, PI);
|
||
AcDbLine LineBig(AcGePoint3d(section.b * .5, .0, .0), AcGePoint3d(-1 * section.b * .5, .0, .0));
|
||
|
||
double deltaB(section.b - dThick);
|
||
double deltaA(section.a - dThick);
|
||
AcDbEllipse ArcSml(AcGePoint3d::kOrigin
|
||
, AcGeVector3d::kZAxis
|
||
, AcGeVector3d::kXAxis * deltaB * .5
|
||
, deltaA / deltaB
|
||
, 0.
|
||
, PI);
|
||
AcDbLine LineSml(AcGePoint3d(deltaB * .5, .0, .0), AcGePoint3d(-1 * deltaB * .5, .0, .0));
|
||
AcDbVoidPtrArray arBig, arSml;
|
||
arBig.append(&ArcBig);
|
||
arBig.append(&LineBig);
|
||
arSml.append(&ArcSml);
|
||
arSml.append(&LineSml);
|
||
AcDbRegion *pRegBig = createRegion(arBig);
|
||
AcDbRegion *pRegSml = createRegion(arSml);
|
||
if (!pRegBig || !pRegSml)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
return NULL;
|
||
}
|
||
if (pRegBig->booleanOper(AcDb::kBoolSubtract, pRegSml) != Acad::eOk)
|
||
{
|
||
DELETE_PTR(pRegBig);
|
||
DELETE_PTR(pRegSml);
|
||
return NULL;
|
||
}
|
||
DELETE_PTR(pRegSml);
|
||
return pRegBig;
|
||
}
|
||
break;
|
||
case 4: // 马蹄
|
||
return section.pReg;
|
||
default:
|
||
return NULL;
|
||
}
|
||
return NULL;
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::Start()
|
||
{
|
||
TCHAR szKey[131] = {};
|
||
acedInitGet(RSG_OTHER, _T("1 2"));
|
||
int nRes = acedGetKword(_T("\n请选择[绘制测试(1)/对话框测试(2)]<对话框测试(2)>:"), szKey);
|
||
|
||
if (nRes == RTCAN)
|
||
return;
|
||
|
||
if (_tcscmp(szKey, _T("1")) == 0)
|
||
{
|
||
GiDrawPipeTest();
|
||
return;
|
||
}
|
||
|
||
if (_tcscmp(szKey, _T("2")) == 0)
|
||
{
|
||
CAcModuleResourceOverride myResources;
|
||
CDGGLDlg dlg;
|
||
dlg.DoModal();
|
||
}
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedTest()
|
||
{
|
||
UpdateData(TRUE);
|
||
OnBnClickedRadio();
|
||
CBaseDialog::OnOK();
|
||
AcDbObjectId idPath(AcDbObjectId::kNull);
|
||
ads_name adsEnt;
|
||
ads_point adsPt;
|
||
int rt = acedEntSel(_T("\n选择一段曲线做为管线路径:"), adsEnt, adsPt);
|
||
if (rt != RTNORM) return;
|
||
acdbGetObjectId(idPath, adsEnt);
|
||
|
||
OPENOBJ_BEGIN(idPath, AcDb::kForRead, AcDbCurve, pPath)
|
||
if (!pPath) return;
|
||
float dOut(AS_MUNIT(m_dOutT));
|
||
AcDbRegion *pReg = makeRegion(m_iSectionType, dOut, m_curSection);
|
||
if (!pReg)
|
||
{
|
||
acutPrintf(_T("\n生成面域失败。"));
|
||
return;
|
||
}
|
||
AecDbShEarthWorm *pSh = new AecDbShEarthWorm;
|
||
pSh->GetSpecialtyData()->SetAt(KEY_2DSTYLE, 2);
|
||
pSh->SetSection(pReg, m_curSection.pt);
|
||
pSh->SetBaseCurve(pPath);
|
||
AcDbObjectId id;
|
||
AddToModelSpace(pSh, id, NULL, true);
|
||
OPENOBJ_END()
|
||
}
|
||
|
||
void CDGGLDlg::OnBnClickedRadio()
|
||
{
|
||
UpdateData(TRUE);
|
||
CWnd *pCir = GetDlgItem(IDC_BUTTON11);
|
||
CWnd *pHalfCir = GetDlgItem(IDC_BUTTON52);
|
||
CWnd *pEll = GetDlgItem(IDC_BUTTON53);
|
||
CWnd *pHalfEll = GetDlgItem(IDC_BUTTON54);
|
||
CWnd *pHorse = GetDlgItem(IDC_BUTTON55);
|
||
if (!pCir || !pHalfCir || !pEll || !pHalfEll || !pHorse) return;
|
||
pCir->EnableWindow(FALSE);
|
||
pHalfCir->EnableWindow(FALSE);
|
||
pEll->EnableWindow(FALSE);
|
||
pHalfEll->EnableWindow(FALSE);
|
||
pHorse->EnableWindow(FALSE);
|
||
switch (m_iSectionType)
|
||
{
|
||
case 0:
|
||
pCir->EnableWindow(TRUE);
|
||
break;
|
||
case 1:
|
||
pHalfCir->EnableWindow(TRUE);
|
||
break;
|
||
case 2:
|
||
pEll->EnableWindow(TRUE);
|
||
break;
|
||
case 3:
|
||
pHalfEll->EnableWindow(TRUE);
|
||
break;
|
||
case 4:
|
||
pHorse->EnableWindow(TRUE);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
} |