Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/DrawLandScapeDlg.cpp
T

979 lines
28 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
// DrawLandScape.cpp : implementation file
//
#include "stdafx.h"
#include "DrawLandScapeDlg.h"
#include <aced.h>
#include <rxregsvc.h>
#include "LandScapeStyle.h"
#include "GlwGlobalVariable.h"
//#include "../tch3_kernal/arxBaseTools.h"
// CDrawLandScape dialog
IMPLEMENT_DYNAMIC(CDrawLandScapeDlg, CDialog)
CString CDrawLandScapeDlg::m_edtStyles = _T("卵石1");
AcDbObjectId CDrawLandScapeDlg::m_idLandScapeRoadStyle = NULL;
CDrawLandScapeDlg* CDrawLandScapeDlg::g_pCurDlg = NULL;
CString CDrawLandScapeDlg::m_strBlockName = _T("景观路(00000001)");
static std::vector<blockName> g_name;
int CDrawLandScapeDlg::m_iDrawType = 1; // zjt add 160831 记录上一次修改的绘制方式
extern AcDbObjectId InsertBlock(CString &csBlkName);
// 调用构件库
extern BOOL InvokeTkwMan(const TCHAR *pszLib, BOOL bSelOnly, XString &sBlockName);
CDrawLandScapeDlg::CDrawLandScapeDlg(CWnd* pParent /*=NULL*/)
: CModelessDialog(CDrawLandScapeDlg::IDD, pParent)
/*, m_edtPercent(0)*/
{
if (!JudgeBlockFile())
acedPostCommand(_T("\33\33"));
if(!GET_GLOBAL_VARIABLE(CLandScapeStyle))
SET_GLOBAL_VARIABLE(CLandScapeStyle, new CLandScapeStyle);
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
g_pCurDlg = this;
m_bAutoAdjust = pLandScape->GetIsAutoAdjust();
m_bRodaLine = pLandScape->GetIsDrawRoadLine();
m_bIsUnitPercent = pLandScape->GetIsUnitPercent();
m_edtPercent = pLandScape->GetWidthPercent();
m_csRoadWidth = setFormatStyle((pLandScape->GetRoadWidth()));
m_dRoadWidth = _wtof(m_csRoadWidth);
m_dUnitGap = _wtof(setFormatStyle(pLandScape->GetGap()));
if (g_name.empty())
{
blocknameInit(g_name);
}
}
CDrawLandScapeDlg::~CDrawLandScapeDlg()
{
//MM单位保存
m_csRoadWidth = setFormatStyle(_AS_MM(m_dRoadWidth));
m_dRoadWidth = _wtof(m_csRoadWidth);
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetRoadWidth(m_dRoadWidth);
m_csRoadWidth = setFormatStyle(_AS_MM(m_dUnitGap));
m_dUnitGap = _wtof(m_csRoadWidth);
pLandScape->SetUnitGap(m_dUnitGap);
m_wndToolTip.DestroyWindow();
}
void CDrawLandScapeDlg::DoDataExchange(CDataExchange* pDX)
{
CModelessDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDT_STYLES, m_edtStyles);
DDX_Text(pDX, IDC_EDT_UNITGAP, m_dUnitGap);
DDX_Text(pDX, IDC_EDT_ROADWIDTH, m_dRoadWidth);
DDX_Text(pDX, IDC_EDT_UNITWIDTHPERCENT, m_edtPercent);
DDX_Control(pDX, IDC_EDT_ROADWIDTH, m_wndEdtRoadWidth);
DDX_Control(pDX, IDC_EDT_UNITGAP, m_wndEdtGap);
DDX_Check(pDX, IDC_CHK_UNITWIDTHPERCENT, m_bIsUnitPercent);
DDX_Check(pDX, IDC_CHK_AUTOADJUST, m_bAutoAdjust);
DDX_Check(pDX, IDC_CHK_DRAWROADLINE, m_bRodaLine);
}
BEGIN_MESSAGE_MAP(CDrawLandScapeDlg, CModelessDialog)
ON_BN_CLICKED(IDC_BTN_SELECTPATH, OnBnClickedBtnSelectpath)
ON_BN_CLICKED(IDC_BTN_DYNAMICDRAW, OnBnClickedBtnDynamicdraw)
ON_STN_CLICKED(IDC_STATIC_SHOWPIC, OnStnClickedStaticShowpic)
ON_BN_CLICKED(IDC_BTN_ROADWIDTH, OnBnClickedBtnRoadwidth)
ON_BN_CLICKED(IDC_CHK_UNITWIDTHPERCENT, OnBnClickedChkUnitwidthpercent)
ON_WM_CTLCOLOR()
ON_EN_KILLFOCUS(IDC_EDT_ROADWIDTH, OnEnKillfocusEdtRoadwidth)
ON_BN_CLICKED(IDC_CHK_DRAWROADLINE, OnBnClickedChkDrawroadline)
ON_BN_CLICKED(IDC_CHK_AUTOADJUST, OnBnClickedChkAutoAdjust)
ON_EN_KILLFOCUS(IDC_EDT_UNITGAP, OnEnKillfocusEdtUnitgap)
ON_EN_KILLFOCUS(IDC_EDT_UNITWIDTHPERCENT, OnEnKillfocusEdtUnitwidthpercent)
ON_WM_CLOSE()
ON_WM_PAINT()
END_MESSAGE_MAP()
// CDrawLandScape message handlers
void CDrawLandScapeDlg::OnBnClickedBtnSelectpath()
{
m_iDrawType = 2;
m_bExit = FALSE;
((CButton*)GetDlgItem(IDC_BTN_DYNAMICDRAW))->SetCheck(0);
((CButton*)GetDlgItem(IDC_BTN_SELECTPATH))->SetCheck(1);
acedPostCommand(_T("\33"));//程序结束命令
}
void CDrawLandScapeDlg::OnBnClickedBtnDynamicdraw()
{
m_iDrawType = 1;
m_bExit = FALSE;
((CButton*)GetDlgItem(IDC_BTN_DYNAMICDRAW))->SetCheck(1);
((CButton*)GetDlgItem(IDC_BTN_SELECTPATH))->SetCheck(0);
acedPostCommand(_T("\33"));//程序结束命令
}
BOOL CDrawLandScapeDlg::OnInitDialog()
{
CModelessDialog::OnInitDialog();
UpdateData(TRUE);
// 获取当前的绘图单位 bIsMetre=true:M;bIsMetre=false:mm
BOOL bIsMetre = DocGetMeterUnitDraw();
if (bIsMetre)
{
this->SetWindowText(_T("景观路(单位:M)")); // 对话框标题设置
}
else
{
this->SetWindowText(_T("景观路(单位:mm)"));
}
if (m_strBlockName.IsEmpty())
m_strBlockName = _T("景观路(00000001)");
while (!m_idLandScapeRoadStyle.isValid())// 用户没有设值,使用默认值,保存记录,ctrl+z 有问题待解
{
m_idLandScapeRoadStyle = InsertBlock(m_strBlockName);
}
if (!IsBlockInCurDwg(m_idLandScapeRoadStyle))
{
m_idLandScapeRoadStyle = NULL;
while (!m_idLandScapeRoadStyle.isValid())// 用户没有设值,使用默认值,保存记录,ctrl+z 有问题待解
{
m_idLandScapeRoadStyle = InsertBlock(m_strBlockName);
}
}
//AddTip(IDC_STC_PERCENT, _T("景观路单元相对于总路宽的百分比"));
if (!m_PreviewCtrl.SubclassDlgItem(IDC_STATIC_SHOWPIC, this))
return FALSE;
//m_PreviewCtrl.SetOrbitFlag(/*OBF_ZOOM |放大缩小,鼠标滚轮*/ OBF_PAN);//设置动态观察标志
m_iDrawType;
// 预览
//layerInit();//创建图层
//modify tyj 20160921:修正绘制景观路,绘制方式不记录上一次修改的问题
if (m_iDrawType == 1)
{
((CButton*)GetDlgItem(IDC_BTN_DYNAMICDRAW))->SetCheck(1);
((CButton*)GetDlgItem(IDC_BTN_SELECTPATH))->SetCheck(0);
}
else if (m_iDrawType == 2)
{
((CButton*)GetDlgItem(IDC_BTN_DYNAMICDRAW))->SetCheck(0);
((CButton*)GetDlgItem(IDC_BTN_SELECTPATH))->SetCheck(1);
}
if (m_bIsUnitPercent)
{
GetDlgItem(IDC_EDT_UNITWIDTHPERCENT)->EnableWindow(TRUE);
}
else
{
GetDlgItem(IDC_EDT_UNITWIDTHPERCENT)->EnableWindow(FALSE);
}
EnableToolTips(TRUE);
m_wndToolTip.Create(this, TTS_ALWAYSTIP);
m_wndToolTip.Activate(TRUE);
m_wndToolTip.AddTool(GetDlgItem(IDC_STC_PERCENT), _T("景观路单元相对于总路宽的百分比"));
UpdateData(FALSE);
UpdatePreview();
SetPicture();
return TRUE;
}
void CDrawLandScapeDlg::layerInit()
{
/*IsLayerExistInDb(_T("LSCP-ROAD"));
AcDbObjectId idLayer = InitLayer(_T("LSCP-ROAD"));
AcDbLayerTableRecord *pLayerTblRcd = NULL;
if (acdbOpenObject(pLayerTblRcd, idLayer, AcDb::kForWrite) == Acad::eOk)
{
pLayerTblRcd->setName(L"LSCP-ROAD");
AcCmColor color;
color.setColorIndex(83);
pLayerTblRcd->setColor(color);
pLayerTblRcd->setDescription(L"碎石、汀步等景观路");
pLayerTblRcd->close();
} */
}
//预览
void CDrawLandScapeDlg::UpdatePreview()
{
UpdateData(TRUE);
// m_PreviewCtrl.clearAll();
// m_PreviewCtrl.init(true);
// 锁定当前文档
acDocManager->lockDocument(curDoc());
// 块表记录
AcDbBlockTableRecord *pBTRecord = NULL;
if (acdbOpenObject(pBTRecord, m_idLandScapeRoadStyle, AcDb::kForRead) != Acad::eOk)
{
return;
}
// 定义本数据库的块表记录
AcDbBlockTableRecordIterator *pItor = NULL;
pBTRecord->newIterator(pItor);
// 预览数据库
AcDbBlockTable *pBlockTab = NULL;
Acad::ErrorStatus es = m_PreviewDb.getSymbolTable(pBlockTab, AcDb::kForWrite);
if (es != Acad::eOk)
return;
AcCmColor color;
color.setColorIndex(83);
m_PreviewDb.setCecolor(color);
// 定义预览数据库的块记录
AcDbBlockTableRecord *pBlockTabRecord = new AcDbBlockTableRecord;
pBlockTabRecord->setName(_T("*U"));
// 将块表中实体添加到新的数据库的块表记录中
AcDbEntity *pClone = NULL,
*pEnt = NULL;
for (; !pItor->done(); pItor->step())
{
es = pItor->getEntity(pEnt, AcDb::kForRead, false);
if (es != Acad::eOk)
{
delete pBlockTabRecord;
pBlockTab->close();
return;
}
pClone = (AcDbEntity*)pEnt->clone();
es = pBlockTabRecord->appendAcDbEntity(pClone);
if (es != Acad::eOk)
{
delete pBlockTabRecord;
pBlockTab->close();
return;
}
pEnt->close();
}
delete pItor;
pBTRecord->close();
AcDbBlockReference *pRef = new AcDbBlockReference(AcGePoint3d(0, 0, 0), m_idLandScapeRoadStyle);
// 获得块的包围盒
AcDbExtents extents;
pRef->getGeomExtents(extents);
// 块的外包盒的角点
AcGePoint3d ptLow, ptUp;
// 获得图块的大小
ptLow = extents.minPoint();
ptUp = extents.maxPoint();
double dXWidth = (ptUp.x - ptLow.x),
dYHeigh = (ptUp.y - ptLow.y);
//X 为长, Y 为宽
m_dBlockLen = dXWidth;
m_dBlockWidth = dYHeigh;
//pBlockTab->add(pBlockTabRecord);
pBlockTab->close();
pBlockTabRecord->close();
//设置图层, 图块颜色
// AcDbObjectId idLayer = InitLayer(L"LSCP-ROAD");
// pRef->setLayer(idLayer);
//AddToModelSpace(pRef, Adesk::kTrue); // 添加到数据库中
// AcGePoint3d ptIns(extents.minPoint() / 2 + extents.maxPoint() / 2),
// target = ptIns;
//
// AcGePoint3d position(target.x, target.y, 1);
//m_PreviewCtrl.view()->setView(position, target, AcGeVector3d(0, 1, 0), dXWidth * 2, dYHeigh * 2);
//m_PreviewCtrl.view()->add(pBTRecord, m_PreviewCtrl.model());
//////////////////////////////////////////////////////////////////////////
// AcDbLine *line = new AcDbLine(AcGePoint3d(rand() / 100, rand() / 100, rand() / 100), AcGePoint3d(rand() / 100, rand() / 100, rand() / 100));
//
// // if we created it ok
// if (line != NULL)
// {
// // add the newly created line to the AcGsView
// m_PreviewCtrl.view()->add(line, m_PreviewCtrl.model());
// // close the line now we are finished with it
// line->close();
// }
//////////////////////////////////////////////////////////////////////////
//预览背景颜色更改
// AcColorSettings colourSettings;
// // get the AutoCAD current colour settings
// acedGetCurrentColors(&colourSettings);
// DWORD colorDW;
// // get the background colour
// colorDW = colourSettings.dwGfxModelBkColor;
// // get the current device background colour
// AcGsColor colors = m_PreviewCtrl.device()->getBackgroundColor();
// // now update them to the new color
// colors.m_red = GetRValue(colorDW);
// colors.m_green = GetGValue(colorDW);
// colors.m_blue = GetBValue(colorDW);
// colors.m_filler = 255; // opaque background
// // finally lets set the new colour
// m_PreviewCtrl.device()->setBackgroundColor(colors);
// // now remap the colours back to the default
// m_PreviewCtrl.device()->setLogicalPalette(&colors, 256);
//////////////////////////////////////////////////////////////////////////
//m_PreviewCtrl.Invalidate();
acDocManager->unlockDocument(curDoc());
UpdateData(FALSE);
}
//点击图片
void CDrawLandScapeDlg::OnStnClickedStaticShowpic()
{
AcApDocument *pDoc = acDocManager->curDocument();
// 找到sys路径下的dwg文件
CString szFileName = _T("总图.TKW"),
sLibFile = g_sDwbPath;
sLibFile = sLibFile.Left(sLibFile.GetLength() - 5) + _T("\\DWB\\") + szFileName;
XString sBlockName;
sBlockName = _T("卵石1");
if (InvokeTkwMan(sLibFile, TRUE, sBlockName))
{
m_strBlockName = sBlockName;
szFileName = (const TCHAR *)(XPathParser(sBlockName).m_sFileName);
sLibFile = g_sDwbPath;
CString csPath = sLibFile.Left(sLibFile.GetLength() - 5) + _T("\\DWB\\");
csPath += szFileName;
// 锁定文档
acDocManager->lockDocument(pDoc);
int nRet = LoadDwbBlock(csPath, sBlockName);
if (nRet == RTNORM)
{
m_idLandScapeRoadStyle = InitBlock(sBlockName);
}
acDocManager->unlockDocument(pDoc);
// m_edtStyles = sBlockName;
CString xx(sBlockName.cs());
m_edtStyles = blockNameAdjust(xx);
UpdateData(FALSE);
UpdatePreview();
SetPicture();
}
}
// 设置幻灯片显示
void CDrawLandScapeDlg::SetPicture()
{
XString sFilePath(256);
sFilePath << CString(m_strBlockName);
// 获得图片控件
CWnd* pWndBmp = GetDlgItem(IDC_STATIC_SHOWPIC);
ASSERT(pWndBmp);
// 获得图片区域
CDC *pDC = pWndBmp->GetDC();
CRect rect;
pWndBmp->GetClientRect(rect);
m_imgPreview.InitDC(pDC, rect, GetAcadBackColor());
m_imgPreview.PaintSlide(sFilePath);
m_imgPreview.SetDC(NULL);
pWndBmp->ReleaseDC(pDC);
}
//点击路宽
void CDrawLandScapeDlg::OnBnClickedBtnRoadwidth()
{
double dTemp = m_dRoadWidth;
CString strTemp = _T("\n请指定路宽");
ads_real dist = m_dRoadWidth;
BeginEditorCommand();
if (GetDist(strTemp, dist, RSG_NOZERO | RSG_NONEG) == RTNORM)
{
m_dRoadWidth = dist;
}
else
{
m_dRoadWidth = dTemp;
}
CompleteEditorCommand();
m_dRoadWidth = _wtof(setFormatStyle(m_dRoadWidth));
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetRoadWidth(_AS_MM(m_dRoadWidth));
UpdateData(FALSE);
}
CString CDrawLandScapeDlg::setFormatStyle(double dData)
{
CString strTemp;
BOOL bret = DocGetMeterUnitDraw();
if (bret)
strTemp.Format(_T("%.3f"), dData);
else
strTemp.Format(_T("%.0f"), dData);
return strTemp;
}
void CDrawLandScapeDlg::OnBnClickedChkUnitwidthpercent()
{
if (m_bIsUnitPercent)
{
GetDlgItem(IDC_EDT_UNITWIDTHPERCENT)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_EDT_UNITWIDTHPERCENT)->EnableWindow(TRUE);
}
UpdateData(TRUE); // zjt modify 160831 单元宽百分比的状态无法记录
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetIsUnitPercent(m_bIsUnitPercent);
}
void CDrawLandScapeDlg::OnBnClickedChkDrawroadline()
{
UpdateData(TRUE);
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetIsDrawLine(m_bRodaLine);
}
void CDrawLandScapeDlg::OnBnClickedChkAutoAdjust()
{
UpdateData(TRUE);
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetIsAutoAdjust(m_bAutoAdjust);
}
HBRUSH CDrawLandScapeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CModelessDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (IDC_STC_PERCENT == pWnd->GetDlgCtrlID())
{
pDC->SetTextColor(RGB(0, 0, 255)); //设置字体颜色
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
//路宽,值,判断,处理,消息
void CDrawLandScapeDlg::OnEnKillfocusEdtRoadwidth()
{
double dTemp = m_dRoadWidth;
UpdateData(TRUE);
if (m_dRoadWidth <= 0)
{
MessageBox(_T("请输入 >0 的数值!"), _T("AutoCAD"));
m_dRoadWidth = dTemp;
}
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetRoadWidth(_AS_MM(m_dRoadWidth));
pLandScape->SetRealBlockWidth(m_dRoadWidth); // zjt add 160906 在更改路宽之后 获取当前路宽
UpdateData(FALSE);
}
//间距,值,判断,处理,消息
void CDrawLandScapeDlg::OnEnKillfocusEdtUnitgap()
{
double dTemp = m_dUnitGap;
UpdateData(TRUE);
if (m_dUnitGap < 0.0)
{
MessageBox(_T("请输入 ≥0 的数值!"), _T("AutoCAD"));
m_dUnitGap = dTemp;
}
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetUnitGap(_AS_MM(m_dUnitGap));
UpdateData(FALSE);
}
double CDrawLandScapeDlg::GetRoadWidth()
{
return m_dRoadWidth;
}
double CDrawLandScapeDlg::GetRoadWidthMM()
{
return m_dRoadWidthMM;
}
int CDrawLandScapeDlg::GetWidthPercent()
{
return m_edtPercent;
}
double CDrawLandScapeDlg::GetGap()
{
return m_dUnitGap;
}
int CDrawLandScapeDlg::GetDrawType()
{
return m_iDrawType;
}
BOOL CDrawLandScapeDlg::GetRoadLineState()
{
return m_bRodaLine;
}
double CDrawLandScapeDlg::GetUnitRealWidth()
{
if (m_bIsUnitPercent)
{
m_dUnitRealWidth = m_dRoadWidth * (((double)m_edtPercent)/100);
}
else
{
m_dUnitRealWidth = m_dRoadWidth;
}
return m_dUnitRealWidth;
}
BOOL CDrawLandScapeDlg::GetAutoAdjustState()
{
return m_bAutoAdjust;
}
AcDbObjectId CDrawLandScapeDlg::GetLandScapeId()
{
UpdateData(TRUE);
if (!m_idLandScapeRoadStyle.isValid())
{
MessageBox(_T("没有选择图形!"));
}
return m_idLandScapeRoadStyle;
}
double CDrawLandScapeDlg::GetBlockWidth()
{
return m_dBlockWidth;
}
double CDrawLandScapeDlg::GetBlockLen()
{
return m_dBlockLen;
}
CString CDrawLandScapeDlg::blockNameAdjust(CString& stroldName)
{
for (std::vector<blockName>::iterator result = g_name.begin(); result != g_name.end(); result++)
{
if (stroldName.Compare(result->strOldName) == 0)
{
return result->strNewName;
}
}
return L"";
}
void CDrawLandScapeDlg::OnEnKillfocusEdtUnitwidthpercent()
{
int iSize = m_edtPercent;
UpdateData(TRUE);
if (iSize < 0)
{
MessageBox(_T("请输入≥0的数字"), _T("AutoCAD"), MB_OK);
return;
}
UpdateData(FALSE);
CLandScapeStyle* pLandScape = GET_GLOBAL_VARIABLE(CLandScapeStyle);
pLandScape->SetUnitPercent(m_edtPercent);
}
void CDrawLandScapeDlg::OnClose()
{
m_bExit = TRUE;
if (m_bModeless)
{
acedPostCommand(_T("\33\33"));
}
else
{
CModelessDialog::OnClose();
}
}
BOOL CDrawLandScapeDlg::IsBlockInCurDwg(AcDbObjectId& blockId)
{
Acad::ErrorStatus es;
AcDbBlockTable *pBlockTable;
BOOL IsIn = FALSE;
es=acdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForWrite);
if (es != Acad::eOk) {
ads_printf(_T("Unable to open block table.\n"));
return false;
}
IsIn = pBlockTable->has(blockId);
pBlockTable->close();
return IsIn;
}
BOOL CDrawLandScapeDlg::PreTranslateMessage(MSG* pMsg)
{
//CToolInfo toolInfo;
//if (pMsg->message >= WM_MOUSEFIRST &&
// pMsg->message <= WM_MOUSELAST&&m_wndToolTip.GetToolInfo(toolInfo,FromHandle(pMsg->hwnd)))
//{
///* MSG msg;
// memcpy(&msg, pMsg, sizeof(MSG));*/
// m_wndToolTip.RelayEvent(&msg);
//}
m_wndToolTip.RelayEvent(pMsg);
return CModelessDialog::PreTranslateMessage(pMsg);
}
void CDrawLandScapeDlg::OnPaint()
{
CPaintDC dc(this);
CRect rcClip, rcImage;
dc.GetClipBox(&rcClip);
CWnd *pImageBox = GetDlgItem(IDC_STATIC_SHOWPIC);
if (pImageBox)
{
pImageBox->GetWindowRect(&rcImage);
ScreenToClient(&rcImage);
if (!rcImage.IntersectRect(&rcImage, &rcClip))
return;
CDC *pDC = pImageBox->GetDC();
m_imgPreview.SetDC(pDC);
m_imgPreview.Redraw();
m_imgPreview.SetDC(NULL);
pImageBox->ReleaseDC(pDC);
}
}
void CDrawLandScapeDlg::blocknameInit(std::vector<blockName>& name)
{
blockName blockname;
blockname.strOldName = _T("$景观路$00000001");
blockname.strNewName = _T("卵石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000002");
blockname.strNewName = _T("卵石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000003");
blockname.strNewName = _T("卵石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000004");
blockname.strNewName = _T("卵石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000005");
blockname.strNewName = _T("卵石5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000006");
blockname.strNewName = _T("卵石6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000007");
blockname.strNewName = _T("条石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000008");
blockname.strNewName = _T("条石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000009");
blockname.strNewName = _T("条石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000010");
blockname.strNewName = _T("条石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000011");
blockname.strNewName = _T("片石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000012");
blockname.strNewName = _T("片石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000013");
blockname.strNewName = _T("片石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000014");
blockname.strNewName = _T("片石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000015");
blockname.strNewName = _T("片石5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000016");
blockname.strNewName = _T("片石6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000017");
blockname.strNewName = _T("片石7");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000018");
blockname.strNewName = _T("片石8");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000019");
blockname.strNewName = _T("片石9");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000020");
blockname.strNewName = _T("片石10");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000021");
blockname.strNewName = _T("片石11");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000022");
blockname.strNewName = _T("片石12");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000023");
blockname.strNewName = _T("石板1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000024");
blockname.strNewName = _T("石板2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000025");
blockname.strNewName = _T("石板3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000026");
blockname.strNewName = _T("石板4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000027");
blockname.strNewName = _T("石板5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000028");
blockname.strNewName = _T("石板6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000059");
blockname.strNewName = _T("石板7");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000030");
blockname.strNewName = _T("石板8");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000031");
blockname.strNewName = _T("石板9");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000032");
blockname.strNewName = _T("石板10");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000033");
blockname.strNewName = _T("叶氏汀步石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000034");
blockname.strNewName = _T("叶氏汀步石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000035");
blockname.strNewName = _T("叶氏汀步石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000036");
blockname.strNewName = _T("叶氏汀步石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000037");
blockname.strNewName = _T("叶氏汀步石5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000038");
blockname.strNewName = _T("叶氏汀步石6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000039");
blockname.strNewName = _T("叶氏汀步石7");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000040");
blockname.strNewName = _T("叶氏汀步石8");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000041");
blockname.strNewName = _T("叶氏汀步石9");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000042");
blockname.strNewName = _T("墩式汀步石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000043");
blockname.strNewName = _T("墩式汀步石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000044");
blockname.strNewName = _T("墩式汀步石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000045");
blockname.strNewName = _T("墩式汀步石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000046");
blockname.strNewName = _T("墩式汀步石5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000047");
blockname.strNewName = _T("墩式汀步石6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000048");
blockname.strNewName = _T("墩式汀步石7");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000049");
blockname.strNewName = _T("墩式汀步石8");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000050");
blockname.strNewName = _T("平板步石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000051");
blockname.strNewName = _T("平板步石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000052");
blockname.strNewName = _T("平板步石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000053");
blockname.strNewName = _T("平板步石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000054");
blockname.strNewName = _T("树桩汀步石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000055");
blockname.strNewName = _T("树桩汀步石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000056");
blockname.strNewName = _T("树桩汀步石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000057");
blockname.strNewName = _T("汀步步石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000058");
blockname.strNewName = _T("汀步步石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000059");
blockname.strNewName = _T("汀步步石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000060");
blockname.strNewName = _T("汀步步石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000061");
blockname.strNewName = _T("汀步步石5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000062");
blockname.strNewName = _T("汀步步石6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000063");
blockname.strNewName = _T("汀步步石7");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000064");
blockname.strNewName = _T("汀步步石8");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000065");
blockname.strNewName = _T("汀步步石9");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000066");
blockname.strNewName = _T("汀步步石10");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000067");
blockname.strNewName = _T("汀步步石11");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000068");
blockname.strNewName = _T("汀步步石12");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000069");
blockname.strNewName = _T("汀步步石13");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000070");
blockname.strNewName = _T("汀步步石14");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000071");
blockname.strNewName = _T("汀步步石15");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000072");
blockname.strNewName = _T("汀步步石16");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000073");
blockname.strNewName = _T("汀步步石17");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000074");
blockname.strNewName = _T("汀步步石18");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000075");
blockname.strNewName = _T("汀步步石19");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000076");
blockname.strNewName = _T("汀步步石20");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000077");
blockname.strNewName = _T("汀步步石21");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000078");
blockname.strNewName = _T("汀步步石22");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000079");
blockname.strNewName = _T("汀步步石23");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000080");
blockname.strNewName = _T("汀步步石24");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000081");
blockname.strNewName = _T("汀步步石25");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000082");
blockname.strNewName = _T("荷叶汀步石1");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000083");
blockname.strNewName = _T("荷叶汀步石2");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000084");
blockname.strNewName = _T("荷叶汀步石3");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000085");
blockname.strNewName = _T("荷叶汀步石4");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000086");
blockname.strNewName = _T("荷叶汀步石5");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000087");
blockname.strNewName = _T("荷叶汀步石6");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000088");
blockname.strNewName = _T("荷叶汀步石7");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000089");
blockname.strNewName = _T("荷叶汀步石8");
name.push_back(blockname);
blockname.strOldName = _T("$景观路$00000090");
blockname.strNewName = _T("花架");
name.push_back(blockname);
}
BOOL CDrawLandScapeDlg::JudgeBlockFile()
{
CString szFileName = _T("总图.TKW"),
sLibFile = g_sDwbPath;
CString strFilePath;
sLibFile = sLibFile.Left(sLibFile.GetLength() - 5) + _T("\\DWB\\") ;
strFilePath = sLibFile + szFileName;
if (_taccess(strFilePath, 0) == -1)
{
MessageBox(_T("缺少图库:总图.TKW"));
return FALSE;
}
szFileName = _T("景观路.SLB");
strFilePath = sLibFile + szFileName;
if (_taccess(strFilePath, 0) == -1)
{
MessageBox(_T("缺少图库:景观路.SLB"));
return FALSE;
}
szFileName = _T("景观路.TK");
strFilePath = sLibFile + szFileName;
if (_taccess(strFilePath, 0) == -1)
{
MessageBox(_T("缺少图库:景观路.TK"));
return FALSE;
}
szFileName = _T("景观路.DWB");
strFilePath = sLibFile + szFileName;
if (_taccess(strFilePath, 0) == -1)
{
MessageBox(_T("缺少图库:景观路.DWB"));
return FALSE;
}
}