📄 sdt09.cpp
字号:
// sdt09.cpp : implementation file
//
// Sdt12 - 水泥土墙基坑支护计算
#include "stdafx.h"
#include "Sdt.h"
#include "sdt09.h"
#include "adslib.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define Pi 3.1415926
/////////////////////////////////////////////////////////////////////////////
// Csdt09 dialog
Csdt09::Csdt09(CWnd* pParent /*=NULL*/)
: CDialog(Csdt09::IDD, pParent)
{
//{{AFX_DATA_INIT(Csdt09)
m_h = 3.0;
m_c = 20.0;
m_q = 20.0;
m_t = 0.0;
m_u = 0.25;
m_a = 20.0;
m_b = 1.2;
m_g = 18.0;
m_l = 0.0;
m_f = 2.0;
m_qg = 18.5;
m_jss = FALSE;
m_gcm = _T("Zzz");
//}}AFX_DATA_INIT
}
void Csdt09::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Csdt09)
DDX_Text(pDX, IDC_EDITkh, m_h);
DDV_MinMaxDouble(pDX, m_h, 1., 6.);
DDX_Text(pDX, IDC_EDITlc, m_c);
DDX_Text(pDX, IDC_EDITmq, m_q);
DDX_Text(pDX, IDC_EDITmt, m_t);
DDX_Text(pDX, IDC_EDITmu, m_u);
DDX_Text(pDX, IDC_EDITpa, m_a);
DDX_Text(pDX, IDC_EDITqb, m_b);
DDX_Text(pDX, IDC_EDITtg, m_g);
DDX_Text(pDX, IDC_EDITzl, m_l);
DDX_Text(pDX, IDC_EDITqf, m_f);
DDX_Text(pDX, IDC_EDITqg, m_qg);
DDX_Check(pDX, IDC_CHECKjss09, m_jss);
DDX_Text(pDX, IDC_EDITgcm09, m_gcm);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Csdt09, CDialog)
//{{AFX_MSG_MAP(Csdt09)
ON_BN_CLICKED(IDC_BUTTONjs, OnBUTTONjs)
ON_BN_CLICKED(IDC_BTSdtHelp9, OnBTSdtHelp9)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Csdt09 message handlers
void Csdt09::OnBUTTONjs()
{
int flag;
double t;
double ka,kp,eq,ea,ep,fa,fp,ha,hp,w,pa;
double kh,kq,kz;
CString msg="墙厚度不够,请增大墙厚b.";
UpdateData(TRUE);
pa=m_a*Pi/180.0;
ka=tan(Pi/4.0-pa/2.0)*tan(Pi/4.0-pa/2.0);
kp=tan(Pi/4.0+pa/2.0)*tan(Pi/4.0+pa/2.0);
for(t=0.4*m_h;t<=1.8*m_h;t+=0.1) {
eq=m_q*ka;
ea=m_g*(m_h+t)*ka-2*m_c*sqrt(ka);
ep=m_g*t*kp+2*m_c*sqrt(kp);
fa=(eq+ea/2.0)*(m_h+t);
ha=(3*eq+ea)*(m_h+t)/(6*eq+3*ea);
fp=ep*t/2.0;
hp=t/3.0;
w=m_b*(m_h+t)*1.0*m_qg;
kh=(m_u*w+fp)/fa;
kq=(w*m_b/2.0+fp*hp)/fa*ha;
kz=m_f*1e3/(w/m_b);
if(kh>=1.3 && kq>=1.5 && kz>=1.2) {
m_t=t; flag=1; break;}
flag=0;
}
if(flag==0) { AfxMessageBox(msg);return;}
m_t*=1.2;
m_l=m_h+m_t;
UpdateData(FALSE);
if(m_jss == TRUE){
FILE *ou;
CString flname;
if(m_gcm =="") {AfxMessageBox("请输入工程名!"); return;}
flname=m_gcm + ".txt";
ou=fopen(flname,"a");
fprintf(ou,"\n\n\n");
fprintf(ou,"\n ***********************************************************************");
fprintf(ou,"\n *** 结 构 设 计 计 算 书 ***");
fprintf(ou,"\n *** ***");
fprintf(ou,"\n *** Sdt12 - 水泥土墙基坑支护计算 ***");
fprintf(ou,"\n ************************************************* Zgs 2002 ******");
fprintf(ou,"\n\n 工程名称: %s",m_gcm);
fprintf(ou,"\n\n1. 已知数据\n");
fprintf(ou,"\n 基坑深度 H=%6.2f(m), 土体内摩擦角(加权平均值)ψ=%6.2f",m_h,m_a);
fprintf(ou,"\n 土体内粘聚力(加权平均值) C=%6.2f(kN/m/m),土体重力密度(加权平均值)γ=%6.2f",
m_c,m_g);
fprintf(ou,"\n 水泥土重力密度γcs=%6.2f, 水泥土强度 Fcs=%6.2f(MPa)",m_qg,m_f);
fprintf(ou,"\n 基底摩擦系数 μ=%6.2f, 地面超载 Q=%6.2f(kN/m/m)",m_u,m_q);
fprintf(ou,"\n\n2. 计算结果\n");
fprintf(ou,"\n 水泥土墙厚度 B=%7.3f(m)",m_b);
fprintf(ou,"\n 水泥土墙埋入深度 T=%7.3f(m)",m_t);
fprintf(ou,"\n 水泥土墙总长度 L=%7.3f(m)",m_l);
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 Csdt09::OnBTSdtHelp9()
{
ads_help("sdt2002.hlp","SDT12",0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -