#include "stdafx.h" #include "YHLTDlg.h" #include "EarThwormDef.h" #include "coretools.h" #include "uihistory.h" #include "AecDbArcSegStair.h" IMPLEMENT_DYNAMIC(CYHLTDlg, CDialog) CYHLTDlg::CYHLTDlg(CWnd* pParent /*=NULL*/) : CDialog(CYHLTDlg::IDD, pParent) , m_bInOutCirRef(TRUE) , m_dInR(800) , m_dOutR(2000) , m_bClockWise(TRUE) , m_dBomEl(0) , m_dStaAngle(30) , m_dCenterAngle(150) , m_dW(1200) , m_dH(3000) , m_dSteepH(150) , m_nSteep(10) , m_bShowInSlab3d(FALSE) , m_bLBeam(TRUE) , m_bRBeam(TRUE) , m_nSymbol(FALSE) , m_bSlope(FALSE) , m_bNonslip(FALSE) , m_bSlopeBase(FALSE) , m_bGuardBar(TRUE) , m_dBarH(900) , m_dBarSp(200) , m_dBarH1(650) , m_dBarD(30) , m_sMaterial(_T("钢筋混凝土")) , m_sFactory(_T("现场浇筑")) { GET_CACHE(CYHLTDlg , %d %f %f %d %f %f %f %f %f %f %d %d %d %d %d %d %d %d %d %f %f %f %f %s %s , &m_bInOutCirRef , &m_dInR , &m_dOutR , &m_bClockWise , &m_dBomEl , &m_dStaAngle , &m_dCenterAngle , &m_dW , &m_dH , &m_dSteepH , &m_nSteep , &m_bShowInSlab3d , &m_bLBeam , &m_bRBeam , &m_nSymbol , &m_bSlope , &m_bNonslip , &m_bSlopeBase , &m_bGuardBar , &m_dBarH , &m_dBarSp , &m_dBarH1 , &m_dBarD , &m_sMaterial , &m_sFactory); } CYHLTDlg::~CYHLTDlg() { } void CYHLTDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Radio(pDX, IDC_RADIO1, m_bInOutCirRef); DDX_Radio(pDX, IDC_RADIO3, m_bClockWise); DDX_Text(pDX, IDC_EDIT2, m_dInR); DDX_Text(pDX, IDC_EDIT3, m_dOutR); DDX_Text(pDX, IDC_EDIT1, m_dBomEl); DDX_Text(pDX, IDC_EDIT6, m_dStaAngle); DDX_Text(pDX, IDC_EDIT8, m_dCenterAngle); DDX_Text(pDX, IDC_EDIT11, m_dW); DDX_Text(pDX, IDC_EDIT15, m_dH); DDX_Text(pDX, IDC_EDIT16, m_dSteepH); DDX_Text(pDX, IDC_EDIT17, m_nSteep); DDX_Check(pDX, IDC_CHECK8, m_bShowInSlab3d); DDX_Check(pDX, IDC_CHECK1, m_bLBeam); DDX_Check(pDX, IDC_CHECK2, m_bRBeam); DDX_Radio(pDX, IDC_RADIO5, m_nSymbol); DDX_Check(pDX, IDC_CHECK10, m_bSlope); DDX_Check(pDX, IDC_CHECK11, m_bNonslip); DDX_Check(pDX, IDC_CHECK12, m_bSlopeBase); DDX_Check(pDX, IDC_CHECK6, m_bGuardBar); DDX_Text(pDX, IDC_EDIT18, m_dBarH); DDX_Text(pDX, IDC_EDIT21, m_dBarSp); DDX_Text(pDX, IDC_EDIT19, m_dBarH1); DDX_Text(pDX, IDC_EDIT20, m_dBarD); DDX_Text(pDX, IDC_EDIT22, m_sMaterial); DDX_Text(pDX, IDC_EDIT7, m_sFactory); DDX_Text(pDX, IDC_EDIT29, m_sNo); DDX_Check(pDX, IDC_CHECK7, m_bNOSetDefault); } void CYHLTDlg::OnEnChangeH() { UpdateData(); m_nSteep = (int)(m_dH / m_dSteepH); UpdateData(FALSE); } void CYHLTDlg::OnEnChangeStweepH() { UpdateData(); m_nSteep = (int)(m_dH / m_dSteepH); UpdateData(FALSE); } void CYHLTDlg::OnEnChangeSteepS() { UpdateData(); m_dSteepH = m_dH / m_nSteep; UpdateData(FALSE); } void CYHLTDlg::OnEnChangeInR() { UpdateData(); m_dW = m_dOutR - m_dInR; UpdateData(FALSE); } void CYHLTDlg::OnEnChangeOutR() { UpdateData(); m_dW = m_dOutR - m_dInR; UpdateData(FALSE); } void CYHLTDlg::OnEnChangeSteepW() { UpdateData(); m_dOutR = m_dInR + m_dW; UpdateData(FALSE); } BEGIN_MESSAGE_MAP(CYHLTDlg, CDialog) ON_BN_CLICKED(IDOK, &CYHLTDlg::OnBnClickedOk) ON_EN_CHANGE(IDC_EDIT15, &CYHLTDlg::OnEnChangeH) ON_EN_CHANGE(IDC_EDIT16, &CYHLTDlg::OnEnChangeStweepH) ON_EN_CHANGE(IDC_EDIT17, &CYHLTDlg::OnEnChangeSteepS) ON_EN_CHANGE(IDC_EDIT2, &CYHLTDlg::OnEnChangeInR) ON_EN_CHANGE(IDC_EDIT3, &CYHLTDlg::OnEnChangeOutR) ON_EN_CHANGE(IDC_EDIT11, &CYHLTDlg::OnEnChangeSteepW) END_MESSAGE_MAP() BOOL CYHLTDlg::OnInitDialog() { CDialog::OnInitDialog(); //IDC_STATIC // 子类化控件对象 if (!m_wndViewCtrl.SubclassDlgItem(IDC_STATIC_FRM, this)) { return FALSE; } PreView3d(); //PreView2d(); UpdateData(FALSE); return TRUE; } void CYHLTDlg::OnBnClickedOk() { UpdateData(); SET_CACHE(CYHLTDlg , %d %f %f %d %f %f %f %f %f %f %d %d %d %d %d %d %d %d %d %f %f %f %f %s %s , m_bInOutCirRef , m_dInR , m_dOutR , m_bClockWise , m_dBomEl , m_dStaAngle , m_dCenterAngle , m_dW , m_dH , m_dSteepH , m_nSteep , m_bShowInSlab3d , m_bLBeam , m_bRBeam , m_nSymbol , m_bSlope , m_bNonslip , m_bSlopeBase , m_bGuardBar , m_dBarH , m_dBarSp , m_dBarH1 , m_dBarD , m_sMaterial , m_sFactory); CDialog::OnOK(); } void CYHLTDlg::PreView3d() { AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true); AecDbArcSegStair* pStair = new AecDbArcSegStair; SFSPStair data; ::memset(&data, 0, sizeof(SFSPStair)); GetSFPXStair(data); data.dBomEl = .0; pStair->setLayer(idLayStair); pStair->SetSFPXStair(data); pStair->SetSection(data.dBarSize[0], 0.0); AcGePoint3d ptS = AcGePoint3d::kOrigin + AcGeVector3d::kYAxis * 100; 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 CYHLTDlg::PreView2d() { AcDbObjectId idLayStair = KTSetting::InitLayer(_T("LAY_CSTAIR"), true); AecDbArcSegStair* pStair = new AecDbArcSegStair; SFSPStair data; ::memset(&data, 0, sizeof(SFSPStair)); 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 CYHLTDlg::GetSFPXStair(SFPXStair& data) { data.nRestShape = m_bInOutCirRef; //内圆定位 外圆定位 data.dRestPtW = m_dInR; // 内圆半径 data.dRestPtL = m_dOutR; // 外圆半径 data.dRestPtMW = m_dStaAngle; // 起始角度 data.dRestPtML = m_dCenterAngle; // 圆心角 data.bOutSideRail = m_bClockWise; // 顺时针, 逆时针 data.dSteepH = m_dSteepH; // 踏步高度 data.nSteepS = m_nSteep; // 踏步数目 data.dSteepW = m_dW; // 梯段宽度 data.dH = m_dH; // 梯段高度 data.dBomEl = m_dBomEl; // 底踏步高 data.bLBeam = m_bLBeam; // 左边梁 data.bRBeam = m_bRBeam; // 右边梁 data.nSteepAlign = m_nSymbol; // 剖断符号 data.bOutSideHRail = m_bSlope; // 坡道用途 data.bDimUpstair = m_bNonslip; // 防滑条 data.nGShape = m_bSlopeBase; // 三角落地结构 data.bInsideRail = m_bGuardBar; // 护栏 data.dBarH = m_dBarH; // 护栏高 data.dBarSide = m_dBarSp; // 间距 data.dGarSize[1] = m_dBarH1; // 高度 data.dGarSize[0] = m_dBarD; // 护栏管径 /*_tcscpy(data.m_sMaterial,m_sMaterial); _tcscpy(data.m_sFactory,m_sFactory); _tcscpy(data.m_sNo,m_sNo);*/ } void CYHLTDlg::SetSFPXStair(const SFPXStair& data) { m_bInOutCirRef = data.nRestShape; //内圆定位 外圆定位 m_dInR = data.dRestPtW; // 内圆半径 m_dOutR = data.dRestPtL; // 外圆半径 m_dStaAngle = data.dRestPtMW; // 起始角度 m_dCenterAngle = data.dRestPtML; // 圆心角 m_bClockWise = data.bOutSideRail; // 顺时针, 逆时针 m_dSteepH = data.dSteepH; // 踏步高度 m_nSteep = data.nSteepS; // 踏步数目 m_dW = data.dSteepW; // 梯段宽度 m_dH = data.dH; // 梯段高度 m_dBomEl = data.dBomEl; // 底踏步高 m_bLBeam = data.bLBeam; // 左边梁 m_bRBeam = data.bRBeam; // 右边梁 m_nSymbol = data.nSteepAlign; // 剖断符号 m_bSlope = data.bOutSideHRail; // 坡道用途 m_bNonslip = data.bDimUpstair; // 防滑条 m_bSlopeBase = data.nGShape; // 三角落地结构 m_bGuardBar = data.bInsideRail; // 护栏 m_dBarH = data.dBarH; // 护栏高 m_dBarSp = data.dBarSide; // 间距 m_dBarH1 = data.dGarSize[1]; // 高度 m_dBarD = data.dGarSize[0]; // 护栏管径 }