⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdt05.cpp

📁 AutoCAD平台结构设计工具 按最新国家结构设计规范编写.
💻 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 + -