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

📄 sdt07.cpp

📁 AotoCAD平台下的结构设计工具
💻 CPP
字号:
// sdt07.cpp : implementation file
//
// Sdt03 - 柱配筋计算 
// 
// GB2002规范 AutoCAD版   
     
#include "stdafx.h"
#include "Sdt.h"
#include "sdt07.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
/////////////////////////////////////////////////////////////////////////////
// Csdt07 dialog


Csdt07::Csdt07(CWnd* pParent /*=NULL*/)
	: CDialog(Csdt07::IDD, pParent)
{
	//{{AFX_DATA_INIT(Csdt07)
	m_as = 0.0;
	m_et = 1.0;
	m_m = 200.0;
	m_n = 300.0;
	m_pj1 = _T("");
	m_pj2 = _T("");
	m_py = _T("");
	m_zh = _T("Z-1");
	m_zyb = 0.0;
	m_jss = FALSE;
	m_gcm = _T("Zzz");
	//}}AFX_DATA_INIT
}


void Csdt07::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Csdt07)
	DDX_Control(pDX, IDC_RADIO9, m_ra);
	DDX_Control(pDX, IDC_COMBOi, m_i);
	DDX_Control(pDX, IDC_COMBOh, m_h);
	DDX_Control(pDX, IDC_COMBOc, m_c);
	DDX_Control(pDX, IDC_COMBOb, m_b);
	DDX_Text(pDX, IDC_EDITas, m_as);
	DDX_Text(pDX, IDC_EDITet, m_et);
	DDX_Text(pDX, IDC_EDITm, m_m);
	DDX_Text(pDX, IDC_EDITn, m_n);
	DDX_Text(pDX, IDC_EDITpj1, m_pj1);
	DDX_Text(pDX, IDC_EDITpj2, m_pj2);
	DDX_Text(pDX, IDC_EDITpy, m_py);
	DDX_Text(pDX, IDC_EDITzh, m_zh);
	DDX_Text(pDX, IDC_EDITzyb, m_zyb);
	DDX_Check(pDX, IDC_CHECKjss07, m_jss);
	DDX_Text(pDX, IDC_EDITgcm08, m_gcm);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Csdt07, CDialog)
	//{{AFX_MSG_MAP(Csdt07)
	ON_BN_CLICKED(IDC_BUTTONjs, OnBUTTONjs)
	ON_BN_CLICKED(IDC_BTSdtHelp7, OnBTSdtHelp7)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Csdt07 message handlers

CString Bl2[]={ "250","300","350","400","450","500","550","600",
			   "650","700","800","900","1000","1200","1500" };//15
CString Hl2[]={ "250","300","350","400","450","500","550","600",
			   "650","700","800","900","1000","1200","1500","0" };//16
CString Cl2[]={ "20","25","30","35","40","45","50"};//7
CString Il2[]={ "1","2","3"};//3

BOOL Csdt07::OnInitDialog() 
{
	CDialog::OnInitDialog();
	CheckRadioButton(IDC_RADIO9,IDC_RADIO10,IDC_RADIO9);

	for(int i=0;i<15;i++)
		m_b.AddString(Bl2[i]);
	m_b.SetCurSel(3);

	for(i=0;i<16;i++)
		m_h.AddString(Hl2[i]);
	m_h.SetCurSel(3);

	for(i=0;i<7;i++)
		m_c.AddString(Cl2[i]);
	m_c.SetCurSel(0);

	for(i=0;i<3;i++)
		m_i.AddString(Il2[i]);
	m_i.SetCurSel(1);

	
	return TRUE;  
}

void Csdt07::OnBUTTONjs() 
{
	int iRadio; 
	CString msg71="不满足要求,请修改数据D,或C!";	

	CString val,cval,ival,f7;
	double b,h,hs,h0,rmin,fc,fy,kcb,kc,x;
    double n,m,e,e0,ei,ea,et;  

	UpdateData(TRUE);

	m_b.GetLBText(m_b.GetCurSel(),val);
	b=atof(val);

	m_h.GetLBText(m_h.GetCurSel(),val);
	h=atof(val);
	
	m_c.GetLBText(m_c.GetCurSel(),cval);
    if( !strcmp(cval,"20") )  fc=9.60 ;//C20
    if( !strcmp(cval,"25") )  fc=11.9; //C25
    if( !strcmp(cval,"30") )  fc=14.3 ;//C30
    if( !strcmp(cval,"35") )  fc=16.7 ;//C35
    if( !strcmp(cval,"40") )  fc=19.1 ;//C40
    if( !strcmp(cval,"45") )  fc=21.1 ;//C45
	if( !strcmp(cval,"50") )  fc=23.1 ;//C50

	m_i.GetLBText(m_i.GetCurSel(),ival);
    if( !strcmp(ival,"1") ) { fy=210 ;  kcb=0.614; }  // I
    if( !strcmp(ival,"2") ) { fy=300 ;  kcb=0.544; }  // II
    if( !strcmp(ival,"3") ) { fy=360 ;  kcb=0.510; }  // III 

	iRadio=GetCheckedRadioButton(IDC_RADIO9,IDC_RADIO10);
	if(iRadio==IDC_RADIO9) { n=1.3*m_n; m=1.3*m_m; }
	if(iRadio==IDC_RADIO10){ n=m_n; m=m_m; }

	n*=1e3; m*=1e6;
	hs=40;
	et=m_et;

  if( h != 0) { //矩形柱
	h0=h-hs;
    rmin=0.002;
	m_zyb=n/b/h/fc*1.1;
	f7.Format("%6.3f",m_zyb); 
    m_zyb=atof(f7);

	e0=m/n; ea=0.12*(0.3*h0-e0);
	if(e0>0.3*h0) ea=0.0;
	ei=e0+ea;
	e=et*ei+0.5*h-hs;

	double h00=h0-hs;
	double fbh=fc*b*h0;
	if(et*ei > 0.3*h0)
	{
		x=n/fc/b;
		m_as=(n*e-fc*b*x*(h0-0.5*x))/fy/h00;
		m_py = "大偏压";
	} else {
		kc=kcb +(n-kcb*fbh)/( (n*e-0.45*fbh*h0)/(0.8-kcb)/h00 +fbh);
		m_as=(n*e-fbh*h0*kc*(1-0.5*kc))/fy/h00;
		m_py = "小偏压";
	}
	
	if(m_as < rmin*b*h0) m_as=rmin*b*h0;

	double n25,d4n;
	n25= 4*m_as/Pi/625.0;
	d4n= sqrt(4*m_as/Pi/4.0);
	
	val.Format("%8.2f",m_as); 
    m_as=atof(val); 
	
	m_pj1.Format("%5.1fD25",n25);
	m_pj2.Format(" 4D%4.1f",d4n);

  } //矩形柱

  if( h == 0) { //圆形柱
    double r,rs,ar,y1,y2;
	double ao,at,pr,ai,as;
	
	r=0.5*b;
	ao=Pi*r*r; rs=r-hs; 
	
	e0=m/n; ea=0.12*(0.3*(r+rs)-e0);
	if(e0>=0.3*(r+rs)) ea=0.0;
	ei=e0+ea;
	e=et*ei;

	as=20000.0;
	for(ar=0.125;ar<0.95;ar+=0.005)
	for(ai=900.0;ai<12000.0;ai+=50.0)
	{
		at=1.25-2*ar;
		if(ar>0.625) at=0.0;

		pr=Pi*ar;
		y1=n-( ar*fc*ao*(1.0-sin(2*pr)/(2*pr))+(ar-at)*fy*ai);
        y2=n*e-( 2.0*fc*ao*r*pow(sin(pr),3.0)/Pi/3.0 
			+fy*rs*ai*(sin(pr)+sin(Pi*at))/Pi);

		if(y1<=0 && y2<=0) {
			if(as>ai) as=ai;
		}
	}
	
	if(as==20000.0) {AfxMessageBox(msg71);as=0; return;}

    m_zyb=n/ao/fc*1.1;
	m_py = "圆柱";
	m_as=as;
	
	double n25,d8n;
	n25= 4*m_as/Pi/625.0;
	d8n= sqrt(4*m_as/Pi/8.0);

	val.Format("%8.2f",m_as); 
    m_as=atof(val); 
	
	m_pj1.Format("%5.1fD25",n25);
	m_pj2.Format(" 8D%4.1f",d8n);

  } //圆形柱


	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   ***                        Sdt03 - 柱配筋计算                       ***");
	fprintf(ou,"\n   *************************************************    Zgs 2002    ******");

	fprintf(ou,"\n\n   工程名称: %s   构件编号: %s",m_gcm,m_zh);
	fprintf(ou,"\n\n1. 基本数据来源(N,M,η),简图");
	fprintf(ou,"\n\n\n\n\n\n"); 

	fprintf(ou,"\n\n2. 已知数据\n");
	fprintf(ou,"\n   轴向力设计值 N=%8.3f(kN),  弯矩设计值 M=%8.3f(kN-m)",n/1e3,m/1e6);
	fprintf(ou,"\n   偏心距增大系数 η=%6.3f",m_et);
	fprintf(ou,"\n   柱宽 B=%5.0f (mm),  柱高 H=%5.0f (mm),  混凝土强度 C%s, 钢筋%s级",
						b,h,cval,ival);
	fprintf(ou,"\n      注:  柱高 H=0 时为圆柱, B 为其直径.");

	fprintf(ou,"\n\n3. 计算结果\n");
if( h != 0)  //矩形柱
	fprintf(ou,"\n   偏压判别: %s , 轴压比 μ=%6.3f",m_py,m_zyb);
if( h == 0)  //圆形柱
	fprintf(ou,"\n   %s :   轴压比 μ=%6.3f",m_py,m_zyb);

	fprintf(ou,"\n   钢筋面积 As=%8.3f (mmxmm),  配 %s 或 %s",m_as,m_pj1,m_pj2);
	fprintf(ou,"\n   工程实际配筋:");

	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 Csdt07::OnBTSdtHelp7() 
{
	ads_help("sdt2002.hlp","SDT03",0);	
}

⌨️ 快捷键说明

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