262 lines
8.6 KiB
C++
262 lines
8.6 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); //扶梯固入墙横向长
|
|
}
|