183 lines
3.7 KiB
C++
183 lines
3.7 KiB
C++
#include "stdafx.h"
|
|
#include "TJLZDlg.h"
|
|
#include "KTCADUtilityEx.h"
|
|
#include "AcDbX3dSolid.h"
|
|
#include "AecDbX3dPart.h"
|
|
#include "UITools.h"
|
|
#include "BimInfoDlg.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CTJLZDlg, CDialog)
|
|
|
|
CTJLZDlg::CTJLZDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CTJLZDlg::IDD, pParent)
|
|
, m_nKind(0)
|
|
, m_dW(0.6)
|
|
, m_dL(0.6)
|
|
, m_dH(3.0)
|
|
, m_bCheckCS(FALSE)
|
|
{
|
|
UIDataCache::Read(_T("%i%d%d%d"), _T("CTJLZDlg")
|
|
, &m_nKind
|
|
, &m_dW , &m_dL , &m_dH);
|
|
}
|
|
|
|
CTJLZDlg::~CTJLZDlg()
|
|
{
|
|
}
|
|
|
|
void CTJLZDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nKind);
|
|
DDX_Text(pDX, IDC_EDIT1, m_dW);
|
|
DDX_Text(pDX, IDC_EDIT3, m_dL);
|
|
DDX_Text(pDX, IDC_EDIT4, m_dH);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bCheckCS);
|
|
DDX_Control(pDX, IDC_STATIC_W, m_wndStW);
|
|
DDX_Control(pDX, IDC_EDIT3, m_wndEditL);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CTJLZDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CTJLZDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_CHECK1, &CTJLZDlg::OnBnClickedCheck1)
|
|
ON_BN_CLICKED(IDC_RADIO1, &CTJLZDlg::OnBnClickedRadio1)
|
|
ON_BN_CLICKED(IDC_RADIO2, &CTJLZDlg::OnBnClickedRadio2)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CTJLZDlg::OnBnClickedButton1)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CTJLZDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
if (m_nKind == 0)
|
|
{
|
|
CBimInfoDlg::SetDefaultBimInfo(&m_mapBimData,_T("柱子"));
|
|
}
|
|
else
|
|
{
|
|
CBimInfoDlg::SetDefaultBimInfo(&m_mapBimData,_T("梁"));
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CTJLZDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData(TRUE);
|
|
UIDataCache::Write(_T("%i%d%d%d"), _T("CTJLZDlg")
|
|
, &m_nKind
|
|
, &m_dW , &m_dL , &m_dH);
|
|
OnOK();
|
|
}
|
|
|
|
int CTJLZDlg::GetX3dPart(AecDbX3dPart*& pPart)
|
|
{
|
|
if (pPart != NULL)
|
|
{
|
|
pPart->RemoveAll3dSolidRec();
|
|
}
|
|
else
|
|
{
|
|
pPart = new AecDbX3dPart;
|
|
}
|
|
|
|
AcGePoint3d ptOrg;
|
|
ptOrg.set(0,0,0.0);
|
|
AcGeVector3d vtZ = AcGeVector3d::kZAxis;
|
|
|
|
AcDbX3dSolid* pXSolid = NULL;
|
|
if (m_nKind == 0)//柱子
|
|
{
|
|
if (m_bCheckCS)
|
|
{
|
|
ptOrg.z += 0.5 * m_dH;
|
|
pXSolid = new AcDbX3dSolid;
|
|
pXSolid->Create(AcDbX3dSolid::kCylinder,ptOrg,vtZ,2,m_dW,m_dH);
|
|
pPart->AddX3dSolid(pXSolid,AcDb::kBoolUnite);
|
|
}
|
|
else
|
|
{
|
|
//BOX LxWxH
|
|
ptOrg.z += 0.5 * m_dH;
|
|
pXSolid = new AcDbX3dSolid;
|
|
pXSolid->Create(AcDbX3dSolid::kBox,ptOrg,vtZ,3,m_dL,m_dW,m_dH);
|
|
pPart->AddX3dSolid(pXSolid,AcDb::kBoolUnite);
|
|
}
|
|
}
|
|
else//梁
|
|
{
|
|
vtZ = AcGeVector3d::kYAxis;
|
|
ptOrg.z += 0.5 * m_dH;
|
|
|
|
pXSolid = new AcDbX3dSolid;
|
|
pXSolid->Create(AcDbX3dSolid::kBox,ptOrg,vtZ,3,m_dL,m_dW,m_dH);
|
|
pPart->AddX3dSolid(pXSolid,AcDb::kBoolUnite);
|
|
}
|
|
|
|
pPart->SetOrgPoint( ptOrg );
|
|
pPart->SetAxis(X,AcGeVector3d::kXAxis);
|
|
pPart->SetAxis(Y,AcGeVector3d::kYAxis);
|
|
pPart->SetAxis(Z,AcGeVector3d::kZAxis);
|
|
|
|
//序列化BIM数据
|
|
pPart->GetSpecialtyData()->SetAt(_T("m_dH"),m_dH);
|
|
pPart->GetSpecialtyData()->SetAt(_T("m_dW"),m_dW);
|
|
pPart->GetSpecialtyData()->SetAt(_T("m_dL"),m_dL);
|
|
pPart->GetSpecialtyData()->SetAt(_T("m_nKind"),m_nKind);
|
|
pPart->GetSpecialtyData()->SetAt(_T("m_bCheckCS"),m_bCheckCS);
|
|
pPart->GetSpecialtyData()->SetAt(_T("BIMDATA"),1,m_mapBimData);
|
|
return TRUE;
|
|
}
|
|
|
|
void CTJLZDlg::OnBnClickedCheck1()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_nKind == 0)
|
|
{
|
|
if (m_bCheckCS)//圆柱
|
|
{
|
|
m_wndStW.SetWindowText(_T("横截面半径 R:"));
|
|
m_wndEditL.EnableWindow(FALSE);
|
|
}
|
|
else
|
|
{
|
|
m_wndStW.SetWindowText(_T("横截面宽 W:"));
|
|
m_wndEditL.EnableWindow(TRUE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_wndStW.SetWindowText(_T("横截面宽 W:"));
|
|
m_wndEditL.EnableWindow(TRUE);
|
|
}
|
|
}
|
|
|
|
void CTJLZDlg::OnBnClickedRadio1()
|
|
{
|
|
UpdateData();
|
|
OnBnClickedCheck1();
|
|
}
|
|
|
|
void CTJLZDlg::OnBnClickedRadio2()
|
|
{
|
|
UpdateData();
|
|
OnBnClickedCheck1();
|
|
}
|
|
|
|
void CTJLZDlg::OnBnClickedButton1()
|
|
{
|
|
UpdateData();
|
|
if (m_nKind == 0)
|
|
{
|
|
CBimInfoDlg::ShowBimInfo(&m_mapBimData,_T("柱子"));
|
|
}
|
|
else
|
|
{
|
|
CBimInfoDlg::ShowBimInfo(&m_mapBimData,_T("梁"));
|
|
}
|
|
}
|