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

262 lines
8.8 KiB
C++

#include "stdafx.h"
#include "CTSKDlg.h"
#include "AecDbEarthWorm.h"
#include "KTCADUtilityEx.h"
#include "CCSYDlg.h"
#include "UITools.h"
IMPLEMENT_DYNAMIC(CCTSKDlg, CBaseDialog)
CCTSKDlg::CCTSKDlg(CWnd* pParent /*=NULL*/)
: CBaseDialog(CCTSKDlg::IDD, _T("TSCK"), IDC_STATIC_FRM, pParent)
, m_fKaiKou_Len(0)
, m_fKaiKou_W(0)
, m_fKaiKou_Left(0)
, m_fTaoShengShi_Left(0)
, m_fTaoShengShi_W(0)
, m_fTaoShengShi_Len(0)
, m_fTaoShengShi_H(0)
, mm_fFuTi_Dia(0)
, mm_fFuTi_W(0)
, mm_fFuTi_Spacing(0)
, mm_fFuTi_OutLen(0)
, mm_fFuTi_Deep(0)
, mm_fFuTi_Len(0)
, mm_fRoof_Thickness(0)
, mm_fChuKouJing_HengXiang(0)
, mm_fChuKouJing_ZhongXiang(0)
, mm_fChuKouJing_H(0)
, mm_fChuKouJing_LenW(0)
, mm_fChuKouJing_Deep(0)
, m_fTaoShengShi_Thickness(0)
, m_fX(5.05f)
, m_fW1(3.0f)
, m_nDirPos(0)
, m_dRoomW(0)
{ }
CCTSKDlg::~CCTSKDlg() { }
void CCTSKDlg::DoDataExchange(CDataExchange* pDX)
{
CBaseDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_fKaiKou_Len);
DDV_MinMaxFloat(pDX, m_fKaiKou_Len, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT2, m_fKaiKou_W);
DDV_MinMaxFloat(pDX, m_fKaiKou_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT3, m_fKaiKou_Left);
DDV_MinMaxFloat(pDX, m_fKaiKou_Left, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT4, m_fTaoShengShi_Left);
DDV_MinMaxFloat(pDX, m_fTaoShengShi_Left, 0.0001f, 3.0f);
DDX_Text(pDX, IDC_EDIT5, m_fTaoShengShi_W);
DDV_MinMaxFloat(pDX, m_fTaoShengShi_W, 0.1f, 50000.0f);
DDX_Text(pDX, IDC_EDIT6, m_fTaoShengShi_Len);
DDV_MinMaxFloat(pDX, m_fTaoShengShi_Len, 0.1f, 50000.0f);
DDX_Text(pDX, IDC_EDIT7, m_fTaoShengShi_H);
DDV_MinMaxFloat(pDX, m_fTaoShengShi_H, 0.1f, 50000.0f);
DDX_Text(pDX, IDC_EDIT20, mm_fFuTi_Dia);
DDV_MinMaxFloat(pDX, mm_fFuTi_Dia, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT21, mm_fFuTi_W);
DDV_MinMaxFloat(pDX, mm_fFuTi_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT22, mm_fFuTi_Spacing);
DDV_MinMaxFloat(pDX, mm_fFuTi_Spacing, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT23, mm_fFuTi_OutLen);
DDV_MinMaxFloat(pDX, mm_fFuTi_OutLen, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT24, mm_fFuTi_Deep);
DDV_MinMaxFloat(pDX, mm_fFuTi_Deep, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT25, mm_fFuTi_Len);
DDV_MinMaxFloat(pDX, mm_fFuTi_Len, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT8, mm_fRoof_Thickness);
DDV_MinMaxFloat(pDX, mm_fRoof_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT9, mm_fChuKouJing_HengXiang);
DDV_MinMaxFloat(pDX, mm_fChuKouJing_HengXiang, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT28, mm_fChuKouJing_ZhongXiang);
DDV_MinMaxFloat(pDX, mm_fChuKouJing_ZhongXiang, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT29, mm_fChuKouJing_H);
DDV_MinMaxFloat(pDX, mm_fChuKouJing_H, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT30, mm_fChuKouJing_LenW);
DDV_MinMaxFloat(pDX, mm_fChuKouJing_LenW, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT31, mm_fChuKouJing_Deep);
DDV_MinMaxFloat(pDX, mm_fChuKouJing_Deep, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT11, m_fTaoShengShi_Thickness);
DDV_MinMaxFloat(pDX, m_fTaoShengShi_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT12, m_fX);
DDX_Text(pDX, IDC_EDIT37, m_fW1);
DDX_Radio(pDX, IDC_RADIO12, m_nDirPos);
DDX_Control(pDX, IDC_LIST1, m_wndRoomCheckList);
DDX_Text(pDX, IDC_EDIT10, m_dRoomW);
}
BEGIN_MESSAGE_MAP(CCTSKDlg, CBaseDialog)
ON_BN_CLICKED(IDOK, &CCTSKDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, &CCTSKDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
BOOL CCTSKDlg::OnInitDialog()
{
CBaseDialog::OnInitDialog();
m_fKaiKou_Len = m_data.fNodeDef[0];
m_fKaiKou_W = m_data.fNodeDef[1];
m_fKaiKou_Left = m_data.fNodeDef[2];
m_fTaoShengShi_Left = m_data.fNodeDef[10];
m_fTaoShengShi_W = m_data.fNodeDef[11];
m_fTaoShengShi_Len = m_data.fNodeDef[12];
m_fTaoShengShi_H = m_data.fNodeDef[13];
m_fTaoShengShi_Thickness = m_data.fNodeDef[14];
mm_fRoof_Thickness = AS_M2MM(m_data.fNodeDef[15]);
mm_fChuKouJing_H = AS_M2MM(m_data.fNodeDef[17]);
mm_fChuKouJing_LenW = AS_M2MM(m_data.fNodeDef[18]);
mm_fChuKouJing_Deep = AS_M2MM(m_data.fNodeDef[19]);
mm_fChuKouJing_HengXiang = AS_M2MM(m_data.fNodeDef[20]);
mm_fChuKouJing_ZhongXiang = AS_M2MM(m_data.fNodeDef[21]);
m_fX = m_data.fNodeDef[22];
m_fW1 = m_data.fNodeDef[23];
mm_fFuTi_Dia = AS_M2MM(m_data.fNodeDef[31]);
mm_fFuTi_W = AS_M2MM(m_data.fNodeDef[32]);
mm_fFuTi_Spacing = AS_M2MM(m_data.fNodeDef[33]);
mm_fFuTi_OutLen = AS_M2MM(m_data.fNodeDef[34]);
mm_fFuTi_Deep = AS_M2MM(m_data.fNodeDef[35]);
mm_fFuTi_Len = AS_M2MM(m_data.fNodeDef[36]);
m_ImageList.Create(IDB_BITMAP4,16,1,RGB(0, 255, 255));
m_wndRoomCheckList.SetImageList(&m_ImageList,LVSIL_SMALL);
m_wndRoomCheckList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
for (int i = 0;i < m_roomTypes.size();i++)
{
m_wndRoomCheckList.InsertColumn(i,m_roomTypes.at(i),LVCFMT_LEFT,80,80);
m_wndRoomCheckList.SetColumnItemData(i,NULL,ET_Check);
}
m_wndRoomCheckList.InsertItem(0,_T(""));
for (int i = 0;i < m_roomTypes.size();i++)
{
m_wndRoomCheckList.SetItemText(0,i,_T("√"),TRUE);
}
UpdateData(FALSE);
return TRUE;
}
void CCTSKDlg::OnViewLButtonDownMsg()
{
UpdateData();
if (m_idxRoom != -1 && m_pRectCell != NULL)
{
AcGePoint2d pt1,pt2;
m_pRectCell->getPointAt(0,pt1);
m_pRectCell->getPointAt(1,pt2);
m_dRoomW = pt2.distanceTo(pt1);
UpdateData(FALSE);
}
}
void CCTSKDlg::OnBnClickedOk()
{
UpdateData(true);
m_data.fNodeDef[0] = m_fKaiKou_Len;
m_data.fNodeDef[1] = m_fKaiKou_W ;
m_data.fNodeDef[2] = m_fKaiKou_Left;
m_data.fNodeDef[10] = m_fTaoShengShi_Left;
m_data.fNodeDef[11] = m_fTaoShengShi_W;
m_data.fNodeDef[12] = m_fTaoShengShi_Len;
m_data.fNodeDef[13] = m_fTaoShengShi_H;
m_data.fNodeDef[14] = m_fTaoShengShi_Thickness;
m_data.fNodeDef[15] = AS_MUNITF(mm_fRoof_Thickness);
m_data.fNodeDef[17] = AS_MUNITF(mm_fChuKouJing_H);
m_data.fNodeDef[18] = AS_MUNITF(mm_fChuKouJing_LenW);
m_data.fNodeDef[19] = AS_MUNITF(mm_fChuKouJing_Deep);
m_data.fNodeDef[20] = AS_MUNITF(mm_fChuKouJing_HengXiang);
m_data.fNodeDef[21] = AS_MUNITF(mm_fChuKouJing_ZhongXiang);
m_data.fNodeDef[22] = m_fX;
m_data.fNodeDef[23] = m_fW1;
m_data.fNodeDef[31] = AS_MUNITF(mm_fFuTi_Dia);
m_data.fNodeDef[32] = AS_MUNITF(mm_fFuTi_W);
m_data.fNodeDef[33] = AS_MUNITF(mm_fFuTi_Spacing);
m_data.fNodeDef[34] = AS_MUNITF(mm_fFuTi_OutLen);
m_data.fNodeDef[35] = AS_MUNITF(mm_fFuTi_Deep);
m_data.fNodeDef[36] = AS_MUNITF(mm_fFuTi_Len);
m_data.fNodeDef[16] = 1.0f * GetIdxOfRoom();//n室.
int nPos = 0;
CString sRooms = _T(""),sTemp = _T("");
for (int i = 0;i < m_wndRoomCheckList.GetHeaderCtrl()->GetItemCount();i++)
{
BOOL bCheck = m_wndRoomCheckList.GetCheck(0,i);
if (bCheck)
{
nPos = i + 1;
sTemp.Format(_T("%d"),nPos);
sRooms += sTemp;
}
}
if (sRooms.IsEmpty())
{
AfxMessageBox(_T("没有选择要开通风口的舱室!请勾选舱室开通风口"));
return;
}
m_data.fNodeDef[16] = 1.0f * _ttof(sRooms);//新的方式
m_data.fNodeDef[9] = 1.0f * m_nDirPos;
CBaseDialog::OnOK();
}
void CCTSKDlg::OnBnClickedButton1()
{
CCCSYDlg dlg;
dlg.SetBmpFileName(_T("tsk.bmp"));
dlg.DoModal();
}
void CCTSKDlg::SetDefaultFnctNode(EWFnctNode &fncNode)
{
memset(&fncNode, 0, sizeof(EWFnctNode));
fncNode.dDistFromPre = AS_MUNIT(5000.0);//5米位置
fncNode.eFnType = kEscapeHatch;
fncNode.nRoomIndex = 0;//舱0
_tcscpy(fncNode.szNodeSpec, _T("逃生口"));
_tcscpy(fncNode.szNodeDefSpec, _T("逃生口"));
fncNode.fNodeDef[0] = AS_MUNITF(1000.0f);//沿管廊方向内长
fncNode.fNodeDef[1] = AS_MUNITF(1000.0f);//管廊断面方向宽
fncNode.fNodeDef[2] = AS_MUNITF(1850.0f);//左室定位尺寸
fncNode.fNodeDef[9] = 0.0f;//开口方向, 0 上侧 1 下侧
fncNode.fNodeDef[10] = AS_MUNITF(1300.0f);//房子左室定位尺寸
fncNode.fNodeDef[11] = AS_MUNITF(4000.0f);//房子横向宽
fncNode.fNodeDef[12] = AS_MUNITF(6000.0f);//房子纵向长
fncNode.fNodeDef[13] = AS_MUNITF(2450.0f);//房子高度
fncNode.fNodeDef[14] = AS_MUNITF(250.0f); //墙厚
fncNode.fNodeDef[15] = AS_MUNITF(200.0f); //屋顶楼板厚度
fncNode.fNodeDef[16] = 0.0f;//出口左侧. 改为->新的方式 如 23.0f 为第2,3 舱室加
fncNode.fNodeDef[17] = AS_MUNITF(1500.0f);//出口高度
fncNode.fNodeDef[18] = AS_MUNITF(1200.0f);//出口盖板,长&宽
fncNode.fNodeDef[19] = AS_MUNITF(100.0f); //出口盖板槽深&宽
fncNode.fNodeDef[20] = AS_MUNITF(1450.0f); //出口位置X 横向
fncNode.fNodeDef[21] = AS_MUNITF(1450.0f); //出口位置Y 纵向
fncNode.fNodeDef[22] = AS_MUNITF(4500.f); //房子伸出部分距离 X:
fncNode.fNodeDef[23] = AS_MUNITF(3000.f); //房子伸出部分宽度 w:
fncNode.fNodeDef[30] = 0.0f; //0 扶梯 1直梯
fncNode.fNodeDef[31] = AS_MUNITF(20.0f); //扶梯钢管直径
fncNode.fNodeDef[32] = AS_MUNITF(500.0f); //扶梯宽度
fncNode.fNodeDef[33] = AS_MUNITF(300.0f); //扶梯间距
fncNode.fNodeDef[34] = AS_MUNITF(180.0f); //扶梯踏脚伸出长度
fncNode.fNodeDef[35] = AS_MUNITF(120.0f); //扶梯固入墙纵向深
fncNode.fNodeDef[36] = AS_MUNITF(250.0f); //扶梯固入墙横向长
}