253 lines
4.3 KiB
C++
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);
|
|
}
|