Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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("吊环"));
}