#include "stdafx.h" #include "CISODimDlg.h" #include "KTModelLayoutXData.h" #include "EarThwormDef.h" IMPLEMENT_DYNAMIC(CISODimDlg, CDialog) CISODimDlg::CISODimDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_ISODIMDLG, pParent) , m_sDimTxt(_T("")) , m_nView(0) , m_nAngle(FALSE) , m_bDimTxtNotISO(1) , m_sScale(_T("1:100")) , m_dTxtH(2.5) , m_sTxtStyle(_T("Pipe_Dim")) { AecDbObjXDataMap xDataMap; if (KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap)) xDataMap.GetAt(DOC_SCALE, m_sScale); } CISODimDlg::~CISODimDlg() { } void CISODimDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_sDimTxt); DDX_Radio(pDX, IDC_RADIO1, m_nView); DDX_Radio(pDX, IDC_RADIO30, m_nAngle); DDX_Check(pDX, IDC_CHECK3, m_bDimTxtNotISO); DDX_CBString(pDX, IDC_COMBOSCALE, m_sScale); DDX_Text(pDX, IDC_EDIT3, m_dTxtH); DDX_CBString(pDX, IDC_COMBO1, m_sTxtStyle); DDX_Control(pDX, IDC_COMBO1, m_wndTextStyleCombo); } BEGIN_MESSAGE_MAP(CISODimDlg, CDialog) ON_MESSAGE(WM_ACAD_KEEPFOCUS, &CISODimDlg::onAcadKeepFocus) ON_WM_CLOSE() END_MESSAGE_MAP() LONG_PTR CISODimDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR) { POINT pt; ::GetCursorPos(&pt); CRect rect; GetWindowRect(&rect); if (!(rect.PtInRect(pt))) { return FALSE; } return TRUE; } BOOL CISODimDlg::OnInitDialog() { CDialog::OnInitDialog(); AcAxDocLock lock; m_wndTextStyleCombo.init(); int nSel = m_wndTextStyleCombo.FindString(0, m_sTxtStyle); if (nSel != -1) { m_wndTextStyleCombo.SetCurSel(nSel); } UpdateData(FALSE); return TRUE; } void CISODimDlg::SetDimText(CString &sDimTxt) { if (::IsWindow(m_hWnd)) { UpdateData(TRUE); } m_sDimTxt = sDimTxt; if (::IsWindow(m_hWnd)) { UpdateData(FALSE); } } double CISODimDlg::getPScale() { if (::IsWindow(m_hWnd)) { UpdateData(TRUE); } double dPScale(100.); int idx = m_sScale.Find(':'); if (idx != -1) { m_sScale = m_sScale.Right(m_sScale.GetLength() - idx - 1); dPScale = _ttof(m_sScale); } return dPScale; } double CISODimDlg::GetTxtStyleH(AcDbObjectId& idStyle) { if (::IsWindow(m_hWnd)) { UpdateData(TRUE); } if (m_dTxtH < 1.e-3) { AfxMessageBox(_T("文字高度太小!")); idStyle = acdbCurDwg()->textstyle(); return 2.5; } int nSel = m_wndTextStyleCombo.GetCurSel(); if (nSel == -1) { AfxMessageBox(_T("请选择文字样式!")); idStyle = acdbCurDwg()->textstyle(); return 2.5; } idStyle = m_wndTextStyleCombo.getTextStyleID(); return m_dTxtH; } void CISODimDlg::OnClose() { ShowWindow(SW_HIDE); }