980 lines
28 KiB
C++
980 lines
28 KiB
C++
// 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;
|
||
}
|
||
}
|
||
|
||
|
||
|