481 lines
12 KiB
C++
481 lines
12 KiB
C++
#include "stdafx.h"
|
|
#include "SFSPDlg.h"
|
|
#include "CoreTools.h"
|
|
#include "uihistory.h"
|
|
#include "AecDbDoubleMulStair.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CSFSPLTDlg, CDialog)
|
|
|
|
CSFSPLTDlg::CSFSPLTDlg(CWnd *pParent /*=NULL*/)
|
|
: CDialog(CSFSPLTDlg::IDD, pParent)
|
|
, m_sH(_T("4500"))
|
|
, m_nSteepS(30)
|
|
, m_dSteepH(150)
|
|
, m_dSteepW(270)
|
|
, m_nSSteeps(5)
|
|
, m_nSteepsS(10)
|
|
, m_nSteepMs(10)
|
|
, m_nSteep2s(10)
|
|
, m_dStairMW(2400)
|
|
, m_dStairSW(1200)
|
|
, m_dStair2W(1200)
|
|
, m_bLBeam(FALSE)
|
|
, m_bRBeam(FALSE)
|
|
, m_nUpSide(FALSE)
|
|
, m_bDimUpstair(FALSE)
|
|
, m_dRestPtW(1400)
|
|
, m_dRestPtL(1200)
|
|
, m_dRestPtML(1200)
|
|
, m_dRestPtMW(2700)
|
|
, m_dSbThick(100)
|
|
, m_dStiffnW(100)
|
|
, m_dStiffnH(100)
|
|
, m_nFloorShow(0)
|
|
, m_dBarH(900)
|
|
, m_dBarSw(60)
|
|
, m_dBarSh(60)
|
|
, m_dBarSide(10)
|
|
, m_sGarMat(_T("柚木"))
|
|
, m_dZGarExt(200)
|
|
, m_dGarExt(600)
|
|
, m_dRailSw(30)
|
|
, m_dRailSh(30)
|
|
, m_nRailCirSec(FALSE)
|
|
, m_sBarMat(_T("不锈钢管"))
|
|
, m_bOutSideHRail(TRUE)
|
|
, m_bOutSideRail(TRUE)
|
|
, m_bInsideRail(TRUE)
|
|
, m_dBomEl(0)
|
|
{
|
|
GET_CACHE(CSFSPLTDlg
|
|
, %s %d %f %f %d %d %d %d %f %f %f %d %d %d %f
|
|
%f %f %f %f %f %f %f %d %f %f %f %f %s %f %f
|
|
%f %f %d %s %d %d %d %f
|
|
, &m_sH
|
|
, &m_nSteepS
|
|
, &m_dSteepH
|
|
, &m_dSteepW
|
|
, &m_nSSteeps
|
|
, &m_nSteepsS
|
|
, &m_nSteepMs
|
|
, &m_nSteep2s
|
|
, &m_dStairMW
|
|
, &m_dStairSW
|
|
, &m_dStair2W
|
|
, &m_bLBeam
|
|
, &m_bRBeam
|
|
, &m_nUpSide
|
|
, &m_bDimUpstair
|
|
, &m_dRestPtW
|
|
, &m_dRestPtL
|
|
, &m_dRestPtML
|
|
, &m_dRestPtMW
|
|
, &m_dSbThick
|
|
, &m_dStiffnW
|
|
, &m_dStiffnH
|
|
, &m_nFloorShow
|
|
, &m_dBarH
|
|
, &m_dBarSw
|
|
, &m_dBarSh
|
|
, &m_dBarSide
|
|
, &m_sGarMat
|
|
, &m_dZGarExt
|
|
, &m_dGarExt
|
|
, &m_dRailSw
|
|
, &m_dRailSh
|
|
, &m_nRailCirSec
|
|
, &m_sBarMat
|
|
, &m_bOutSideHRail
|
|
, &m_bOutSideRail
|
|
, &m_bInsideRail
|
|
, &m_dBomEl);
|
|
}
|
|
|
|
CSFSPLTDlg::~CSFSPLTDlg()
|
|
{
|
|
}
|
|
|
|
void CSFSPLTDlg::DoDataExchange(CDataExchange *pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_EDIT1, m_sH);
|
|
DDX_Text(pDX, IDC_EDIT2, m_nSteepS);
|
|
DDX_Text(pDX, IDC_EDIT6, m_dSteepH);
|
|
DDX_Text(pDX, IDC_EDIT10, m_dSteepW);
|
|
DDX_Text(pDX, IDC_EDIT24, m_nSSteeps);
|
|
DDX_Text(pDX, IDC_EDIT3, m_nSteepsS);
|
|
DDX_Text(pDX, IDC_EDIT26, m_nSteepMs);
|
|
DDX_Text(pDX, IDC_EDIT27, m_nSteep2s);
|
|
DDX_Text(pDX, IDC_EDIT16, m_dStair2W);
|
|
DDX_Text(pDX, IDC_EDIT15, m_dStairMW);
|
|
DDX_Text(pDX, IDC_EDIT11, m_dStairSW);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bLBeam);
|
|
DDX_Check(pDX, IDC_CHECK2, m_bRBeam);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nUpSide);
|
|
DDX_Check(pDX, IDC_CHECK8, m_bDimUpstair);
|
|
DDX_Text(pDX, IDC_EDIT4, m_dRestPtW);
|
|
DDX_Text(pDX, IDC_EDIT5, m_dRestPtL);
|
|
DDX_Text(pDX, IDC_EDIT22, m_dRestPtML);
|
|
DDX_Text(pDX, IDC_EDIT20, m_dRestPtMW);
|
|
DDX_Text(pDX, IDC_EDIT33, m_dSbThick);
|
|
DDX_Text(pDX, IDC_EDIT31, m_dStiffnW);
|
|
DDX_Text(pDX, IDC_EDIT32, m_dStiffnH);
|
|
DDX_Radio(pDX, IDC_RADIO10, m_nFloorShow);
|
|
DDX_Text(pDX, IDC_EDIT18, m_dBarH);
|
|
DDX_Text(pDX, IDC_EDIT23, m_dBarSw);
|
|
DDX_Text(pDX, IDC_EDIT30, m_dBarSh);
|
|
DDX_Text(pDX, IDC_EDIT25, m_dBarSide);
|
|
DDX_CBString(pDX, IDC_COMBO4, m_sGarMat);
|
|
DDX_Text(pDX, IDC_EDIT28, m_dZGarExt);
|
|
DDX_Text(pDX, IDC_EDIT34, m_dGarExt);
|
|
DDX_Text(pDX, IDC_EDIT35, m_dRailSw);
|
|
DDX_Text(pDX, IDC_EDIT36, m_dRailSh);
|
|
DDX_Check(pDX, IDC_CHECK15, m_nRailCirSec);
|
|
DDX_CBString(pDX, IDC_COMBO6, m_sBarMat);
|
|
DDX_Check(pDX, IDC_CHECK6, m_bOutSideHRail);
|
|
DDX_Check(pDX, IDC_CHECK9, m_bOutSideRail);
|
|
DDX_Check(pDX, IDC_CHECK13, m_bInsideRail);
|
|
DDX_Text(pDX, IDC_EDIT40, m_dBomEl);
|
|
}
|
|
|
|
void CSFSPLTDlg::OnEnChangeSteepsS()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_nSteepsS < (m_nSteepS - m_nSteep2s) - 1)
|
|
{
|
|
m_nSteepMs = m_nSteepS - m_nSteepsS - m_nSteep2s;
|
|
}
|
|
else
|
|
{
|
|
m_nSteepMs = (m_nSteepS - m_nSteepsS) / 2;
|
|
m_nSteep2s = m_nSteepMs + (m_nSteepS - m_nSteepsS) % 2;
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CSFSPLTDlg::OnEnChangeSteepMs()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_nSteepMs < (m_nSteepS - m_nSteep2s) - 1)
|
|
{
|
|
m_nSteepsS = m_nSteepS - m_nSteepMs - m_nSteep2s;
|
|
}
|
|
else
|
|
{
|
|
m_nSteepsS = (m_nSteepS - m_nSteepMs) / 2;
|
|
m_nSteep2s = m_nSteepsS + (m_nSteepS - m_nSteepMs) % 2;
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CSFSPLTDlg::OnEnChangeSteep2s()
|
|
{
|
|
UpdateData();
|
|
|
|
m_nSteepsS = (m_nSteepS - m_nSteep2s) / 2;
|
|
m_nSteepMs = m_nSteepsS + (m_nSteepS - m_nSteep2s) % 2;
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CSFSPLTDlg::OnEnChangeSteepS()
|
|
{
|
|
UpdateData();
|
|
|
|
m_nSteepsS = m_nSteepS / 3;
|
|
m_nSteepMs = m_nSteepsS;
|
|
m_nSteep2s = m_nSteepsS + (m_nSteepS % 3);
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CSFSPLTDlg::OnEnChangeH()
|
|
{
|
|
UpdateData();
|
|
|
|
double h = _ttof(m_sH);
|
|
m_nSteepS = (int)(h / m_dSteepH);
|
|
|
|
m_nSteepsS = m_nSteepS / 3;
|
|
m_nSteepMs = m_nSteepsS;
|
|
m_nSteep2s = m_nSteepsS + (m_nSteepS % 3);
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CSFSPLTDlg::OnEnChangeStweepH()
|
|
{
|
|
UpdateData();
|
|
|
|
double h = _ttof(m_sH);
|
|
m_nSteepS = (int)(h / m_dSteepH);
|
|
|
|
m_nSteepsS = m_nSteepS / 3;
|
|
m_nSteepMs = m_nSteepsS;
|
|
m_nSteep2s = m_nSteepsS + (m_nSteepS % 3);
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CSFSPLTDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CSFSPLTDlg::OnBnClickedOk)
|
|
ON_EN_CHANGE(IDC_EDIT3, &CSFSPLTDlg::OnEnChangeSteepsS)
|
|
ON_EN_CHANGE(IDC_EDIT26, &CSFSPLTDlg::OnEnChangeSteepMs)
|
|
ON_EN_CHANGE(IDC_EDIT27, &CSFSPLTDlg::OnEnChangeSteep2s)
|
|
ON_EN_CHANGE(IDC_EDIT2, &CSFSPLTDlg::OnEnChangeSteepS)
|
|
ON_EN_CHANGE(IDC_EDIT1, &CSFSPLTDlg::OnEnChangeH)
|
|
ON_EN_CHANGE(IDC_EDIT6, &CSFSPLTDlg::OnEnChangeStweepH)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CSFSPLTDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
//IDC_STATIC
|
|
// 子类化控件对象
|
|
if (!m_wndViewCtrl.SubclassDlgItem(IDC_STATIC_FRM, this))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
PreView3d();
|
|
//PreView2d();
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CSFSPLTDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
SET_CACHE(CSFSPLTDlg
|
|
, %s %d %f %f %d %d %d %d %f %f %f %d %d %d %f
|
|
%f %f %f %f %f %f %f %d %f %f %f %f %s %f %f
|
|
%f %f %d %s %d %d %d %f
|
|
, m_sH
|
|
, m_nSteepS
|
|
, m_dSteepH
|
|
, m_dSteepW
|
|
, m_nSSteeps
|
|
, m_nSteepsS
|
|
, m_nSteepMs
|
|
, m_nSteep2s
|
|
, m_dStairMW
|
|
, m_dStairSW
|
|
, m_dStair2W
|
|
, m_bLBeam
|
|
, m_bRBeam
|
|
, m_nUpSide
|
|
, m_bDimUpstair
|
|
, m_dRestPtW
|
|
, m_dRestPtL
|
|
, m_dRestPtML
|
|
, m_dRestPtMW
|
|
, m_dSbThick
|
|
, m_dStiffnW
|
|
, m_dStiffnH
|
|
, m_nFloorShow
|
|
, m_dBarH
|
|
, m_dBarSw
|
|
, m_dBarSh
|
|
, m_dBarSide
|
|
, m_sGarMat
|
|
, m_dZGarExt
|
|
, m_dGarExt
|
|
, m_dRailSw
|
|
, m_dRailSh
|
|
, m_nRailCirSec
|
|
, m_sBarMat
|
|
, m_bOutSideHRail
|
|
, m_bOutSideRail
|
|
, m_bInsideRail
|
|
, m_dBomEl);
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CSFSPLTDlg::PreView3d()
|
|
{
|
|
AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true);
|
|
AecDbDoubleMulStair* pStair = new AecDbDoubleMulStair;
|
|
SFSPStair data;
|
|
::memset(&data, 0, sizeof(SFSPStair));
|
|
GetSFSPStair(data);
|
|
data.dBomEl = .0;
|
|
pStair->setLayer(idLayStair);
|
|
pStair->SetSFPXStair(data);
|
|
pStair->SetSection(data.dBarSize[0], 0.0);
|
|
|
|
AcGeVector3d X(AcGeVector3d::kXAxis), Y(AcGeVector3d::kYAxis), Z(AcGeVector3d::kZAxis);
|
|
AcGePoint3d ptS = AcGePoint3d::kOrigin + Y * (data.dRestPtML + (data.nSteepMs - 1) * data.dSteepW) * .5;
|
|
ptS += X * (data.dRestPtW + data.dRestPtMW * .5 + (data.nSteep2s - 1) * data.dSteepW);
|
|
AcGePoint3d ptE = ptS - AcGeVector3d::kYAxis * 100;
|
|
AcDbLine ln;
|
|
ln.setStartPoint(ptS);
|
|
ln.setEndPoint(ptE);
|
|
|
|
pStair->SetBaseCurve(&ln);
|
|
pStair->GetSpecialtyData()->SetAt(KEY_2DSTYLE, 0);
|
|
|
|
m_wndViewCtrl.clearAll();
|
|
m_wndViewCtrl.init(true);
|
|
m_wndViewCtrl.SetOrbitFlag(OBF_PAN | OBF_ZOOM | OBF_COTE);
|
|
AcDbExtents ext;
|
|
pStair->getGeomExtents(ext);
|
|
m_wndViewCtrl.InitFromCurrentView3D(ext, true);
|
|
m_wndViewCtrl.Add(pStair);
|
|
pStair->close();
|
|
m_wndViewCtrl.view()->invalidate();
|
|
m_wndViewCtrl.Invalidate();
|
|
m_wndViewCtrl.RedrawWindow();
|
|
}
|
|
|
|
void CSFSPLTDlg::PreView2d()
|
|
{
|
|
AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true);
|
|
AecDbDoubleMulStair* pStair = new AecDbDoubleMulStair;
|
|
SFSPStair data;
|
|
::memset(&data, 0, sizeof(SFSPStair));
|
|
GetSFSPStair(data);
|
|
pStair->setLayer(idLayStair);
|
|
pStair->SetSFPXStair(data);
|
|
pStair->SetSection(data.dBarSize[0], 0.0);
|
|
|
|
AcDbLine ln;
|
|
ln.setStartPoint(AcGePoint3d::kOrigin);
|
|
ln.setEndPoint(AcGePoint3d::kOrigin + AcGeVector3d::kYAxis * 100);
|
|
CoreTools::CloneAndAddToModelSpace(&ln);
|
|
|
|
pStair->SetBaseCurve(&ln);
|
|
pStair->GetSpecialtyData()->SetAt(KEY_2DSTYLE, 0);
|
|
|
|
m_wndViewCtrl.clearAll();
|
|
m_wndViewCtrl.init(true);
|
|
m_wndViewCtrl.SetOrbitFlag(OBF_PAN | OBF_ZOOM | OBF_COTE);
|
|
AcDbExtents ext;
|
|
pStair->getGeomExtents(ext);
|
|
m_wndViewCtrl.InitFromCurrentView2D(ext, true);
|
|
m_wndViewCtrl.Add(pStair);
|
|
pStair->close();
|
|
m_wndViewCtrl.view()->invalidate();
|
|
m_wndViewCtrl.Invalidate();
|
|
m_wndViewCtrl.RedrawWindow();
|
|
}
|
|
|
|
bool CSFSPLTDlg::GetSFSPStair(SFSPStair &data) const
|
|
{
|
|
data.dH = _ttof(m_sH); //楼梯高度
|
|
data.nSteepS = m_nSteepS; //踏步总数
|
|
data.dSteepH = m_dSteepH; //踏步高度
|
|
data.dSteepW = m_dSteepW; //踏步宽度
|
|
data.nSteepsS = m_nSteepsS; //边梯步数
|
|
data.nSSteeps = m_nSSteeps; //剖切步数
|
|
data.nSteepMs = m_nSteepMs; //中梯步数
|
|
data.nSteep2s = m_nSteep2s; //二跑步数
|
|
data.dStairTW = m_dStair2W; //第二梯段宽
|
|
data.dStairSW = m_dStairSW; //边梯宽度
|
|
data.dStairMW = m_dStairMW; //中梯宽度
|
|
data.dWell = 100; //井宽 100 国标
|
|
data.bLBeam = m_bLBeam; //内边梁
|
|
data.bRBeam = m_bRBeam; //外边梁
|
|
data.nUpSide = m_nUpSide; //上梯位置
|
|
data.nSteepAlign = 0; //踏步取齐
|
|
data.nFloorShow = m_nFloorShow; //层显示类型
|
|
data.bDimUpstair = m_bDimUpstair; //标注上楼方向
|
|
|
|
//平台参数
|
|
data.nRestShape = 1; //休息平台形状
|
|
data.dRestPtW = m_dRestPtW; //休息平台宽
|
|
data.dRestPtL = m_dRestPtL; //休息平台长
|
|
data.dRestPtMW = m_dRestPtMW; //中平台宽
|
|
data.dRestPtML = m_dRestPtML; //中平台长
|
|
|
|
data.dStiffnW = m_dStiffnW; //加强筋宽 钢梯无效
|
|
data.dStiffnH = m_dStiffnH; //加强筋高 钢梯无效
|
|
data.dSbThick = m_dSbThick; //平台板厚
|
|
|
|
data.bOutSideHRail = m_bOutSideHRail;//有外侧扶手
|
|
data.bOutSideRail = m_bOutSideRail; //有外侧栏杆
|
|
data.bInsideRail = m_bInsideRail; //有内侧栏杆
|
|
data.dBomEl = m_dBomEl; //楼梯底部标高
|
|
|
|
//扶手护栏
|
|
data.dBarH = m_dBarH; //扶手高度
|
|
data.dGarSize[0] = m_dBarSw; //扶手截面宽
|
|
data.dGarSize[1] = m_dBarSw; //扶手截面长
|
|
|
|
data.dGarExt = m_dGarExt; //边梯扶手伸出 60 默认
|
|
data.dZGarExt = m_dZGarExt; //中梯扶手伸出 60 默认
|
|
|
|
data.nGShape = 1; //截面类型0 Rect 1 C
|
|
_tcscpy(data.szGarMat, m_sGarMat); //材质
|
|
|
|
data.dBarSp = 60; //护栏间距 预留
|
|
data.dBarSize[0] = m_dRailSw; //护栏截面尺寸
|
|
data.dBarSize[1] = m_dRailSh;
|
|
data.dBarSide = m_dBarSide; //扶手距边
|
|
data.nBShape = m_nRailCirSec; //护栏截面类型0 Rect 1 C
|
|
_tcscpy(data.szBarMat, m_sBarMat); //材质
|
|
|
|
return true;
|
|
}
|
|
|
|
void CSFSPLTDlg::SetSFSPStair(const SFSPStair& data)
|
|
{
|
|
m_sH.Format(_T("%lf"), data.dH); //楼梯高度
|
|
m_nSteepS = data.nSteepS; //踏步总数
|
|
m_dSteepH = data.dSteepH; //踏步高度
|
|
m_dSteepW = data.dSteepW; //踏步宽度
|
|
m_nSteepsS = data.nSteepsS; //边梯步数
|
|
m_nSSteeps = data.nSSteeps; //剖切步数
|
|
m_nSteepMs = data.nSteepMs; //中梯步数
|
|
m_nSteep2s = data.nSteep2s; //二跑步数
|
|
m_dStair2W = data.dStairTW; //第二梯段宽
|
|
m_dStairSW = data.dStairSW; //边梯宽度
|
|
m_dStairMW = data.dStairMW; //中梯宽度
|
|
m_bLBeam = data.bLBeam; //内边梁
|
|
m_bRBeam = data.bRBeam; //外边梁
|
|
m_nUpSide = data.nUpSide; //上梯位置
|
|
m_nFloorShow = data.nFloorShow; //层显示类型
|
|
m_bDimUpstair = data.bDimUpstair; //标注上楼方向
|
|
|
|
//平台参数
|
|
m_dRestPtW = data.dRestPtW; //休息平台宽
|
|
m_dRestPtL = data.dRestPtL; //休息平台长
|
|
m_dRestPtMW = data.dRestPtMW; //中平台宽
|
|
m_dRestPtML = data.dRestPtML; //中平台长
|
|
|
|
m_dStiffnW = data.dStiffnW; //加强筋宽 钢梯无效
|
|
m_dStiffnH = data.dStiffnH; //加强筋高 钢梯无效
|
|
m_dSbThick = data.dSbThick; //平台板厚
|
|
|
|
m_bOutSideHRail = data.bOutSideHRail; //有外侧扶手
|
|
m_bOutSideRail = data.bOutSideRail; //有外侧栏杆
|
|
m_bInsideRail = data.bInsideRail; //有内侧栏杆
|
|
m_dBomEl = data.dBomEl; //楼梯底部标高
|
|
|
|
//扶手护栏
|
|
m_dBarH = data.dBarH; //扶手高度
|
|
m_dBarSw = data.dGarSize[0]; //扶手截面宽
|
|
m_dBarSw = data.dGarSize[1]; //扶手截面长
|
|
|
|
m_dGarExt = data.dGarExt; //边梯扶手伸出 60 默认
|
|
m_dZGarExt = data.dZGarExt; //中梯扶手伸出 60 默认
|
|
|
|
m_sGarMat = data.szGarMat; //材质
|
|
|
|
m_dRailSw = data.dBarSize[0]; //护栏截面尺寸
|
|
m_dRailSh = data.dBarSize[1];
|
|
m_dBarSide = data.dBarSide; //扶手距边
|
|
m_nRailCirSec = data.nBShape; //护栏截面类型0 Rect 1 C
|
|
m_sBarMat = data.szBarMat; //材质
|
|
|
|
return;
|
|
}
|