📄 sdt08.cpp
字号:
// sdt08.cpp : implementation file
//
// Sdt06 - 水平曲梁计算
#include "stdafx.h"
#include "Sdt.h"
#include "sdt08.h"
#include "math.h"
#include "adslib.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define Pi 3.1415926
/////////////////////////////////////////////////////////////////////////////
// Csdt08 dialog
Csdt08::Csdt08(CWnd* pParent /*=NULL*/)
: CDialog(Csdt08::IDD, pParent)
{
//{{AFX_DATA_INIT(Csdt08)
m_mcc = 0.0;
m_mcr = 0.0;
m_mzr = 0.0;
m_mzc = 0.0;
m_qc = 20.0;
m_qr = 20.0;
m_tc = 0.0;
m_tr = 0.0;
m_vc = 0.0;
m_vr = 0.0;
m_ar = 45.0;
m_ct = 45.0;
m_aa = 3.0;
m_rc = 3.0;
m_jss = FALSE;
m_lh = _T("QL-1");
m_gcm = _T("Zzz");
//}}AFX_DATA_INIT
}
void Csdt08::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Csdt08)
DDX_Control(pDX, IDC_RADIO11, m_ra);
DDX_Control(pDX, IDC_COMBOhr, m_hr);
DDX_Control(pDX, IDC_COMBOhc, m_hc);
DDX_Control(pDX, IDC_COMBObr, m_br);
DDX_Control(pDX, IDC_COMBObc, m_bc);
DDX_Text(pDX, IDC_EDITmcc, m_mcc);
DDX_Text(pDX, IDC_EDITmcr, m_mcr);
DDX_Text(pDX, IDC_EDITmzr, m_mzr);
DDX_Text(pDX, IDC_EDITmzc, m_mzc);
DDX_Text(pDX, IDC_EDITqc, m_qc);
DDX_Text(pDX, IDC_EDITqr, m_qr);
DDX_Text(pDX, IDC_EDITtc, m_tc);
DDX_Text(pDX, IDC_EDITtr, m_tr);
DDX_Text(pDX, IDC_EDITvc, m_vc);
DDX_Text(pDX, IDC_EDITvr, m_vr);
DDX_Text(pDX, IDC_EDITar, m_ar);
DDV_MinMaxDouble(pDX, m_ar, 15., 75.);
DDX_Text(pDX, IDC_EDITct, m_ct);
DDX_Text(pDX, IDC_EDITaa, m_aa);
DDX_Text(pDX, IDC_EDITrc, m_rc);
DDX_Check(pDX, IDC_CHECKjss08, m_jss);
DDX_Text(pDX, IDC_EDITlh08, m_lh);
DDX_Text(pDX, IDC_EDITgcm08, m_gcm);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Csdt08, CDialog)
//{{AFX_MSG_MAP(Csdt08)
ON_BN_CLICKED(IDC_BUTTONjsc, OnBUTTONjsc)
ON_BN_CLICKED(IDC_BUTTONjsl, OnBUTTONjsl)
ON_BN_CLICKED(IDC_BTSdtHelp8, OnBTSdtHelp8)
ON_BN_CLICKED(IDC_BUTTONjsdk, OnBUTTONjsdk)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Csdt08 message handlers
CString Bc[]={ "150","200","250","300","350","400","450","500",
"600" };//9
CString Hc[]={ "200","250","300","350","400","450","500","550",
"600","700","800","900","1000" };//13
CString Br[]={ "150","200","250","300","350","400","450","500",
"600" };//9
CString Hr[]={ "200","250","300","350","400","450","500","550",
"600","700","800","900","1000" };//13
double hbla[2][8]={ {1.0,1.2,1.4,1.6,1.8,2.0,2.5,3.0},// h/b
{1.38,1.69,2.04,2.44,2.90,3.39,4.88,6.65} }; // λ
double q,p,b,h,hb,la;
int iRadio,kk;
CString val,f8;
BOOL Csdt08::OnInitDialog()
{
CDialog::OnInitDialog();
CheckRadioButton(IDC_RADIO11,IDC_RADIO12,IDC_RADIO11);
for(int i=0;i<9;i++) {
m_bc.AddString(Bc[i]); m_br.AddString(Br[i]); }
m_bc.SetCurSel(2); m_br.SetCurSel(2);
for(i=0;i<13;i++) {
m_hc.AddString(Hc[i]); m_hr.AddString(Hr[i]); }
m_hc.SetCurSel(4); m_hr.SetCurSel(4);
return TRUE;
}
CString flname8;
void Csdt08::OnBUTTONjsc()
{
double qr,pr,cta,ka,kb,pha;
UpdateData(TRUE);
cta=m_ct*Pi/180.0;
m_bc.GetLBText(m_bc.GetCurSel(),val);
b=atof(val);
m_hc.GetLBText(m_hc.GetCurSel(),val);
h=atof(val);
hb=h/b;
if(hb<=1.0) la=1.38;
if(hb>=3.0) la=6.65;
for(int i=0;i<7;i++)
if(hb>=hbla[0][i] && hb<hbla[0][i+1]) {kk=i; break;}
la=hbla[1][kk]+(hb-hbla[0][kk])/(hbla[0][kk+1]
-hbla[0][kk])*(hbla[1][kk+1]-hbla[1][kk]);
iRadio=GetCheckedRadioButton(IDC_RADIO11,IDC_RADIO12);
if(iRadio==IDC_RADIO11) { //QQQ
q=m_qc;
qr=q*m_rc*m_rc;
ka=4*(la+1)*sin(cta)-2*cta*(la+1)+(la-1)*sin(2*cta)-4*la*cta*cos(cta);
kb=2*cta*(la+1)-(la-1)*sin(2*cta);
m_mcc=qr*ka/kb;
f8.Format("%8.3f",m_mcc);
m_mcc=atof(f8);
m_mzc=m_mcc*cos(cta)-qr*(1-cos(cta));
f8.Format("%8.3f",m_mzc);
m_mzc=atof(f8);
pha=acos(qr/(m_mcc+qr));
m_tc=m_mcc*sin(pha)-qr*(pha-sin(pha));
f8.Format("%8.3f",m_tc);
m_tc=atof(f8);
m_vc=cta*q*m_rc;
f8.Format("%8.3f",m_vc);
m_vc=atof(f8);
}
if(iRadio==IDC_RADIO12) { //PPP
p=m_qc;
pr=p*m_rc;
ka=(la-1)*(cos(2*cta-1))+4*la*(1-cos(cta));
kb=4*cta*(la+1)-2*(la-1)*sin(2*cta);
m_mcc=pr*ka/kb;
f8.Format("%8.3f",m_mcc);
m_mcc=atof(f8);
m_mzc=m_mcc*cos(cta)-pr*sin(cta)/2.0;
f8.Format("%8.3f",m_mzc);
m_mzc=atof(f8);
pha=atan(2*m_mcc/pr);
m_tc=m_mcc*sin(pha)-pr*(1-cos(pha))/2.0;
f8.Format("%8.3f",m_tc);
m_tc=atof(f8);
m_vc=p/2.0;
f8.Format("%8.3f",m_vc);
m_vc=atof(f8);
}
UpdateData(FALSE);
if(m_jss == TRUE){
FILE *ou;
if(m_gcm =="") {AfxMessageBox("请输入工程名!"); return;}
flname8=m_gcm + ".txt";
ou=fopen(flname8,"a");
fprintf(ou,"\n\n\n");
fprintf(ou,"\n***********************************************************************");
fprintf(ou,"\n*** 结 构 设 计 计 算 书 ***");
fprintf(ou,"\n*** ***");
fprintf(ou,"\n*** Sdt06 - 水平曲梁计算 ***");
fprintf(ou,"\n************************************************* Zgs 2006 *******");
fprintf(ou,"\n\n 工程名称: %s 构件编号: %s",m_gcm,m_lh);
fprintf(ou,"\n\n1. 已知数据\n");
if(iRadio==IDC_RADIO11) //QQQ
fprintf(ou,"\n 水平弧梁: 满跨均布荷载 Q=%8.3f(kN/m)",q);
if(iRadio==IDC_RADIO12) //PPP
fprintf(ou,"\n 水平弧梁: 跨中集中荷载 P=%8.3f(kN)",p);
fprintf(ou,"\n 弧梁半径 R=%8.3f(m), 弧圆心角之半 θ=%6.2f(度)",m_rc,m_ct);
fprintf(ou,"\n 梁宽 B=%5.0f (mm), 梁高 H=%5.0f (mm)",b,h);
fprintf(ou,"\n\n2. 计算结果\n");
fprintf(ou,"\n 跨中弯矩 Mc=%8.3f(kN-m), 支座弯矩 Mz=%8.3f(kN-m)",m_mcc,m_mzc);
fprintf(ou,"\n 最大扭矩 Tmax=%8.3f(kN-m), 最大剪力 Vmax=%8.3f(kN)",m_tc,m_vc);
time_t tad;
char *buf;
buf=(char*)calloc(80,sizeof(char));
if(buf==NULL) exit(-1);
tad=time(NULL);
strftime(buf,80,"%A %B %d,%Y",localtime(&tad));
fprintf(ou,"\n\n 设计人:");
fprintf(ou,"\n %s",buf);
fclose(ou);
}
}
void Csdt08::OnBUTTONjsl()
{
double qa,pa,ar;
UpdateData(TRUE);
ar=m_ar*Pi/180.0;
m_br.GetLBText(m_br.GetCurSel(),val);
b=atof(val);
m_hr.GetLBText(m_hr.GetCurSel(),val);
h=atof(val);
hb=h/b;
if(hb<=1.0) la=1.38;
if(hb>=3.0) la=6.65;
for(int i=0;i<7;i++)
if(hb>hbla[0][i] && hb<hbla[0][i+1]) kk=i;
la=hbla[1][kk]+(hb-hbla[0][kk])/(hbla[0][kk+1]
-hbla[0][kk])*(hbla[1][kk+1]-hbla[1][kk]);
iRadio=GetCheckedRadioButton(IDC_RADIO11,IDC_RADIO12);
if(iRadio==IDC_RADIO11) { //QQQ
q=m_qr;
qa=q*m_aa*m_aa;
m_mcr=qa*sin(ar)*sin(ar)/(sin(ar)*sin(ar)
+la*cos(ar)*cos(ar))/6.0;
f8.Format("%8.3f",m_mcr);
m_mcr=atof(f8);
m_mzr=m_mcr-qa/2.0;
f8.Format("%8.3f",m_mzr);
m_mzr=atof(f8);
m_tr=qa*sin(ar)*cos(ar)/(sin(ar)*sin(ar)
+la*cos(ar)*cos(ar))/6.0;
f8.Format("%8.3f",m_tr);
m_tr=atof(f8);
m_vr=q*m_aa;
f8.Format("%8.3f",m_vr);
m_vr=atof(f8);
}
if(iRadio==IDC_RADIO12) { //PPP
p=m_qr;
pa=p*m_aa;
m_mcr=pa*sin(ar)*sin(ar)/(sin(ar)*sin(ar)
+la*cos(ar)*cos(ar))/4.0;
f8.Format("%8.3f",m_mcr);
m_mcr=atof(f8);
m_mzr=m_mcr-pa/2.0;
f8.Format("%8.3f",m_mzr);
m_mzr=atof(f8);
m_tr=pa*sin(ar)*cos(ar)/(sin(ar)*sin(ar)
+la*cos(ar)*cos(ar))/4.0;
f8.Format("%8.3f",m_tr);
m_tr=atof(f8);
m_vr=p/2.0;
f8.Format("%8.3f",m_vr);
m_vr=atof(f8);
}
UpdateData(FALSE);
if(m_jss == TRUE){
FILE *ou;
flname8=m_gcm + ".txt";
ou=fopen(flname8,"a");
fprintf(ou,"\n\n\n");
fprintf(ou,"\n***********************************************************************");
fprintf(ou,"\n*** 结 构 设 计 计 算 书 ***");
fprintf(ou,"\n*** ***");
fprintf(ou,"\n*** Sdt06 - 水平曲梁计算 ***");
fprintf(ou,"\n************************************************* Zgs 2006 *******");
fprintf(ou,"\n\n 工程名称: %s 构件编号: %s",m_gcm,m_lh);
fprintf(ou,"\n\n1. 已知数据\n");
if(iRadio==IDC_RADIO11) //QQQ
fprintf(ou,"\n 水平折梁: 满跨均布荷载 Q=%8.3f(kN/m)",q);
if(iRadio==IDC_RADIO12) //PPP
fprintf(ou,"\n 水平折梁: 跨中集中荷载 P=%8.3f(kN)",p);
fprintf(ou,"\n 折梁尺寸 a=%8.3f(m), 夹角之半 α=%6.2f(度)",m_aa,m_ar);
fprintf(ou,"\n 梁宽 B=%5.0f (mm), 梁高 H=%5.0f (mm)",b,h);
fprintf(ou,"\n\n2. 计算结果\n");
fprintf(ou,"\n 跨中弯矩 Mc=%8.3f(kN-m), 支座弯矩 Mz=%8.3f(kN-m)",m_mcr,m_mzr);
fprintf(ou,"\n 最大扭矩 Tmax=%8.3f(kN-m), 最大剪力 Vmax=%8.3f(kN)",m_tr,m_vr);
time_t tad;
char *buf;
buf=(char*)calloc(80,sizeof(char));
if(buf==NULL) exit(-1);
tad=time(NULL);
strftime(buf,80,"%A %B %d,%Y",localtime(&tad));
fprintf(ou,"\n\n 设计人:");
fprintf(ou,"\n %s",buf);
fclose(ou);
}
}
void Csdt08::OnBTSdtHelp8()
{
acedHelp("SdtR2x.hlp","SDT06",0);
}
void Csdt08::OnBUTTONjsdk()
{
// TODO: Add your control notification handler code here
acedCommand(RTSTR,"NOTEPAD",RTSTR,flname8,RTNONE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -