#include "stdafx.h" #include "TJDHDlg.h" #include "AcDbX3dSolid.h" #include "AecDbX3dGroup.h" #include "AecDbX3dPart.h" #include "UITools.h" #include "BimInfoDlg.h" IMPLEMENT_DYNAMIC(CTJDHDlg, CDialog) CTJDHDlg::CTJDHDlg(CWnd* pParent /*=NULL*/) : CDialog(CTJDHDlg::IDD, pParent) , m_dr(20.0) , m_dR(180.0) , m_dL(150.0) , m_dX(1.0) , m_sSpec(_T("吊环")) , m_bRemove(false) , m_nNo(1) , m_id3DEqu(-1) { static int nNo = 1; m_nNo = nNo; nNo++; UIDataCache::Read(_T("%d%d%d%d%s%i") , _T("CTJDHDlg") , &m_dr , &m_dR , &m_dL , &m_dX , &m_sSpec , &m_id3DEqu); } CTJDHDlg::~CTJDHDlg() { } void CTJDHDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_dr); DDX_Text(pDX, IDC_EDIT3, m_dR); DDX_Text(pDX, IDC_EDIT4, m_dL); DDX_Text(pDX, IDC_EDIT42, m_dX); DDX_Text(pDX, IDC_EDIT35, m_sSpec); DDX_Text(pDX, IDC_EDIT45, m_nNo); DDV_MinMaxInt(pDX, m_nNo, 1, 99); } BEGIN_MESSAGE_MAP(CTJDHDlg, CDialog) ON_BN_CLICKED(IDOK, &CTJDHDlg::OnBnClickedOk) ON_BN_CLICKED(IDOK2, &CTJDHDlg::OnBnClickedOk2) ON_BN_CLICKED(IDC_BUTTON1, &CTJDHDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON_SEL, &CTJDHDlg::OnBnClickedButtonSel) END_MESSAGE_MAP() BOOL CTJDHDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); #ifndef NDEBUG EquTools::subClassGsViewAndShow(&m_wndGs, this, IDC_STATIC_3D, m_id3DEqu); #else CWnd *pWnd = GetDlgItem(IDC_STATIC_GRP); if (pWnd) pWnd->ShowWindow(SW_HIDE); pWnd = GetDlgItem(IDC_BUTTON_SEL); if (pWnd) pWnd->ShowWindow(SW_HIDE); pWnd = GetDlgItem(IDC_STATIC_3D); if (pWnd) pWnd->ShowWindow(SW_HIDE); #endif // DEBUG CBimInfoDlg::SetDefaultBimInfo(&m_mapBimData,_T("吊环")); return TRUE; } void CTJDHDlg::OnBnClickedOk() { UpdateData(); if (m_dr < 1.0 || m_dR < m_dr ) { AfxMessageBox(_T("吊环尺寸不正确!请重新输入!")); return; } UIDataCache::Write(_T("%d%d%d%d%s%i") , _T("CTJDHDlg") , &m_dr , &m_dR , &m_dL , &m_dX , &m_sSpec , &m_id3DEqu); OnOK(); } void CTJDHDlg::OnBnClickedOk2() { m_bRemove = true; OnBnClickedOk(); } int CTJDHDlg::GetScript(CString& sScript,int nRoomIndex,CString& sOffset) { CString sMaterial = _T("普通碳钢防锈处理"); //RINGS:房间|半径|大径|长度|位置|材料|用途|偏移|编号|3d索引 sScript.Format(_T("") , nRoomIndex , m_dr , m_dR , m_dL , m_dX , sMaterial , m_sSpec , sOffset , m_nNo , m_id3DEqu); return 0; } void CTJDHDlg::OnBnClickedButtonSel() { EquTools::selectEquAndShow(&m_wndGs, m_id3DEqu); } int CTJDHDlg::GetX3dPart(AecDbX3dPart*& pGroup) { if (pGroup != NULL) { pGroup->RemoveAll3dSolidRec(); } else { pGroup = new AecDbX3dPart; } double dR = AS_MUNIT(m_dR); double dr = AS_MUNIT(m_dr); double dL = AS_MUNIT(m_dL); AcGePoint3d ptOrg(m_dX,0,0); AcGeVector3d vtZ = AcGeVector3d::kYAxis; AcDbX3dSolid* pXSolid = new AcDbX3dSolid; pXSolid->Create(AcDbX3dSolid::kTorus,ptOrg,vtZ,2,dR + dr,dr); pGroup->AddX3dSolid(pXSolid,AcDb::kBoolUnite); ptOrg.z += (dr + dR); ptOrg.z += 0.5 * dL; vtZ = AcGeVector3d::kZAxis; //RxH pXSolid = new AcDbX3dSolid; pXSolid->Create(AcDbX3dSolid::kCylinder,ptOrg,vtZ,2,dr,dL); pGroup->AddX3dSolid(pXSolid,AcDb::kBoolUnite); pGroup->SetOrgPoint( ptOrg ); pGroup->SetAxis(X,AcGeVector3d::kXAxis); pGroup->SetAxis(Y,AcGeVector3d::kYAxis); pGroup->SetAxis(Z,AcGeVector3d::kZAxis); //序列化BIM数据 pGroup->GetSpecialtyData()->SetAt(_T("m_dR"),dR); pGroup->GetSpecialtyData()->SetAt(_T("m_dr"),dr); pGroup->GetSpecialtyData()->SetAt(_T("m_dL"),dL); pGroup->GetSpecialtyData()->SetAt(_T("m_sSpec"),m_sSpec); pGroup->GetSpecialtyData()->SetAt(_T("BIMDATA"),1,m_mapBimData); return TRUE; } void CTJDHDlg::OnBnClickedButton1() { CBimInfoDlg::ShowBimInfo(&m_mapBimData,_T("吊环")); }