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

📄 sdt10.cpp

📁 AutoCAD平台结构设计工具 按最新国家结构设计规范编写.
💻 CPP
字号:
// sdt10.cpp : implementation file
//
// Sdt13 - 支护桩配筋计算    
// 
// GB2002规范 AutoCAD版
  
#include "stdafx.h"
#include "Sdt.h"
#include "sdt10.h"
#include "math.h"
#include "adslib.h"

#define Pi 3.1415926

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

int dnewt(double *x,double eps,int js);
void dnewtf(double x,double y[2]);
/////////////////////////////////////////////////////////////////////////////
// Csdt10 dialog


Csdt10::Csdt10(CWnd* pParent /*=NULL*/)
	: CDialog(Csdt10::IDD, pParent)
{
	//{{AFX_DATA_INIT(Csdt10)
	m_lg = 0.0;
	m_max = 0.0;
	m_c = 25.0;
	m_h = 5.0;
	m_pa = 30.0;
	m_q = 20.0;
	m_t = 0.0;
	m_g = 20.0;
	m_lm = 0.0;
	m_asp = 460.0;
	m_asr = 0.0;
	m_cta = 90.0;
	m_ctp = 0.0;
	m_hc = 20;
	m_d = 600.0;
	m_m = 0.0;
	m_s = 1.20;
	m_jss = FALSE;
	m_gcm = _T("Zzz");
	m_zhang = _T("Zh-1");
	//}}AFX_DATA_INIT
}


void Csdt10::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Csdt10)
	DDX_Text(pDX, IDC_EDITlg, m_lg);
	DDX_Text(pDX, IDC_EDITmax, m_max);
	DDX_Text(pDX, IDC_EDITzc, m_c);
	DDX_Text(pDX, IDC_EDITzh, m_h);
	DDX_Text(pDX, IDC_EDITzpa, m_pa);
	DDX_Text(pDX, IDC_EDITzq, m_q);
	DDX_Text(pDX, IDC_EDITzt, m_t);
	DDX_Text(pDX, IDC_EDITzg, m_g);
	DDX_Text(pDX, IDC_EDITmlm, m_lm);
	DDX_Text(pDX, IDC_EDITasp, m_asp);
	DDX_Text(pDX, IDC_EDITasr, m_asr);
	DDX_Text(pDX, IDC_EDITcta, m_cta);
	DDX_Text(pDX, IDC_EDITctp, m_ctp);
	DDX_Text(pDX, IDC_EDIThc, m_hc);
	DDV_MinMaxInt(pDX, m_hc, 20, 40);
	DDX_Text(pDX, IDC_EDITzd, m_d);
	DDX_Text(pDX, IDC_EDITzm, m_m);
	DDX_Text(pDX, IDC_EDITzs, m_s);
	DDX_Check(pDX, IDC_CHECKjss10, m_jss);
	DDX_Text(pDX, IDC_EDITgcm10, m_gcm);
	DDX_Text(pDX, IDC_EDITzhuang, m_zhang);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Csdt10, CDialog)
	//{{AFX_MSG_MAP(Csdt10)
	ON_BN_CLICKED(IDC_BUTTONjs, OnBUTTONjs)
	ON_BN_CLICKED(IDC_BUTTONjsa, OnBUTTONjsa)
	ON_EN_KILLFOCUS(IDC_EDITzs, OnKillfocusEDITzs)
	ON_BN_CLICKED(IDC_BTSdtHelp10, OnBTSdtHelp10)
	ON_BN_CLICKED(IDC_BUTTONjsdk, OnBUTTONjsdk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Csdt10 message handlers
	
CString flname10;
double a3,a2,a1,a0;  
void Csdt10::OnBUTTONjs() 
{
	double pa,ka,kp,gk,eq,ea,fa,ha,l,xm;
    CString val10;
	
	UpdateData(TRUE);
	
	pa=m_pa*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);
	gk=m_g*(kp-ka);

  	eq=m_q*ka;
	ea=m_g*m_h*ka-2*m_c*sqrt(ka);
	fa=(eq+ea/2.0)*m_h;
	ha=(3*eq+2*ea)*m_h/(6*eq+3*ea);
	l=m_h+(eq+ea)/gk;

	a3=1.0;//X3
	a2=0.0;//X2
	a1=-6*fa/gk;//X1 
	a0=-6*fa*(l-ha)/gk;//X0

	int js,k;
    double x,eps;
    eps=0.000001; js=100; x=2.0;
    k=dnewt(&x,eps,js);
    if (k>=0) m_t=1.2*x; 
	else return;
	
	xm=sqrt(2*fa/gk);

	m_t=1.2*x+(eq+ea)/gk;
	val10.Format("%6.3f",m_t); 
    m_t=atof(val10); 

	m_max=fa*(l-ha+xm) -gk*xm*xm*xm/6.0;
	val10.Format("%8.2f",m_max); 
    m_max=atof(val10);
	
	m_lg=m_h+m_t;
	val10.Format("%6.3f",m_lg); 
    m_lg=atof(val10); 

	m_lm=l+xm;
	val10.Format("%6.3f",m_lm); 
    m_lm=atof(val10); 
	
	m_m=1.3*m_s*m_max;
	val10.Format("%8.2f",m_m); 
    m_m=atof(val10);

	UpdateData(FALSE);

if(m_jss == TRUE){

	FILE *ou; 

	if(m_gcm=="") {AfxMessageBox("请输入工程名!"); return;}

	flname10=m_gcm + ".txt";
	ou=fopen(flname10,"a");

	fprintf(ou,"\n\n\n");
	
	fprintf(ou,"\n***********************************************************************");
	fprintf(ou,"\n***                       结 构 设 计 计 算 书                      ***");
	fprintf(ou,"\n***                                                                 ***");
	fprintf(ou,"\n***                    Sdt13 - 悬壁桩墙基坑支护计算                 ***");
	fprintf(ou,"\n*************************************************    Zgs 2002    ******");

	fprintf(ou,"\n\n   工程名称:  %s",m_gcm);
	
	fprintf(ou,"\n\n1. 已知数据\n");
	fprintf(ou,"\n   基坑深度 H=%6.2f(m)",m_h);
	fprintf(ou,"\n   土体内摩擦角(加权平均值)ψ=%6.2f, 土体内粘聚力(加权平均值) C=%6.2f(kN/m/m)", 
						m_pa,m_c);
	fprintf(ou,"\n   土体重力密度(加权平均值)γ=%6.2f, 地面超载    Q=%6.2f(kN/m/m)",m_g,m_q);
	
	fprintf(ou,"\n\n2. 计算结果\n");
	fprintf(ou,"\n   桩墙埋入深度      T=%7.3f(m)",m_t);
	fprintf(ou,"\n   桩墙总长度        L=%7.3f(m)",m_lg);
	fprintf(ou,"\n   桩墙最大弯矩   Mmax=%10.3f(m)",m_max);
	fprintf(ou,"\n   桩墙最大弯矩深度 Lm=%7.3f(m)",m_lm);
	
	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 Csdt10::OnBUTTONjsa() 
{
	double ar,ars,arp,y1,y2;
	double r,hs,rs,ao,as,ai;
	double m,fc,fy/*,tmp*/;
	CString msg1="C=20,25,30,35,40,45,50";
	CString msg2="不满足要求,请修改数据D,或S,或C,或A'sr!";

	UpdateData(TRUE);

	if(m_hc == 20)  fc=9.6 ;//C20
    else if(m_hc == 25)  fc=11.9; //C25
    else if(m_hc == 30)  fc=14.3 ;//C30
    else if(m_hc == 35)  fc=16.7 ;//C35
    else if(m_hc == 40)  fc=19.1 ;//C40
	else if(m_hc == 45)  fc=21.1 ;//C45
    else if(m_hc == 50)  fc=23.1 ;//C50
    else  { AfxMessageBox(msg1); return; }

	fy=300;
	hs=40;
	r=0.5*m_d;
	ao=Pi*r*r; 
	rs=r-hs; 
	ars=m_cta/360.0;
	arp=ars/2.0;
	m=m_m*1e6;

	as=30000.0;
	for(ar=arp;ar<0.95;ar+=0.005)  // α>0.465
	for(ai=800.0;ai<24000.0;ai+=50.0)
	{
		y1=-(ar*fc*ao*(1-sin(2*Pi*ar)/(2*Pi*ar)) +fy*(m_asp-ai));
        y2=m- (2*fc*ao*r*pow(sin(Pi*ar),3.0)/Pi/3.0 
			+fy*rs*ai*sin(Pi*ars)/Pi/ars+fy*rs*m_asp*sin(Pi*arp)/Pi/arp);

		if(fabs(y1)< 3e4 && fabs(y2)<2e7) {
			if(as>ai) {as=ai;/*tmp=ar*/;}
		}
	}
	
    if(as==30000.0) { AfxMessageBox(msg2);as=0.0; return;}
	m_asr=as;
	m_ctp=360*arp;

  	UpdateData(FALSE);

if(m_jss == TRUE){

	FILE *ou; 
	CString flname10;

	if(m_gcm =="") {AfxMessageBox("请输入工程名!"); return;}

	flname10=m_gcm + ".txt";
	ou=fopen(flname10,"a");

	fprintf(ou,"\n\n\n");
	
	fprintf(ou,"\n***********************************************************************");
	fprintf(ou,"\n***                       结 构 设 计 计 算 书                      ***");
	fprintf(ou,"\n***                                                                 ***");
	fprintf(ou,"\n***                      Sdt13 - 支护桩配筋计算                     ***");
	fprintf(ou,"\n*************************************************    Zgs 2006    ******");

	fprintf(ou,"\n\n   工程名称:  %s    构件编号:  %s",m_gcm,m_zhang );
	
	fprintf(ou,"\n\n1. 已知数据\n");
	fprintf(ou,"\n   桩径 D=%8.2f(m), 弯矩设计值 M=%10.3f(kN-m)",m_d,m_m);
	fprintf(ou,"\n   混凝土强度 C=%5d (MPa), 钢筋采用 2 级钢.",m_hc);
	
	fprintf(ou,"\n\n2. 计算结果\n");
	fprintf(ou,"\n   受压钢筋面积 A'sr=%8.0f(mmxmm), 受压钢筋对应的圆心角θ'=%8.2f(度)",
					m_asp,m_ctp);
	fprintf(ou,"\n   受拉钢筋面积  Asr=%8.0f(mmxmm), 受拉钢筋对应的圆心角 θ=%8.2f(度)",
					m_asr,m_cta);
	
	
	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 Csdt10::OnKillfocusEDITzs() 
{	
	UpdateData(TRUE);
	m_m=1.25*m_s*m_max;
	UpdateData(FALSE);
}


///////////////////////////////////////////////////////////
//方程及一阶导数
void dnewtf(double x,double y[2])
{ 
	y[0]=a3*x*x*x +a2*x*x +a1*x +a0;
	y[1]=3.0*a3*x*x +2.0*a2*x +a1;
    return;
}
//牛顿法解一元三次方程
int dnewt(double *x,double eps,int js)
{ 
	int k,l;
    double y[2],d,p,x0,x1;
    l=js; k=1; x0=*x;
    dnewtf(x0,y);
    d=eps+1.0;
    while ((d>=eps)&&(l!=0))
      { if (fabs(y[1])+1.0==1.0)
          { /*printf("err\n");*/ return(-1);}
        x1=x0-y[0]/y[1];
        dnewtf(x1,y);
        d=fabs(x1-x0); p=fabs(y[0]);
        if (p>d) d=p;
        x0=x1; l=l-1;
      }
    *x=x1;
    k=js-l;
    return(k);
}

void Csdt10::OnBTSdtHelp10() 
{
	acedHelp("SdtR2x.hlp","SDT13",0);	
}

void Csdt10::OnBUTTONjsdk() 
{
	// TODO: Add your control notification handler code here
	acedCommand(RTSTR,"NOTEPAD",RTSTR,flname10,RTNONE);	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -