Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/DrawLandScapeDlg.cpp
T
2026-09-28 15:28:50 +08:00

980 lines
28 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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;
}
}