📄 sdt05.cpp
字号:
// sdt05.cpp : implementation file
//
// Sdt11 - 地基沉降计算
//
// GB2002规范 AutoCAD版
#include "stdafx.h"
#include "Sdt.h"
#include "sdt05.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
float jiua(float xa,float xb,float b,float n);
float jiuy(float x,float b,float n);
/////////////////////////////////////////////////////////////////////////////
// Csdt05 dialog
Csdt05::Csdt05(CWnd* pParent /*=NULL*/)
: CDialog(Csdt05::IDD, pParent)
{
//{{AFX_DATA_INIT(Csdt05)
m_b = 20.0f;
m_fk = 100.0f;
m_l = 30.0f;
m_l1 = 10.0f;
m_l10 = 0.0f;
m_l2 = 10.0f;
m_l3 = 10.0f;
m_l4 = 0.0f;
m_l5 = 0.0f;
m_l6 = 0.0f;
m_l7 = 0.0f;
m_l8 = 0.0f;
m_l9 = 0.0f;
m_p0 = 80.0f;
m_es10 = 0.0f;
m_es2 = 20.0f;
m_es3 = 30.0f;
m_es4 = 0.0f;
m_es5 = 0.0f;
m_es1 = 10.0f;
m_es6 = 0.0f;
m_es7 = 0.0f;
m_es8 = 0.0f;
m_es9 = 0.0f;
m_s = 0.0f;
m_z = 0.0f;
m_zn = 0.0f;
m_n = 3;
m_jss = FALSE;
m_gcm = _T("Zzz");
//}}AFX_DATA_INIT
}
void Csdt05::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Csdt05)
DDX_Control(pDX, IDC_RADIO7, m_ra);
DDX_Text(pDX, IDC_EDITb, m_b);
DDX_Text(pDX, IDC_EDITfk, m_fk);
DDX_Text(pDX, IDC_EDITl, m_l);
DDX_Text(pDX, IDC_EDITl1, m_l1);
DDX_Text(pDX, IDC_EDITl10, m_l10);
DDX_Text(pDX, IDC_EDITl2, m_l2);
DDX_Text(pDX, IDC_EDITl3, m_l3);
DDX_Text(pDX, IDC_EDITl4, m_l4);
DDX_Text(pDX, IDC_EDITl5, m_l5);
DDX_Text(pDX, IDC_EDITl6, m_l6);
DDX_Text(pDX, IDC_EDITl7, m_l7);
DDX_Text(pDX, IDC_EDITl8, m_l8);
DDX_Text(pDX, IDC_EDITl9, m_l9);
DDX_Text(pDX, IDC_EDITp0, m_p0);
DDX_Text(pDX, IDC_EDITqs10, m_es10);
DDX_Text(pDX, IDC_EDITqs2, m_es2);
DDX_Text(pDX, IDC_EDITqs3, m_es3);
DDX_Text(pDX, IDC_EDITqs4, m_es4);
DDX_Text(pDX, IDC_EDITqs5, m_es5);
DDX_Text(pDX, IDC_EDITqs1, m_es1);
DDX_Text(pDX, IDC_EDITqs6, m_es6);
DDX_Text(pDX, IDC_EDITqs7, m_es7);
DDX_Text(pDX, IDC_EDITqs8, m_es8);
DDX_Text(pDX, IDC_EDITqs9, m_es9);
DDX_Text(pDX, IDC_EDITs, m_s);
DDX_Text(pDX, IDC_EDITz, m_z);
DDX_Text(pDX, IDC_EDITzn, m_zn);
DDX_Text(pDX, IDC_EDITn, m_n);
DDV_MinMaxInt(pDX, m_n, 1, 10);
DDX_Check(pDX, IDC_CHECKjss05, m_jss);
DDX_Text(pDX, IDC_EDITgcm06, m_gcm);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Csdt05, CDialog)
//{{AFX_MSG_MAP(Csdt05)
ON_BN_CLICKED(IDC_BUTTONjs, OnBUTTONjs)
ON_BN_CLICKED(IDC_BTSdtHelp5, OnBTSdtHelp5)
ON_BN_CLICKED(IDC_BUTTONjssdk, OnBUTTONjssdk)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Csdt05 message handlers
BOOL Csdt05::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO:
CheckRadioButton(IDC_RADIO7,IDC_RADIO8,IDC_RADIO7);
return TRUE;
}
CString flname5;
void Csdt05::OnBUTTONjs()
{
int k,iRadio,ke;
float l,b,n,ss,sa,se,xa,xb,a,es,u;
static float z[12],h[11],e[11];
CString msg,f5;
UpdateData(TRUE);
k=m_n;
m_zn=m_b*(2.5-0.4*logf(m_b));
f5.Format("%8.3f",m_zn);
m_zn=atof(f5);
iRadio=GetCheckedRadioButton(IDC_RADIO7,IDC_RADIO8);
if(iRadio==IDC_RADIO7) {l=m_l/2.0;b=m_b/2.0; msg="基础中心点沉降:";}
if(iRadio==IDC_RADIO8) {l=m_l; b=m_b; msg="基础角点沉降:";}
h[1]=m_l1;h[2]=m_l2;h[3]=m_l3;h[4]=m_l4;h[5]=m_l5;
h[6]=m_l6;h[7]=m_l7;h[8]=m_l8;h[9]=m_l9;h[10]=m_l10;
e[1]=m_es1;e[2]=m_es2;e[3]=m_es3;e[4]=m_es4;e[5]=m_es5;
e[6]=m_es6;e[7]=m_es7;e[8]=m_es8;e[9]=m_es9;e[10]=m_es10;
z[0]=0.0;
for(int i=1;i<=k;i++) z[i]=z[i-1]+h[i];
n=l/b;
ss=sa=se=0.0;
for(i=1;i<=k;i++) {
xa=z[i-1];xb=xa+h[i];
a=jiua(xa,xb,b,n);
sa+=a;
se+=a/e[i];
ss+=a*m_p0/e[i];
}
es=sa/se;
float w[3][5]={ {2.5f,4.0f,7.0f,15.0f,20.0f},
{1.4f,1.3f,1.0f,0.4f,0.2f},
{1.1f,1.0f,0.7f,0.4f,0.2f} };
for(int j=0;j<4;j++)
if(es>=w[0][j] && es<w[0][j+1]) {ke=j;break;}
if(m_p0>=m_fk) u=w[1][ke]+(w[1][ke+1]-w[1][ke])
*(es-w[0][ke])/(w[0][ke+1]-w[0][ke]);
else u=w[2][ke]+(w[2][ke+1]-w[2][ke])
*(es-w[0][ke])/(w[0][ke+1]-w[0][ke]);
ss*=u;
m_z=z[k];
f5.Format("%8.3f",m_z);
m_z=atof(f5);
if(iRadio==IDC_RADIO7) m_s=4*ss;//中心点
if(iRadio==IDC_RADIO8) m_s=ss;//角点
f5.Format("%8.3f",m_s);
m_s=atof(f5);
UpdateData(FALSE);
if(m_jss == TRUE){
FILE *ou;
if(m_gcm =="") {AfxMessageBox("请输入工程名!"); return;}
flname5=m_gcm + ".txt";
ou=fopen(flname5,"a");
fprintf(ou,"\n\n\n");
fprintf(ou,"\n***********************************************************************");
fprintf(ou,"\n*** 结 构 设 计 计 算 书 ***");
fprintf(ou,"\n*** ***");
fprintf(ou,"\n*** Sdt11 - 地基沉降计算 ***");
fprintf(ou,"\n************************************************* Zgs 2006 ********");
fprintf(ou,"\n\n 工程名称: %s",m_gcm);
fprintf(ou,"\n\n1. 已知数据\n");
fprintf(ou,"\n %s, 基础长度 L=%8.3f(m),基础宽度 B=%8.3f(m)",msg,m_l,m_b);
fprintf(ou,"\n 地基承载力特征值 Fak=%8.3f(kPa), 基底附加应力 P0=%8.3f(kPa)",m_fk,m_p0);
fprintf(ou,"\n\n 场地土构成如下:");
for(int i=1;i<=k;i++)
fprintf(ou,"\n 第(%2d)层 厚度: %7.3f(m), 压缩模量: %8.3f(MPa)",i,h[i],e[i]);
fprintf(ou,"\n\n2. 计算结果\n");
fprintf(ou,"\n 计算深度 Z=%8.3f(m), 规范要求深度 Zn=b(2.5-0.4lnb)=%8.3f(m)",m_z,m_zn);
fprintf(ou,"\n 经验系数 ψs=%6.3f",u);
fprintf(ou,"\n 地基最终沉降量 S=%8.3f(mm)",m_s);
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);
}
}
////////////
//
float jiua(float xa,float xb,float b,float n)
{
int nn=8;
float a,hh,x;
hh=(xb-xa)/nn;
a=0.0;
x=xa;
a+=jiuy(x,b,n);
for(int i=1;i<nn;i++) {
x=xa+i*hh;
a+=2.0*jiuy(x,b,n);
}
a*=hh/2.0;
return a;
}
////////////
//
float jiuy(float x,float b,float n)
{
float m,za,zb,zc;
m=x/b;
za=sqrt(1.0+n*n+m*m);
zb=atanf(n/m/za);
zc=n*m*(1.0+n*n+2.0*m*m)/(n*n+m*m)/(1.0+m*m)/za;
return (zb+zc)/Pi/2.0;
}
void Csdt05::OnBTSdtHelp5()
{
acedHelp("SdtR2x.hlp","SDT11",0);
}
void Csdt05::OnBUTTONjssdk()
{
// TODO: Add your control notification handler code here
acedCommand(RTSTR,"NOTEPAD",RTSTR,flname5,RTNONE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -