#include "stdafx.h" #include "StdArx.h" #include "FZDJDlg.h" #include "KTCadUtility.h" IMPLEMENT_DYNAMIC(CFZDJDlg, CDialog) CFZDJDlg::CFZDJDlg(CWnd* pParent /*=NULL*/) : CDialog(CFZDJDlg::IDD, pParent) , m_nN(3) , m_dV(600.0) , m_dTopEl(0) , m_dL(1000) , m_dW(60.0) , m_dt(3.0) , m_nHs(2) , m_bOneHs(FALSE) , m_bCirHs(FALSE) , m_dD(8.0) , m_sMaterial(_T("普通碳钢")) , m_sPurpose(_T("")) , m_dX(1000) { GET_CACHE(CFZDJDlg , %f%f%f%f%f%f%f%s%s%d%d%d%d , &m_dV , &m_dTopEl , &m_dL , &m_dW , &m_dt , &m_dD , &m_dX , &m_sMaterial , &m_sPurpose , &m_nN , &m_nHs , &m_bOneHs , &m_bCirHs); } CFZDJDlg::~CFZDJDlg() { } void CFZDJDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dV); DDX_Text(pDX, IDC_EDIT2, m_dTopEl); DDX_Text(pDX, IDC_EDIT38, m_dL); DDX_Text(pDX, IDC_EDIT10, m_dW); DDX_Text(pDX, IDC_EDIT36, m_dt); DDX_Text(pDX, IDC_EDIT11, m_dD); DDX_Text(pDX, IDC_EDIT13, m_dX); DDX_Text(pDX, IDC_EDIT34, m_sMaterial); DDX_Text(pDX, IDC_EDIT35, m_sPurpose); DDX_Text(pDX, IDC_EDIT3, m_nN); DDX_Text(pDX, IDC_EDIT12, m_nHs); DDX_Check(pDX, IDC_CHECK1, m_bOneHs); DDX_Check(pDX, IDC_CHECK2, m_bCirHs); } BEGIN_MESSAGE_MAP(CFZDJDlg, CDialog) ON_BN_CLICKED(IDOK, &CFZDJDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_CHECK1, &CFZDJDlg::OnBnClickedCheck1) ON_BN_CLICKED(IDC_CHECK2, &CFZDJDlg::OnBnClickedCheck2) ON_BN_CLICKED(IDC_BUTTON1, &CFZDJDlg::OnBnClickedButton1) END_MESSAGE_MAP() BOOL CFZDJDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); return TRUE; } void CFZDJDlg::OnBnClickedOk() { UpdateData(TRUE); if (m_nN < 1 && !m_bOneHs) { AfxMessageBox(_T("非单杆情况水平支杆行数必须大于1")); return; } if ( !m_bOneHs ) { if (m_dV < 10.0 || m_dL < 10.0 || m_dW < 1.0 || m_dt < 1.0 || m_nHs < 1) { AfxMessageBox(_T("非单杆情况,吊架参数不正确!")); return; } } else { if (m_dD < 1.e-1) { AfxMessageBox(_T("单杆吊架参数不正确!")); return; } } SET_CACHE(CFZDJDlg , %f%f%f%f%f%f%f%s%s%d%d%d%d , m_dV , m_dTopEl , m_dL , m_dW , m_dt , m_dD , m_dX , m_sMaterial , m_sPurpose , m_nN , m_nHs , m_bOneHs , m_bCirHs); OnOK(); } void CFZDJDlg::OnBnClickedCheck1() { UpdateData(); if (m_bOneHs) { m_nN = 1; } UpdateData(FALSE); } void CFZDJDlg::OnBnClickedCheck2() { UpdateData(); } void CFZDJDlg::GetHolder(XHanger& holder) const { /* // 吊杆数 1,2,3... int nHs; // 行数 int N; // 吊杆直径 double dD; // 是否角钢吊杆 BOOL bdDAsW; // 行间距(m) double V; // 支架臂长度(mm) double L; // 角钢宽度(mm) double W; // 角钢厚度(mm) double t; // 材质 TCHAR szMat[33]; // 用途 TCHAR szUsage[33]; //预留 double dResv[6]; int nResv[6]; TCHAR szResv[MAX_PATH]; */ holder.nHs = m_nHs; holder.N = m_nN; holder.dD = m_dD; holder.bdDAsW = m_bCirHs ? FALSE : TRUE; holder.V = m_dV; holder.L = m_dL; holder.W = m_dW; holder.t = m_dt; _tcscpy(holder.szMat,m_sMaterial); _tcscpy(holder.szUsage,m_sPurpose); } void CFZDJDlg::SetFromID(AcDbObjectId& id) { AcDbEntity* pEnt = NULL; if (Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead)) { AecDbHanger* pHanger = AecDbHanger::cast(pEnt); if (pHanger != NULL) { XHanger holder; pHanger->GetHanger(holder); m_nHs = holder.nHs = m_nHs; m_nN = holder.N = m_nN; m_dD = holder.dD = m_dD; m_bCirHs = holder.bdDAsW ? FALSE : TRUE; m_dV = holder.V; m_dL = holder.L; m_dW = holder.W; m_dt = holder.t; m_sMaterial = holder.szMat; m_sPurpose = holder.szUsage; } pEnt->close(); } } void CFZDJDlg::OnBnClickedButton1() { UpdateData(TRUE); acedGetAcadFrame()->EnableWindow(TRUE); ShowWindow(SW_HIDE); acedGetAcadFrame()->SetFocus(); ads_name ent; struct resbuf* pRb = acutBuildList(RTDXF0, _T("AEC_DBSLAB"), 0); int nRes = CKTCadUtility::SelectEntity(_T("\n请选择板计算板底标高:"), ent, pRb); acutRelRb(pRb); if (nRes == RTNORM) { AcDbObjectId id; acdbGetObjectId(id,ent); AcDbEntity* pEnt = NULL; if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead)) { AecDbXSlab* pSlab = AecDbXSlab::cast(pEnt); if (pSlab != NULL) { m_dTopEl = pSlab->GetElBom(); } pEnt->close(); } } ShowWindow(SW_SHOW); SetFocus(); acedGetAcadFrame()->EnableWindow(FALSE); EnableWindow(TRUE); UpdateData(FALSE); }