Files
envi-code/SourceCode/Code2026/ArchCmd/YHLTDlg.cpp
T
2026-09-28 15:28:50 +08:00

353 lines
8.1 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]; // 护栏管径
}