#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(); }