285 lines
6.1 KiB
C++
285 lines
6.1 KiB
C++
#include "stdafx.h"
|
|
#include "BaseHoleDlg.h"
|
|
#include "SelectBlkDlg.h"
|
|
#include "BaseHoleOperation.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//基础洞命令实现函数
|
|
void InsHole()
|
|
{
|
|
CTemporaryResourceOverride vTemp;
|
|
|
|
//打开基础洞设置对话框
|
|
CBaseHoleDlg baseHoleDlg(0,acedGetAcadFrame());
|
|
baseHoleDlg.Create(IDD_BASE_HOLE);
|
|
baseHoleDlg.ShowWindow(SW_SHOW);
|
|
|
|
//执行基础洞命令
|
|
CBaseHoleOperation baseHoleOperation;
|
|
baseHoleOperation.RunBaseHole(baseHoleDlg);
|
|
if (!baseHoleDlg.IsDestroy())
|
|
{
|
|
baseHoleDlg.DestroyWindow();
|
|
}
|
|
}
|
|
|
|
IMPLEMENT_DYNAMIC(CBaseHoleDlg, CModelessDialog)
|
|
CBaseHoleDlg::CBaseHoleDlg(int iType, CWnd* pParent /*=NULL*/)
|
|
: CModelessDialog(CBaseHoleDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CBaseHoleDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_strSysBlk1 = _T("TWTSYS(00000512)");
|
|
m_strSubscript = _T("");
|
|
m_strSuperscript= _T("");
|
|
m_bDestroy = FALSE;
|
|
}
|
|
|
|
CBaseHoleDlg::~CBaseHoleDlg()
|
|
{
|
|
|
|
}
|
|
|
|
void CBaseHoleDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CModelessDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CBaseHoleDlg)
|
|
DDX_Control(pDX, IDC_COMBO_SUBSCRIPT, m_cmbSubscript);
|
|
DDX_Control(pDX, IDC_COMBO_SUPERSCRIPT, m_cmbSuperscript);
|
|
DDX_Control(pDX, IDC_COMBO_HOLEWIDTH, m_cmbHoleWidth);
|
|
DDX_Control(pDX, IDC_COMBO_HOLEHIGH, m_cmbHoleHigh);
|
|
DDX_Control(pDX, IDC_COMBO_BOTTOMHIGH, m_cmbBottomHigh);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CBaseHoleDlg, CModelessDialog)
|
|
//{{AFX_MSG_MAP(CBaseHoleDlg)
|
|
ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
|
|
ON_WM_CLOSE()
|
|
ON_BN_CLICKED(IDC_PREVIEW, OnPreview)
|
|
ON_WM_PAINT()
|
|
ON_WM_DESTROY()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
LONG_PTR CBaseHoleDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR)
|
|
{
|
|
CPoint pt;
|
|
GetCursorPos(&pt);
|
|
CRect rc;
|
|
GetWindowRect(&rc);
|
|
return (rc.PtInRect(pt) ? TRUE : FALSE);
|
|
}
|
|
|
|
double CBaseHoleDlg::getHoleWidth()
|
|
{
|
|
double dRet = 0.0;
|
|
CString strData;
|
|
m_cmbHoleWidth.GetWindowText(strData);
|
|
dRet = _tstof(strData);
|
|
return dRet;
|
|
}
|
|
double CBaseHoleDlg::getHoleHigh()
|
|
{
|
|
double dRet = 0.0;
|
|
CString strData;
|
|
m_cmbHoleHigh.GetWindowText(strData);
|
|
dRet = _tstof(strData);
|
|
return dRet;
|
|
}
|
|
double CBaseHoleDlg::getBottomHigh()
|
|
{
|
|
double dRet = 0.0;
|
|
CString strData;
|
|
m_cmbBottomHigh.GetWindowText(strData);
|
|
dRet = _tstof(strData);
|
|
return dRet;
|
|
}
|
|
|
|
BOOL CBaseHoleDlg::OnInitDialog()
|
|
{
|
|
CModelessDialog::OnInitDialog();
|
|
|
|
UpdateDlgData(TRUE);
|
|
|
|
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);
|
|
XString xsBlk;
|
|
XString xsTKName, xsRocord;
|
|
SplitSlbName(m_strSysBlk1, xsTKName, xsRocord);
|
|
LoadDwbBlock(xsTKName, xsRocord, xsBlk);
|
|
m_strInsBlkName = xsBlk;
|
|
acDocManager->unlockDocument(curDoc());
|
|
OpenSlide();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CBaseHoleDlg::UpdateDlgData(BOOL bIsRead)
|
|
{
|
|
CRegProperty regProp(GetRegLocation(), _T("BaseHoleConfig"));
|
|
regProp.SetTopRootKey(HKEY_CURRENT_USER);
|
|
|
|
if (bIsRead)
|
|
{
|
|
CString strHoleWidth, strHoleHigh, strBottomHigh;
|
|
CString strSuperscript;
|
|
CString strSubscript;
|
|
|
|
if(regProp.GetValue(_T("HoleWidth"), strHoleWidth))
|
|
{
|
|
m_cmbHoleWidth.SetWindowText(strHoleWidth);
|
|
}
|
|
else
|
|
{
|
|
m_cmbHoleWidth.SetCurSel(0);
|
|
}
|
|
|
|
if (regProp.GetValue(_T("HoleHigh"), strHoleHigh))
|
|
{
|
|
m_cmbHoleHigh.SetWindowText(strHoleHigh);
|
|
}
|
|
else
|
|
{
|
|
m_cmbHoleHigh.SetCurSel(0);
|
|
}
|
|
|
|
if (regProp.GetValue(_T("BottomHigh"), strBottomHigh))
|
|
{
|
|
m_cmbBottomHigh.SetWindowText(strBottomHigh);
|
|
}
|
|
else
|
|
{
|
|
m_cmbBottomHigh.SetCurSel(0);
|
|
}
|
|
|
|
if (regProp.GetValue(_T("Superscript"), strSuperscript))
|
|
{
|
|
m_cmbSuperscript.SetWindowText(strSuperscript);
|
|
}
|
|
else
|
|
{
|
|
m_cmbSuperscript.SetCurSel(0);
|
|
}
|
|
|
|
if (regProp.GetValue(_T("Subscript"), strSubscript))
|
|
{
|
|
m_cmbSubscript.SetWindowText(strSubscript);
|
|
}
|
|
else
|
|
{
|
|
m_cmbSubscript.SetWindowText(_T(""));
|
|
}
|
|
|
|
if (!regProp.GetValue(_T("strBlkName"), m_strSysBlk1))
|
|
{
|
|
m_strSysBlk1 = _T("TWTSYS(00000512)");
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
else
|
|
{
|
|
UpdateData(TRUE);
|
|
regProp.SetValue(_T("HoleWidth"), getHoleWidth());
|
|
regProp.SetValue(_T("HoleHigh"), getHoleHigh());
|
|
regProp.SetValue(_T("BottomHigh"), getBottomHigh());
|
|
regProp.SetValue(_T("Superscript"), getSuperscript());
|
|
regProp.SetValue(_T("Subscript"), getSubscript());
|
|
regProp.SetValue(_T("strBlkName"), m_strSysBlk1);
|
|
}
|
|
}
|
|
|
|
void CBaseHoleDlg::OnClose()
|
|
{
|
|
DestroyWindow();
|
|
}
|
|
|
|
void CBaseHoleDlg::OnPreview()
|
|
{
|
|
UpdateData();
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CSelectBlkDlg dlg;
|
|
dlg.m_csTkName = _T("TWTSYS");
|
|
dlg.m_csType = _T("基础洞");
|
|
CWnd *pWnd = GetDlgItem(IDC_PREVIEW);
|
|
CRect rect;
|
|
dlg.m_staticSlide.m_csCurRecord = m_strSysBlk1;
|
|
pWnd->GetWindowRect(&rect);
|
|
dlg.m_ptBase = rect.TopLeft();
|
|
if(dlg.DoModal() == IDOK)
|
|
{
|
|
CString strRet = dlg.m_staticSlide.m_csCurRecord;
|
|
CString strDes = dlg.m_staticSlide.m_csCurDesName;
|
|
|
|
m_strSysBlk1 = _tcsrchr(strRet,_T('\\'))+1;
|
|
|
|
XString xsTKName, xsRocord;
|
|
SplitSlbName(strRet, xsTKName, xsRocord);
|
|
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);
|
|
XString xsBlk;
|
|
LoadDwbBlock(xsTKName, xsRocord, xsBlk);
|
|
m_strInsBlkName = xsBlk;
|
|
acDocManager->unlockDocument(curDoc());
|
|
OpenSlide();
|
|
}
|
|
}
|
|
|
|
void CBaseHoleDlg::OpenSlide()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pImageBox = GetDlgItem(IDC_PREVIEW);
|
|
CString strTKName, strRocord;
|
|
CString strSlb;
|
|
SplitBlkStr(m_strInsBlkName, strTKName, strRocord);
|
|
strSlb.Format(_T("%s(%s)"), strTKName, strRocord);
|
|
|
|
DrawSlide((const TCHAR*)strSlb, pImageBox);
|
|
}
|
|
|
|
void CBaseHoleDlg::OnPaint()
|
|
{
|
|
CPaintDC dc(this);
|
|
OpenSlide();
|
|
}
|
|
|
|
CString CBaseHoleDlg::getSuperscript()
|
|
{
|
|
UpdateData(TRUE);
|
|
CString strSuperscript = _T("");
|
|
m_cmbSuperscript.GetWindowText(strSuperscript);
|
|
return strSuperscript;
|
|
}
|
|
|
|
CString CBaseHoleDlg::getSubscript()
|
|
{
|
|
UpdateData(TRUE);
|
|
CString strSubscript = _T("");
|
|
m_cmbSubscript.GetWindowText(strSubscript);
|
|
return strSubscript;
|
|
}
|
|
|
|
|
|
void CBaseHoleDlg::OnDestroy()
|
|
{
|
|
UpdateDlgData(FALSE);
|
|
m_bDestroy = TRUE;
|
|
CModelessDialog::OnDestroy();
|
|
|
|
acedPostCommand(_T("\33\33"));
|
|
}
|
|
|
|
BOOL CBaseHoleDlg::IsDestroy()
|
|
{
|
|
return m_bDestroy;
|
|
}
|