#include "stdafx.h" #include "JYXJDlg.h" #include "CoreTools.h" #include "KTCADUtilityEx.h" DLLIMPEXP CString IDCreate(); extern AcGePoint3d MidPoint(const AcGePoint3d& pt1,const AcGePoint3d& pt2); namespace { CString convertCurve2String(ads_name ent, AcGePoint3d &ptCen) { AcDbObjectId id; acdbGetObjectId(id,ent); CString sCurve(_T("")); OPENOBJ_BEGIN(id, AcDb::kForRead, AcDbCurve, pCurve) { if (pCurve) { AcDbPolyline* pPl = AcDbPolyline::cast(pCurve); if (pPl != NULL) { AcDbExtents ext; pPl->getGeomExtents(ext); ptCen = MidPoint(ext.maxPoint(), ext.minPoint()); CoreTools::PolylineToString(pPl, sCurve, true); } AcDbCircle *pCir = AcDbCircle::cast(pCurve); if (pCir) { ptCen = pCir->center(); AcDbPolyline *p = CoreTools::MakePolyline(pCir); if (p) CoreTools::PolylineToString(p, sCurve, true); } } } OPENOBJ_END() return sCurve; } } IMPLEMENT_DYNAMIC(CJYXJDlg, CDialog) CJYXJDlg::CJYXJDlg(CWnd* pParent /*=NULL*/) : CDialog(CJYXJDlg::IDD, pParent) , m_dH(1400) , m_dThick(80) , m_dBomThick(400) , m_sNo(_T("")) , m_bNOSetDefault(FALSE) { m_sPurpose = _T("排水"); m_sTopPl = _T(""); m_sBomPl = _T(""); static int nNo = 1; m_sNo.Format(_T("WELL-X-%d"),nNo); nNo++; if (m_bNOSetDefault) m_sNo = IDCreate(); } CJYXJDlg::~CJYXJDlg(void) { } void CJYXJDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1,m_dH); DDX_Text(pDX, IDC_EDIT2,m_dThick); DDX_Text(pDX, IDC_EDIT12,m_dBomThick); DDX_Text(pDX, IDC_EDIT3,m_sPurpose); DDX_Text(pDX, IDC_EDIT4,m_sTopPl); DDX_Text(pDX, IDC_EDIT5,m_sBomPl); DDX_Text(pDX, IDC_EDIT8, m_sNo); if (pDX->m_bSaveAndValidate) { if (m_sTopPl.IsEmpty() || m_sBomPl.IsEmpty()) { AfxMessageBox(_T("顶部pline线与底部pline线不能为空!")); return pDX->Fail(); } } DDX_Check(pDX, IDC_CHECK6, m_bNOSetDefault); } BEGIN_MESSAGE_MAP(CJYXJDlg, CDialog) ON_BN_CLICKED(IDOK, &CJYXJDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON1, &CJYXJDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CJYXJDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_CHECK6, &CJYXJDlg::OnBnClickedCheck6) END_MESSAGE_MAP() BOOL CJYXJDlg::OnInitDialog() { CDialog::OnInitDialog(); if (m_bNOSetDefault) GetDlgItem(IDC_EDIT8)->EnableWindow(FALSE); UpdateData(FALSE); return TRUE; } void CJYXJDlg::OnBnClickedOk() { if (!UpdateData(TRUE)) return; OnOK(); } void CJYXJDlg::OnBnClickedButton1() { EnableWindow(FALSE); CWnd* pFrame = acedGetAcadFrame(); pFrame->EnableWindow(TRUE); ShowWindow(SW_HIDE); pFrame->SetFocus(); ads_point pt1; ads_name ent; int nRes = acedEntSel(_T("\n选择井口顶部pline线:"),ent,pt1); if (nRes == RTNORM) { m_sTopPl = convertCurve2String(ent, m_ptCen); } pFrame->EnableWindow(FALSE); ShowWindow(SW_SHOW); EnableWindow(TRUE); UpdateData(FALSE); } void CJYXJDlg::OnBnClickedButton2() { EnableWindow(FALSE); CWnd* pFrame = acedGetAcadFrame(); pFrame->EnableWindow(TRUE); ShowWindow(SW_HIDE); pFrame->SetFocus(); ads_point pt1; ads_name ent; int nRes = acedEntSel(_T("\n选择井口底部pline线:"),ent,pt1); if (nRes == RTNORM) { AcGePoint3d pt; m_sBomPl = convertCurve2String(ent, pt); } pFrame->EnableWindow(FALSE); ShowWindow(SW_SHOW); EnableWindow(TRUE); UpdateData(FALSE); } void CJYXJDlg::OnBnClickedCheck6() { if (m_bNOSetDefault) { GetDlgItem(IDC_EDIT8)->EnableWindow(FALSE); } else { GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE); } }