#include "stdafx.h" #include "SJLTDlg.h" #include "EarThwormDef.h" #include "CoreTools.h" #include "uihistory.h" #include "AecDbTriangleStair.h" IMPLEMENT_DYNAMIC(CSJLTDlg, CDialog) CSJLTDlg::CSJLTDlg(CWnd *pParent /*=nullptr*/) : CDialog(IDD_SJLT_DLG, pParent) , m_bShowRestPtw(FALSE) , m_sH(_T("3600")) , m_nSteepS(8) , m_dSteepH(150) , m_dSteepW(270) , m_nSSteeps(2) , m_nSteep2s(5) , m_nSteep1s(10) , m_dStairSW(2600) , m_dStairMW(1200) , m_dWell(600) , m_bLBeam(TRUE) , m_bRBeam(TRUE) , m_nUpSide(0) , m_bDimUpstair(FALSE) , m_dRestPtW(800) , m_dSbThick(100) , m_dStiffnW(100) , m_dStiffnH(100) , m_nSteepAlign(0) , m_nFloorShow(0) , m_dBarH(900) , m_dBarSw(60) , m_dBarSh(60) , m_dBarSide(10) , m_sGarMat(_T("")) , m_bOutSideHRail(TRUE) , m_bOutSideRail(TRUE) , m_bInsideRail(TRUE) , m_dZGarExt(600) , m_dGarExt(200) , m_dRailSw(30) , m_dRailSh(50) , m_nRailCirSec(TRUE) , m_sBarMat(_T("")) , m_dBomEl(0) { GET_CACHE(CSJLTDlg , %d%s%d%f%f%d%d%d%f%f%f%d%d%d%d%f%f%f%f%d%d%f%f%f%f%s%d%d%d%f%f%f%f%d%s%d , &m_bShowRestPtw , &m_sH , &m_nSteepS , &m_dSteepH , &m_dSteepW , &m_nSSteeps , &m_nSteep2s , &m_nSteep1s , &m_dStairSW , &m_dStairMW , &m_dWell , &m_bLBeam , &m_bRBeam , &m_nUpSide , &m_bDimUpstair , &m_dRestPtW , &m_dSbThick , &m_dStiffnW , &m_dStiffnH , &m_nSteepAlign , &m_nFloorShow , &m_dBarH , &m_dBarSw , &m_dBarSh , &m_dBarSide , &m_sGarMat , &m_bOutSideHRail , &m_bOutSideRail , &m_bInsideRail , &m_dZGarExt , &m_dGarExt , &m_dRailSw , &m_dRailSh , &m_nRailCirSec , &m_sBarMat , &m_dBomEl); double dH = m_nSteepS * m_dSteepH * 3; m_sH.Format(_T("%.1f"), dH); } CSJLTDlg::~CSJLTDlg() { } void CSJLTDlg::DoDataExchange(CDataExchange *pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_sH); DDX_Text(pDX, IDC_EDIT3, 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_dStairMW); DDX_Text(pDX, IDC_EDIT17, m_dWell); 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_EDIT31, m_dStiffnW); DDX_Text(pDX, IDC_EDIT32, m_dStiffnH); DDX_Text(pDX, IDC_EDIT33, m_dSbThick); DDX_Check(pDX, IDC_CHECK3, m_bShowRestPtw); DDX_Radio(pDX, IDC_RADIO10, m_nFloorShow); 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_CBString(pDX, IDC_COMBO4, m_sGarMat); 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_EDIT22, m_dZGarExt); DDX_Text(pDX, IDC_EDIT23, m_dGarExt); DDX_Text(pDX, IDC_EDIT30, m_dRailSw); DDX_Text(pDX, IDC_EDIT28, m_dRailSh); DDX_Check(pDX, IDC_CHECK14, m_nRailCirSec); DDX_CBString(pDX, IDC_COMBO6, m_sBarMat); DDX_Text(pDX, IDC_EDIT40, m_dBomEl); } BEGIN_MESSAGE_MAP(CSJLTDlg, CDialog) ON_BN_CLICKED(IDOK, &CSJLTDlg::OnBnClickedOk) ON_EN_CHANGE(IDC_EDIT1, &CSJLTDlg::OnEnChangeEdit1) ON_EN_CHANGE(IDC_EDIT3, &CSJLTDlg::OnEnChangeEdit3) ON_EN_CHANGE(IDC_EDIT6, &CSJLTDlg::OnEnChangeEdit6) END_MESSAGE_MAP() BOOL CSJLTDlg::OnInitDialog() { CDialog::OnInitDialog(); // 子类化控件对象 if (!m_wndViewCtrl.SubclassDlgItem(IDC_STATIC_FRM, this)) { return FALSE; } PreView3d(); //PreView2d(); UpdateData(FALSE); return TRUE; } void CSJLTDlg::OnBnClickedOk() { UpdateData(); SET_CACHE(CSJLTDlg , %d%s%d%f%f%d%d%d%f%f%f%d%d%d%d%f%f%f%f%d%d%f%f%f%f%s%d%d%d%f%f%f%f%d%s%d , m_bShowRestPtw , m_sH , m_nSteepS , m_dSteepH , m_dSteepW , m_nSSteeps , m_nSteep2s , m_nSteep1s , m_dStairSW , m_dStairMW , m_dWell , m_bLBeam , m_bRBeam , m_nUpSide , m_bDimUpstair , m_dRestPtW , m_dSbThick , m_dStiffnW , m_dStiffnH , m_nSteepAlign , m_nFloorShow , m_dBarH , m_dBarSw , m_dBarSh , m_dBarSide , m_sGarMat , m_bOutSideHRail , m_bOutSideRail , m_bInsideRail , m_dZGarExt , m_dGarExt , m_dRailSw , m_dRailSh , m_nRailCirSec , m_sBarMat , m_dBomEl); CDialog::OnOK(); } //H void CSJLTDlg::OnEnChangeEdit1() { UpdateData(); m_nSteepS = (int)(_ttof(m_sH) / m_dSteepH + 0.5); UpdateData(FALSE); } //steps void CSJLTDlg::OnEnChangeEdit3() { UpdateData(); double dH = m_nSteepS * m_dSteepH * 3; m_sH.Format(_T("%.1f"), dH); UpdateData(FALSE); } //steph void CSJLTDlg::OnEnChangeEdit6() { UpdateData(); double dH = m_nSteepS * m_dSteepH * 3; m_sH.Format(_T("%.1f"), dH); UpdateData(FALSE); } bool CSJLTDlg::GetSFPXStair(SFPXStair &data) const { data.dH = _ttof(m_sH); //楼梯高度 data.nSteepS = m_nSteepS; //踏步总数 data.dSteepH = m_dSteepH; //踏步高度 data.dSteepW = m_dSteepW; //踏步宽度 data.nSteepsS = m_nSteep1s; //一跑步数 data.nSteep2s = m_nSteep2s; //二跑步数 data.dStairTW = m_dStairSW; //梯间宽度 data.dStairSW = m_dStairMW; //梯段宽度 data.dStairMW = m_dStairMW; //无 data.nSSteeps = m_nSSteeps; //剖切步数 data.dWell = m_dWell; //井宽 100 国标 data.bLBeam = m_bLBeam; //内边梁 data.bRBeam = m_bRBeam; //外边梁 data.nUpSide = m_nUpSide; //上梯位置 data.nSteepAlign = m_nSteepAlign; //踏步取齐 data.nFloorShow = m_nFloorShow; //层显示类型 data.bDimUpstair = m_bDimUpstair; //标注上楼方向 //平台参数 data.bShowRestPtw = m_bShowRestPtw; data.nRestShape = 0; //休息平台形状 data.dRestPtW = m_dRestPtW; //休息平台宽 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_dBarSh; data.dGarExt = m_dGarExt; //转角扶手伸出 60 默认 data.dZGarExt = m_dZGarExt; //层间伸出 60 默认 data.nGShape = 1; //截面类型0 Rect 1 C _tcscpy(data.szGarMat, m_sGarMat); //材质 data.dBarSp = 600; //护栏间距 预留 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 CSJLTDlg::SetSFPXStair(const SFPXStair& data) { //data.dH = _ttof(m_sH); //楼梯高度 m_nSteepS = data.nSteepS; //踏步总数 m_dSteepH = data.dSteepH; //踏步高度 m_dSteepW = data.dSteepW; //踏步宽度 m_nSteep1s = data.nSteepsS; //一跑步数 m_nSteep2s = data.nSteep2s; //二跑步数 m_dStairSW = data.dStairTW; //梯间宽度 m_dStairMW = data.dStairSW; //梯段宽度 m_dStairMW = data.dStairMW; //无 m_nSSteeps = data.nSSteeps; //剖切步数 m_dWell = data.dWell; //井宽 100 国标 m_bLBeam = data.bLBeam; //内边梁 m_bRBeam = data.bRBeam; //外边梁 m_nUpSide = data.nUpSide; //上梯位置 m_nSteepAlign = data.nSteepAlign; //踏步取齐 m_nFloorShow = data.nFloorShow; //层显示类型 m_bDimUpstair = data.bDimUpstair; //标注上楼方向 //平台参数 m_bShowRestPtw = data.bShowRestPtw; //data.nRestShape = 0; //休息平台形状 m_dRestPtW = data.dRestPtW; //休息平台宽 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_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 = 600; //护栏间距 预留 m_dRailSw = data.dBarSize[0]; //护栏截面尺寸 m_dRailSh = data.dBarSize[1]; m_dBarSide = data.dBarSide; //扶手距边 m_nRailCirSec = data.nBShape; //护栏截面类型0 Rect 1 C //_tcscpy(data.szBarMat, m_sBarMat); //材质 return; } void CSJLTDlg::PreView2d() { AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true); AecDbTriangleStair* pStair = new AecDbTriangleStair; 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 CSJLTDlg::PreView3d() { AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true); AecDbTriangleStair* pStair = new AecDbTriangleStair; 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(); }