353 lines
8.3 KiB
C++
353 lines
8.3 KiB
C++
#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]; // 护栏管径
|
|
}
|