#include "stdafx.h" #include "KGDGDlg.h" #include "AcDbX3dSolid.h" #include "AecDbX3dGroup.h" extern CString IDCreate(); IMPLEMENT_DYNAMIC(CKGDGDlg, CDialog) CKGDGDlg::CKGDGDlg(CWnd* pParent /*=NULL*/) : CDialog(CKGDGDlg::IDD, pParent) , m_sName(_T("RM6中压开关柜")) , m_dL(900) , m_dW(700) , m_dT(30) , m_sModel(_T("RM6中压开关柜")) , m_sProvider(_T("施耐德电气")) { } CKGDGDlg::~CKGDGDlg() { } void CKGDGDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT6, m_sName); DDX_Text(pDX, IDC_EDIT1, m_dL); DDX_Text(pDX, IDC_EDIT2, m_dW); DDX_Text(pDX, IDC_EDIT3, m_dT); DDX_Text(pDX, IDC_EDIT4, m_sModel); DDX_Text(pDX, IDC_EDIT5, m_sProvider); } BEGIN_MESSAGE_MAP(CKGDGDlg, CDialog) ON_BN_CLICKED(IDOK, &CKGDGDlg::OnBnClickedOk) END_MESSAGE_MAP() BOOL CKGDGDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); return TRUE; } void CKGDGDlg::OnBnClickedOk() { UpdateData(); if (m_dL < 10 || m_dW < 10 || m_dT < 10) { AfxMessageBox(_T("配电柜尺寸太小!请输入配电柜尺寸!")); return; } OnOK(); } int CKGDGDlg::GetX3dSolidRecs( AecDbX3dGroup*& pGroup) { if (pGroup != NULL) { pGroup->RemoveAll3dSolidRec(); } else { pGroup = new AecDbX3dGroup; } AcDbX3dSolid* pXSolid = NULL; AcGePoint3d ptOrg; ptOrg.set(0,0,0); AcGeVector3d vtZ = AcGeVector3d::kZAxis; X3dSolidRec rec; pXSolid = new AcDbX3dSolid; pXSolid->Create(AcDbX3dSolid::kBox,ptOrg,vtZ,3,AS_MUNIT(m_dW),AS_MUNIT(m_dT),AS_MUNIT(m_dL)); rec.pXSolid = pXSolid; rec.bType = AcDb::kBoolUnite; _tcscpy(rec.szLockId,IDCreate()); pGroup->AddX3dSolidRec(rec); pGroup->SetOrgPoint( ptOrg ); pGroup->SetAxis(X,AcGeVector3d::kXAxis); pGroup->SetAxis(Y,AcGeVector3d::kYAxis); pGroup->SetAxis(Z,AcGeVector3d::kZAxis); //序列化BIM数据 pGroup->GetSpecialtyData()->SetAt(_T("m_dW"),m_dW); pGroup->GetSpecialtyData()->SetAt(_T("m_dL"),m_dL); pGroup->GetSpecialtyData()->SetAt(_T("m_dT"),m_dT); pGroup->GetSpecialtyData()->SetAt(_T("m_sName"),m_sName); pGroup->GetSpecialtyData()->SetAt(_T("m_sProvider"),m_sProvider); pGroup->GetSpecialtyData()->SetAt(_T("m_sModel"),m_sModel); return TRUE; }