181 lines
3.8 KiB
C++
181 lines
3.8 KiB
C++
#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("<RINGS:%d|%.3f|%.3f|%.3f|%.3f|%s|%s|%s|%d|%d>")
|
|
, 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("吊环"));
|
|
}
|