Files
envi-code/SourceCode/Code2026/Pool3dCmd/FZDJDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

253 lines
4.3 KiB
C++

#include "stdafx.h"
#include "StdArx.h"
#include "FZDJDlg.h"
#include "KTCadUtility.h"
IMPLEMENT_DYNAMIC(CFZDJDlg, CDialog)
CFZDJDlg::CFZDJDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFZDJDlg::IDD, pParent)
, m_nN(3)
, m_dV(600.0)
, m_dTopEl(0)
, m_dL(1000)
, m_dW(60.0)
, m_dt(3.0)
, m_nHs(2)
, m_bOneHs(FALSE)
, m_bCirHs(FALSE)
, m_dD(8.0)
, m_sMaterial(_T("普通碳钢"))
, m_sPurpose(_T(""))
, m_dX(1000)
{
GET_CACHE(CFZDJDlg
, %f%f%f%f%f%f%f%s%s%d%d%d%d
, &m_dV
, &m_dTopEl
, &m_dL
, &m_dW
, &m_dt
, &m_dD
, &m_dX
, &m_sMaterial
, &m_sPurpose
, &m_nN
, &m_nHs
, &m_bOneHs
, &m_bCirHs);
}
CFZDJDlg::~CFZDJDlg()
{
}
void CFZDJDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_dV);
DDX_Text(pDX, IDC_EDIT2, m_dTopEl);
DDX_Text(pDX, IDC_EDIT38, m_dL);
DDX_Text(pDX, IDC_EDIT10, m_dW);
DDX_Text(pDX, IDC_EDIT36, m_dt);
DDX_Text(pDX, IDC_EDIT11, m_dD);
DDX_Text(pDX, IDC_EDIT13, m_dX);
DDX_Text(pDX, IDC_EDIT34, m_sMaterial);
DDX_Text(pDX, IDC_EDIT35, m_sPurpose);
DDX_Text(pDX, IDC_EDIT3, m_nN);
DDX_Text(pDX, IDC_EDIT12, m_nHs);
DDX_Check(pDX, IDC_CHECK1, m_bOneHs);
DDX_Check(pDX, IDC_CHECK2, m_bCirHs);
}
BEGIN_MESSAGE_MAP(CFZDJDlg, CDialog)
ON_BN_CLICKED(IDOK, &CFZDJDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_CHECK1, &CFZDJDlg::OnBnClickedCheck1)
ON_BN_CLICKED(IDC_CHECK2, &CFZDJDlg::OnBnClickedCheck2)
ON_BN_CLICKED(IDC_BUTTON1, &CFZDJDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
BOOL CFZDJDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(FALSE);
return TRUE;
}
void CFZDJDlg::OnBnClickedOk()
{
UpdateData(TRUE);
if (m_nN < 1 && !m_bOneHs)
{
AfxMessageBox(_T("非单杆情况水平支杆行数必须大于1"));
return;
}
if ( !m_bOneHs )
{
if (m_dV < 10.0 || m_dL < 10.0 || m_dW < 1.0 || m_dt < 1.0 || m_nHs < 1)
{
AfxMessageBox(_T("非单杆情况,吊架参数不正确!"));
return;
}
}
else
{
if (m_dD < 1.e-1)
{
AfxMessageBox(_T("单杆吊架参数不正确!"));
return;
}
}
SET_CACHE(CFZDJDlg
, %f%f%f%f%f%f%f%s%s%d%d%d%d
, m_dV
, m_dTopEl
, m_dL
, m_dW
, m_dt
, m_dD
, m_dX
, m_sMaterial
, m_sPurpose
, m_nN
, m_nHs
, m_bOneHs
, m_bCirHs);
OnOK();
}
void CFZDJDlg::OnBnClickedCheck1()
{
UpdateData();
if (m_bOneHs)
{
m_nN = 1;
}
UpdateData(FALSE);
}
void CFZDJDlg::OnBnClickedCheck2()
{
UpdateData();
}
void CFZDJDlg::GetHolder(XHanger& holder) const
{
/*
// 吊杆数 1,2,3...
int nHs;
// 行数
int N;
// 吊杆直径
double dD;
// 是否角钢吊杆
BOOL bdDAsW;
// 行间距(m)
double V;
// 支架臂长度(mm)
double L;
// 角钢宽度(mm)
double W;
// 角钢厚度(mm)
double t;
// 材质
TCHAR szMat[33];
// 用途
TCHAR szUsage[33];
//预留
double dResv[6];
int nResv[6];
TCHAR szResv[MAX_PATH];
*/
holder.nHs = m_nHs;
holder.N = m_nN;
holder.dD = m_dD;
holder.bdDAsW = m_bCirHs ? FALSE : TRUE;
holder.V = m_dV;
holder.L = m_dL;
holder.W = m_dW;
holder.t = m_dt;
_tcscpy(holder.szMat,m_sMaterial);
_tcscpy(holder.szUsage,m_sPurpose);
}
void CFZDJDlg::SetFromID(AcDbObjectId& id)
{
AcDbEntity* pEnt = NULL;
if (Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
{
AecDbHanger* pHanger = AecDbHanger::cast(pEnt);
if (pHanger != NULL)
{
XHanger holder;
pHanger->GetHanger(holder);
m_nHs = holder.nHs = m_nHs;
m_nN = holder.N = m_nN;
m_dD = holder.dD = m_dD;
m_bCirHs = holder.bdDAsW ? FALSE : TRUE;
m_dV = holder.V;
m_dL = holder.L;
m_dW = holder.W;
m_dt = holder.t;
m_sMaterial = holder.szMat;
m_sPurpose = holder.szUsage;
}
pEnt->close();
}
}
void CFZDJDlg::OnBnClickedButton1()
{
UpdateData(TRUE);
acedGetAcadFrame()->EnableWindow(TRUE);
ShowWindow(SW_HIDE);
acedGetAcadFrame()->SetFocus();
ads_name ent;
struct resbuf* pRb = acutBuildList(RTDXF0, _T("AEC_DBSLAB"), 0);
int nRes = CKTCadUtility::SelectEntity(_T("\n请选择板计算板底标高:"), ent, pRb);
acutRelRb(pRb);
if (nRes == RTNORM)
{
AcDbObjectId id;
acdbGetObjectId(id,ent);
AcDbEntity* pEnt = NULL;
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
{
AecDbXSlab* pSlab = AecDbXSlab::cast(pEnt);
if (pSlab != NULL)
{
m_dTopEl = pSlab->GetElBom();
}
pEnt->close();
}
}
ShowWindow(SW_SHOW);
SetFocus();
acedGetAcadFrame()->EnableWindow(FALSE);
EnableWindow(TRUE);
UpdateData(FALSE);
}