Files
envi-code/SourceCode/Code2026/EarthWormCmd/GTLKDlg.cpp
T
2026-09-28 15:28:50 +08:00

201 lines
6.0 KiB
C++

#include "stdafx.h"
#include "GTLKDlg.h"
#include "AecDbEarthWorm.h"
#include "KTCADUtilityEx.h"
#include "uitools.h"
#include "CCSYDlg.h"
IMPLEMENT_DYNAMIC(CGTLKDlg, CBaseDialog)
CGTLKDlg::CGTLKDlg(CWnd* pParent /*=NULL*/)
: CBaseDialog(CGTLKDlg::IDD, _T("GTLK"), IDC_STATIC_FRM, pParent)
, m_fKou_Len(0)
, m_fKou_W(0)
, m_fKou_Left(0)
, m_fFangZi_Size(0)
, m_fFangZi_W(0)
, m_fFangZi_Len(0)
, m_fFangZi_H(0)
, m_fFangZi_Wall_Thickness(0)
, m_fFangZi_Count(0)
, m_fFangZi_GaiBan_W(0)
, m_fFangZi_GaiBan_Thickness(0)
, m_fX(5050.0f)
, m_nDirPos(0)
, m_dRoomW(0)
{ }
CGTLKDlg::~CGTLKDlg() { }
void CGTLKDlg::DoDataExchange(CDataExchange* pDX)
{
CBaseDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDITH, m_fKou_Len);
DDV_MinMaxFloat(pDX, m_fKou_Len, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH2, m_fKou_W);
DDV_MinMaxFloat(pDX, m_fKou_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH3, m_fKou_Left);
DDV_MinMaxFloat(pDX, m_fKou_Left, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH4, m_fFangZi_Size);
DDV_MinMaxFloat(pDX, m_fFangZi_Size, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH6, m_fFangZi_W);
DDV_MinMaxFloat(pDX, m_fFangZi_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH5, m_fFangZi_Len);
DDV_MinMaxFloat(pDX, m_fFangZi_Len, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH7, m_fFangZi_H);
DDV_MinMaxFloat(pDX, m_fFangZi_H, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH9, m_fFangZi_Wall_Thickness);
DDV_MinMaxFloat(pDX, m_fFangZi_Wall_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH8, m_fFangZi_Count);
DDV_MinMaxFloat(pDX, m_fFangZi_Count, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH10, m_fFangZi_GaiBan_W);
DDV_MinMaxFloat(pDX, m_fFangZi_GaiBan_W, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDITH11, m_fFangZi_GaiBan_Thickness);
DDV_MinMaxFloat(pDX, m_fFangZi_GaiBan_Thickness, 0.1f, 500000.0f);
DDX_Text(pDX, IDC_EDIT33, m_fX);
DDX_Control(pDX, IDC_LIST1, m_wndRoomCheckList);
DDX_Radio(pDX, IDC_RADIO1, m_nDirPos);
DDX_Text(pDX, IDC_EDIT10, m_dRoomW);
}
BEGIN_MESSAGE_MAP(CGTLKDlg, CBaseDialog)
ON_BN_CLICKED(IDOK, &CGTLKDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON2, &CGTLKDlg::OnBnClickedButton2)
END_MESSAGE_MAP()
BOOL CGTLKDlg::OnInitDialog()
{
CBaseDialog::OnInitDialog();
m_fKou_Len = AS_M2MM(m_data.fNodeDef[0]);
m_fKou_W = AS_M2MM(m_data.fNodeDef[1]);
m_fKou_Left = AS_M2MM(m_data.fNodeDef[2]);
m_fFangZi_Size = AS_M2MM(m_data.fNodeDef[10]);
m_fFangZi_W = AS_M2MM(m_data.fNodeDef[11]);
m_fFangZi_Len = AS_M2MM(m_data.fNodeDef[12]);
m_fFangZi_H = AS_M2MM(m_data.fNodeDef[13]);
m_fFangZi_Wall_Thickness = AS_M2MM(m_data.fNodeDef[14]);
m_fFangZi_Count = m_data.fNodeDef[15];
m_fFangZi_GaiBan_W = AS_M2MM(m_data.fNodeDef[16]);
m_fFangZi_GaiBan_Thickness = AS_M2MM(m_data.fNodeDef[17]);
m_fX = AS_M2MM(m_data.fNodeDef[18]);
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 CGTLKDlg::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 CGTLKDlg::SetDefaultFnctNode(EWFnctNode &fncNode)
{
memset(&fncNode, 0, sizeof(EWFnctNode));
fncNode.dDistFromPre = AS_MUNIT(5000.0);//5米位置
fncNode.eFnType = kPipeDoghouse;
_tcscpy(fncNode.szNodeSpec, _T("管类投料口"));
fncNode.nRoomIndex = 0;//舱0
fncNode.fNodeDef[0] = AS_MUNITF(7000.0f);//沿管廊方向开口内长
fncNode.fNodeDef[1] = AS_MUNITF(1200.0f);//管廊断面方向宽
fncNode.fNodeDef[2] = AS_MUNITF(1600.0f);//左室定位尺寸
_tcscpy(fncNode.szNodeDefSpec, _T("管类投料口"));
fncNode.fNodeDef[10] = AS_MUNITF(1350.0f);//房子左室定位尺寸
fncNode.fNodeDef[11] = AS_MUNITF(4500.0f);//房子横向宽
fncNode.fNodeDef[12] = AS_MUNITF(7500.0f);//房子纵向长
fncNode.fNodeDef[13] = AS_MUNITF(3000.0f);//房子高度
fncNode.fNodeDef[14] = AS_MUNITF(250.0f); //墙厚
fncNode.fNodeDef[15] = 14.0f; //钢筋混凝土活动盖板数量
fncNode.fNodeDef[16] = AS_MUNITF(500.0f); //钢筋混凝土活动盖板宽
fncNode.fNodeDef[17] = AS_MUNITF(50.0f); //钢筋混凝土活动盖板厚
fncNode.fNodeDef[18] = AS_MUNITF(4500.0f); //房子伸出部分距离 X:
}
void CGTLKDlg::OnBnClickedOk()
{
UpdateData(TRUE);
m_data.fNodeDef[0] = AS_MUNITF(m_fKou_Len);
m_data.fNodeDef[1] = AS_MUNITF(m_fKou_W);
m_data.fNodeDef[2] = AS_MUNITF(m_fKou_Left);
m_data.fNodeDef[10] = AS_MUNITF(m_fFangZi_Size);
m_data.fNodeDef[11] = AS_MUNITF(m_fFangZi_W);
m_data.fNodeDef[12] = AS_MUNITF(m_fFangZi_Len);
m_data.fNodeDef[13] = AS_MUNITF(m_fFangZi_H);
m_data.fNodeDef[14] = AS_MUNITF(m_fFangZi_Wall_Thickness);
m_data.fNodeDef[15] = m_fFangZi_Count;
m_data.fNodeDef[16] = AS_MUNITF(m_fFangZi_GaiBan_W);
m_data.fNodeDef[17] = AS_MUNITF(m_fFangZi_GaiBan_Thickness);
m_data.fNodeDef[18] = AS_MUNITF(m_fX); //房子伸出部分距离 X X:
//m_fncNode.fNodeDef[18] = AS_MUNITF(5050.0f); //料口侧偏离管廊 X:
//m_fncNode.fNodeDef[19] = AS_MUNITF(3250.0f); //房子伸出部分宽度:
m_data.fNodeDef[30] = 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;
}
}
m_data.nRoomIndex = -1.0f;
if (sRooms.IsEmpty())
{
AfxMessageBox(_T("没有选择要开通风口的舱室!请勾选舱室开通风口"));
return;
}
m_data.fNodeDef[30] = 1.0f * _ttoi(sRooms);//新的方式
if ( _ttoi(sRooms) > 1)//多舱,房子伸出距离无效
{
m_data.fNodeDef[18] = 0.0f;
}
m_data.fNodeDef[31] = 1.0f * m_nDirPos;
CBaseDialog::OnOK();
}
void CGTLKDlg::OnBnClickedButton2()
{
CCCSYDlg dlg;
dlg.SetBmpFileName(_T("GTLK.bmp"));
dlg.DoModal();
}