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

411 lines
10 KiB
C++

#include "stdafx.h"
#include "CSFZJLTDlg.h"
#include "EarThwormDef.h"
#include "CoreTools.h"
#include "uihistory.h"
#include "AecDbCornerStair.h"
IMPLEMENT_DYNAMIC(CSFZJLTDlg, CDialog)
CSFZJLTDlg::CSFZJLTDlg(CWnd* pParent /*=NULL*/)
: CDialog(IDD_SFZJ_DLG, pParent)
, m_sH(_T("3000"))
, m_nSteepS(20)
, m_nSteepsS(10)
, m_dSteepH(150)
, m_dSteepW(270)
, m_nSSteeps(5)
, m_dStairSW(1200)
, m_dStairMW(2400)
, m_bLBeam(FALSE)
, m_bRBeam(FALSE)
, m_nUpSide(0)
, m_nFloorShow(1)
, m_bDimUpstair(TRUE)
, m_bOutSideHRail(FALSE)
, m_bOutSideRail(FALSE)
, m_bInsideRail(TRUE)
, m_dBarH(900)
, m_dBarSw(60)
, m_dBarSide(10)
, m_dZGarExt(60)
, m_dGarExt(60)
, m_dBomEl(0)
, m_sGarMat(_T("柚木"))
, m_dRestPtW(1200)
, m_dRestPtL(2400)
, m_dStiffnW(100)
, m_dStiffnH(100)
, m_dBarSh(60)
, m_dRailSw(30)
, m_dRailSh(30)
, m_sBarMat(_T("不锈钢管"))
, m_nSteepMs(10)
{
GET_CACHE(CSFZJLTDlg
, %s%d%f%f%d%f%f%d%d%d%d%d%d%d%d%d%f%f%f%f%f%f%s%f%f%f%f%f%f%f%s%d
, &m_sH
, &m_nSteepS
, &m_dSteepH
, &m_dSteepW
, &m_nSSteeps
, &m_dStairSW
, &m_dStairMW
, &m_bLBeam
, &m_bRBeam
, &m_nUpSide
, &m_nFloorShow
, &m_bDimUpstair
, &m_bOutSideHRail
, &m_bOutSideRail
, &m_bInsideRail
, &m_nSteepsS
, &m_dBarH
, &m_dBarSw
, &m_dBarSide
, &m_dZGarExt
, &m_dGarExt
, &m_dBomEl
, &m_sGarMat
, &m_dRestPtW
, &m_dRestPtL
, &m_dStiffnW
, &m_dStiffnH
, &m_dBarSh
, &m_dRailSw
, &m_dRailSh
, &m_sBarMat
, &m_nSteepMs);
double dH = (m_nSteepMs + m_nSteepsS) * m_dSteepH;
m_sH.Format(_T("%.1f"), dH);
}
CSFZJLTDlg::~CSFZJLTDlg()
{
}
void CSFZJLTDlg::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_EDIT15, m_dStairSW);
DDX_Text(pDX, IDC_EDIT16, m_dStairMW);
DDX_Check(pDX, IDC_CHECK1, m_bLBeam);
DDX_Check(pDX, IDC_CHECK2, m_bRBeam);
DDX_Radio(pDX, IDC_RADIO1, m_nUpSide);
DDX_Radio(pDX, IDC_RADIO10, m_nFloorShow);
DDX_Check(pDX, IDC_CHECK8, m_bDimUpstair);
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_EDIT3, m_nSteepsS);
DDX_Text(pDX, IDC_EDIT18, m_dBarH);
DDX_Text(pDX, IDC_EDIT19, m_dBarSw);
DDX_Text(pDX, IDC_EDIT25, m_dBarSh);
DDX_Text(pDX, IDC_EDIT20, m_dBarSide);
DDX_Text(pDX, IDC_EDIT22, m_dZGarExt);
DDX_Text(pDX, IDC_EDIT23, m_dGarExt);
DDX_Text(pDX, IDC_EDIT40, m_dBomEl);
DDX_CBString(pDX, IDC_COMBO4, m_sGarMat);
DDX_Text(pDX, IDC_EDIT4, m_dRestPtW);
DDX_Text(pDX, IDC_EDIT33, m_dRestPtL);
DDX_Text(pDX, IDC_EDIT31, m_dStiffnW);
DDX_Text(pDX, IDC_EDIT32, m_dStiffnH);
DDX_Text(pDX, IDC_EDIT30, m_dRailSw);
DDX_Text(pDX, IDC_EDIT28, m_dRailSh);
DDX_CBString(pDX, IDC_COMBO6, m_sBarMat);
DDX_Text(pDX, IDC_EDIT26, m_nSteepMs);
}
BEGIN_MESSAGE_MAP(CSFZJLTDlg, CDialog)
ON_BN_CLICKED(IDOK, &CSFZJLTDlg::OnBnClickedOk)
ON_EN_CHANGE(IDC_EDIT1, &CSFZJLTDlg::OnEnChangeEdit1)
ON_EN_CHANGE(IDC_EDIT3, &CSFZJLTDlg::OnEnChangeEdit3)
ON_EN_CHANGE(IDC_EDIT26, &CSFZJLTDlg::OnEnChangeEdit26)
ON_EN_CHANGE(IDC_EDIT6, &CSFZJLTDlg::OnEnChangeEdit6)
END_MESSAGE_MAP()
BOOL CSFZJLTDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 子类化控件对象
if (!m_wndViewCtrl.SubclassDlgItem(IDC_STATIC_FRM, this))
{
return FALSE;
}
PreView3d();
//PreView2d();
UpdateData(FALSE);
return TRUE;
}
//H
void CSFZJLTDlg::OnEnChangeEdit1()
{
UpdateData();
int nSteps = (int)(_ttof(m_sH) / m_dSteepH + 0.5) - (m_nSteepMs + m_nSteepsS);
m_nSteepMs += nSteps / 2;
m_nSteepsS += (nSteps - nSteps / 2);
m_nSteepS = m_nSteepMs + m_nSteepsS;
UpdateData(FALSE);
}
//steps1
void CSFZJLTDlg::OnEnChangeEdit3()
{
UpdateData();
double dH = (m_nSteepMs + m_nSteepsS) * m_dSteepH;
m_sH.Format(_T("%.1f"), dH);
UpdateData(FALSE);
}
//steps2
void CSFZJLTDlg::OnEnChangeEdit26()
{
UpdateData();
double dH = (m_nSteepMs + m_nSteepsS) * m_dSteepH;
m_sH.Format(_T("%.1f"), dH);
UpdateData(FALSE);
}
//steph
void CSFZJLTDlg::OnEnChangeEdit6()
{
UpdateData();
double dH = (m_nSteepMs + m_nSteepsS) * m_dSteepH;
m_sH.Format(_T("%.1f"), dH);
UpdateData(FALSE);
}
void CSFZJLTDlg::OnBnClickedOk()
{
UpdateData();
SET_CACHE(CSFZJLTDlg
, %s%d%f%f%d%f%f%d%d%d%d%d%d%d%d%d%f%f%f%f%f%f%s%f%f%f%f%f%f%f%s%d
, m_sH
, m_nSteepS
, m_dSteepH
, m_dSteepW
, m_nSSteeps
, m_dStairSW
, m_dStairMW
, m_bLBeam
, m_bRBeam
, m_nUpSide
, m_nFloorShow
, m_bDimUpstair
, m_bOutSideHRail
, m_bOutSideRail
, m_bInsideRail
, m_nSteepsS
, m_dBarH
, m_dBarSw
, m_dBarSide
, m_dZGarExt
, m_dGarExt
, m_dBomEl
, m_sGarMat
, m_dRestPtW
, m_dRestPtL
, m_dStiffnW
, m_dStiffnH
, m_dBarSh
, m_dRailSw
, m_dRailSh
, m_sBarMat
, m_nSteepMs);
CDialog::OnOK();
}
bool CSFZJLTDlg::GetSFPXStair(SFPXStair &data) const
{
data.dH = _ttof(m_sH); //楼梯高度
data.nSteepS = m_nSteepS; //踏步总数
data.dSteepH = m_dSteepH; //踏步高度
data.dSteepW = m_dSteepW; //踏步宽度
data.nSteepsS = m_nSteepsS; //边梯步数
data.nSteepMs = m_nSteepMs; //中梯步数
data.nSSteeps = m_nSSteeps; //剖切步数
data.dStairTW = m_dStairMW; //梯间宽度
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 = 0; //休息平台形状
data.dRestPtW = m_dRestPtW; //休息平台宽
data.dStiffnW = m_dStiffnW; //加强筋宽 钢梯无效
data.dStiffnH = m_dStiffnH; //加强筋高 钢梯无效
data.dRestPtL = m_dRestPtL; //休息平台长
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 = 1; //护栏截面类型0 Rect 1 C
_tcscpy(data.szBarMat, m_sBarMat); //材质
return true;
}
void CSFZJLTDlg::SetSFPXStair(const SFPXStair& data)
{
//data.dH = _ttof(m_sH); //楼梯高度
m_nSteepS = data.nSteepS; //踏步高度
m_dSteepH = data.dSteepH; //踏步高度
m_dSteepW = data.dSteepW; //踏步宽度
m_nSteepsS = data.nSteepsS; //边梯步数
m_nSteepMs = data.nSteepMs; //中梯步数
m_nSSteeps = data.nSSteeps; //剖切步数
m_dStairMW = data.dStairTW; //梯间宽度
m_dStairSW = data.dStairSW; //边梯宽度
m_dStairMW = data.dStairMW; //中梯段宽
//100 = data.dWell; //井宽 100 国标
m_bLBeam = data.bLBeam; //内边梁
m_bRBeam = data.bRBeam; //外边梁
m_nUpSide = data.nUpSide; //上梯位置
//data.nSteepAlign = 0; //踏步取齐
m_nFloorShow = data.nFloorShow; //层显示类型
m_bDimUpstair = data.bDimUpstair; //标注上楼方向
//平台参数
//0 = data.nRestShape; //休息平台形状
m_dRestPtW = data.dRestPtW; //休息平台宽
m_dStiffnW = data.dStiffnW; //加强筋宽 钢梯无效
m_dStiffnH = data.dStiffnH; //加强筋高 钢梯无效
m_dRestPtL = data.dRestPtL; //休息平台长
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_dBarSh = data.dGarSize[1];
m_dGarExt = data.dGarExt; //转角扶手伸出 60 默认
m_dZGarExt = data.dZGarExt; //层间伸出 60 默认
//data.nGShape = 1; //截面类型0 Rect 1 C
//_tcscpy(data.szGarMat, m_sGarMat); //材质
//data.dBarSp = 60; //护栏间距 预留
m_dRailSw = data.dBarSize[0]; //护栏截面尺寸
m_dRailSh = data.dBarSize[1];
m_dBarSide = data.dBarSide; //扶手距边
//data.nBShape = 1; //护栏截面类型0 Rect 1 C
//_tcscpy(data.szBarMat, m_sBarMat); //材质
return;
}
void CSFZJLTDlg::PreView2d()
{
AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true);
AecDbCornerStair* pStair = new AecDbCornerStair;
SFPXStair data;
::memset(&data, 0, sizeof(SFPXStair));
GetSFPXStair(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();
}
void CSFZJLTDlg::PreView3d()
{
AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true);
AecDbCornerStair* pStair = new AecDbCornerStair;
SFPXStair data;
::memset(&data, 0, sizeof(SFPXStair));
GetSFPXStair(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.InitFromCurrentView3D(ext, true);
m_wndViewCtrl.Add(pStair);
pStair->close();
m_wndViewCtrl.view()->invalidate();
m_wndViewCtrl.Invalidate();
m_wndViewCtrl.RedrawWindow();
}