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

📄 sdt01.cpp

📁 AutoCAD平台结构设计工具 按最新国家结构设计规范编写.
💻 CPP
字号:
// sdt01.cpp : implementation file
// 
// Sdt01 - 梁配筋计算  
// 
// GB2002规范 AutoCAD版

#include "stdafx.h"
#include "Sdt.h"
#include "sdt01.h"
#include "Sdt17.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
/////////////////////////////////////////////////////////////////////////////
// Csdt01 dialog

static HWND hWndACAD = NULL;

Csdt01::Csdt01(CWnd* pParent /*=NULL*/)
	: CDialog(Csdt01::IDD, pParent)
{
	//{{AFX_DATA_INIT(Csdt01)
	m_as = 0.0;
	m_rq = 0.10;
	m_rp = 0.20;
	m_q = 10.0;
	m_p = 0.0;
	m_m = 0.0;
	m_pj1 = _T("");
	m_pj2 = _T("");
	m_l = 6.0;
	m_bzz = 0;
	m_asnd = 0.0;
	m_d1 = 20;
	m_d2 = 25;
	m_n1 = 2;
	m_n2 = 2;
	m_ks = 3;
	m_mp2 = 0.0;
	m_mp1 = 0.0;
	m_mp3 = 0.0;
	m_mp4 = 0.0;
	m_mq1 = 0.0;
	m_mq2 = 0.0;
	m_mq3 = 0.0;
	m_mq4 = 0.0;
	m_vp = 0.0;
	m_vq = 0.0;
	m_jss = FALSE;
	m_gcm = _T("Zzz");
	m_lh = _T("L-1");
	m_as2 = 0.0;
	m_m2 = 0.0;
	//}}AFX_DATA_INIT
}


void Csdt01::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Csdt01)
	DDX_Control(pDX, IDC_COMBOi2, m_i2);
	DDX_Control(pDX, IDC_COMBOh2, m_h2);
	DDX_Control(pDX, IDC_COMBOc2, m_c2);
	DDX_Control(pDX, IDC_COMBOb2, m_b2);
	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_EDITrq, m_rq);
	DDX_Text(pDX, IDC_EDITrp, m_rp);
	DDX_Text(pDX, IDC_EDITq, m_q);
	DDX_Text(pDX, IDC_EDITp, m_p);
	DDX_Text(pDX, IDC_EDITm, m_m);
	DDX_Text(pDX, IDC_EDITpj1, m_pj1);
	DDX_Text(pDX, IDC_EDITpj2, m_pj2);
	DDX_Text(pDX, IDC_EDITl, m_l);
	DDX_Radio(pDX, IDC_RADIObzz, m_bzz);
	DDX_Text(pDX, IDC_EDITasnd, m_asnd);
	DDX_Text(pDX, IDC_EDITd1, m_d1);
	DDX_Text(pDX, IDC_EDITd2, m_d2);
	DDX_Text(pDX, IDC_EDITn1, m_n1);
	DDX_Text(pDX, IDC_EDITn2, m_n2);
	DDX_Text(pDX, IDC_EDITks, m_ks);
	DDV_MinMaxInt(pDX, m_ks, 1, 5);
	DDX_Text(pDX, IDC_EDITmp2, m_mp2);
	DDX_Text(pDX, IDC_EDITmp1, m_mp1);
	DDX_Text(pDX, IDC_EDITmp3, m_mp3);
	DDX_Text(pDX, IDC_EDITmp4, m_mp4);
	DDX_Text(pDX, IDC_EDITmq1, m_mq1);
	DDX_Text(pDX, IDC_EDITmq2, m_mq2);
	DDX_Text(pDX, IDC_EDITmq3, m_mq3);
	DDX_Text(pDX, IDC_EDITmq4, m_mq4);
	DDX_Text(pDX, IDC_EDITvp, m_vp);
	DDX_Text(pDX, IDC_EDITvq, m_vq);
	DDX_Check(pDX, IDC_CHECKjss01, m_jss);
	DDX_Text(pDX, IDC_EDITgcm01, m_gcm);
	DDX_Text(pDX, IDC_EDITlh01, m_lh);
	DDX_Text(pDX, IDC_EDITas2, m_as2);
	DDX_Text(pDX, IDC_EDITm2, m_m2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Csdt01, CDialog)
	//{{AFX_MSG_MAP(Csdt01)
	ON_BN_CLICKED(IDC_BUTTONjs, OnBUTTONjs)
	ON_BN_CLICKED(IDC_BUTTONjsnd, OnBUTTONjsnd)
	ON_BN_CLICKED(IDC_BUTTONjsxs, OnBUTTONjsxs)
	ON_BN_CLICKED(IDC_BTSdtHelp1, OnBTSdtHelp1)
	ON_BN_CLICKED(IDC_BUTTONgjb1, OnBUTTONgjb1)
	ON_BN_CLICKED(IDC_BUTTONjs2, OnBUTTONjs2)
	ON_BN_CLICKED(IDC_BUTTONjsdk, OnBUTTONjsdk)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Csdt01 message handlers

CString Bl[]={ "150","200","250","300","350","400","500","600","700",
			  "800","900","1000" };//12
CString Hl[]={ "200","250","300","350","400","450","500","550","600",
			  "650","700","800","900","1000","1100","1200","1300",
			  "1400","1500","1800" };//20
CString Cl[]={ "20","25","30","35","40","45","50"};//7
CString Il[]={ "1","2","3"};//3

CString B2[]={ "150","200","250","300","350","400","500","600","700",
			  "800","900","1000" };//12
CString H2[]={  "80","100","120","150","180","200","250","300","350",
               "400","450","500","550","600","650","700","800","900",
			   "1000","1100","1200","1300","1400","1500","1800" };//25
CString C2[]={ "20","25","30","35","40","45","50"};//7
CString I2[]={ "1","2","3"};//3

BOOL Csdt01::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	for(int i=0;i<12;i++)
		m_b.AddString(Bl[i]);
	m_b.SetCurSel(2);

	for(i=0;i<20;i++)
		m_h.AddString(Hl[i]);
	m_h.SetCurSel(6);

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

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


	for(i=0;i<12;i++)
		m_b2.AddString(B2[i]);
	m_b2.SetCurSel(2);

	for(i=0;i<25;i++)
		m_h2.AddString(H2[i]);
	m_h2.SetCurSel(11);

	for(i=0;i<7;i++)
		m_c2.AddString(C2[i]);
	m_c2.SetCurSel(0);

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

	return TRUE;
}

	
CString flname;
void Csdt01::OnBUTTONjs() 
{
	
	CString val,msg,cval,ival;
	double b,h,h0,rmin,fc,fy,kcb,x;
       
	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.6 ;//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 
	
	h0=h-35;
    rmin=0.002;

    m_m=m_rq*(m_q+25e-6*b*h)*m_l*m_l + m_rp*m_p*m_l;

	if(m_bzz == 0) m_m *=1.30;

	val.Format("%8.3f",m_m); 
    m_m=atof(val);  
	
    x=h0*h0-2.0e6*m_m/fc/b;
    if( x < 0) {
        msg = "梁断面太小,请增大高度H !";
		AfxMessageBox(msg);
        return;}
    x=h0-sqrt(x);
    if( x > kcb*h0) {
       msg = "梁断面太小,请增大宽度B或高度H !";
       AfxMessageBox(msg);    
       return;}

    m_as=fc*b*x/fy;
    if( m_as < rmin*b*h0) { 
		m_as=rmin*b*h0;
        msg = "该梁断面采用构造配筋.";
		AfxMessageBox(msg);  }  
	
	double n25,d3n;
	n25=4*m_as/Pi/625;
	d3n=sqrt(4*m_as/Pi/3);
	
	val.Format("%8.2f",m_as); 
    m_as=atof(val); 
	
	m_pj1.Format("%5.1fD25",n25);
	m_pj2.Format(" 3D%4.1f",d3n);
	m_asnd=m_as;
	
	UpdateData(FALSE);


if(m_jss == TRUE){ 

	FILE *ou; 	

	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***                        Sdt01 - 梁配筋计算                       ***");
	fprintf(ou,"\n*************************************************    Zgs 2006    ******");

	fprintf(ou,"\n\n   工程名称: %s   构件编号: %s",m_gcm,m_lh);
	fprintf(ou,"\n\n1. 基本数据来源(Q,P,L),确定(αq,αp),简图");
	fprintf(ou,"\n\n\n\n\n\n"); 

	fprintf(ou,"\n\n2. 已知数据\n");

if(m_bzz == 0)
	fprintf(ou,"\n   均布荷载标准值    Q=%8.3f (kN/m),  计算跨度 L=%6.3f (m)",m_q,m_l);
else
	fprintf(ou,"\n   均布荷载设计值    Q=%8.3f (kN/m),  计算跨度 L=%6.3f (m)",m_q,m_l);

	fprintf(ou,"\n   均布荷载弯矩系数αq=%5.3f",m_rq);

if(m_bzz == 0)
	fprintf(ou,"\n   集中荷载标准值  P=%8.3f (kN),    集中荷载弯矩系数αp= %5.3f",m_p,m_rp);
else
	fprintf(ou,"\n   集中荷载设计值  P=%8.3f (kN),    集中荷载弯矩系数αp= %5.3f",m_p,m_rp);

	fprintf(ou,"\n   梁宽 B=%5.0f (mm), 梁高 H=%5.0f (mm),  混凝土强度 C%s, 钢筋%s级",
			b,h,cval,ival);

	fprintf(ou,"\n\n3. 计算结果\n");
	fprintf(ou,"\n   弯矩设计值 M =%8.3f (kN-m)",m_m);
	fprintf(ou,"\n   钢筋面积   As=%8.3f (mmxmm), 配 %4.1fD25 或3D%4.1f",m_as,n25,d3n);
	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 Csdt01::OnBUTTONjsnd() 
{
	CString val;
	UpdateData(TRUE);

	if( m_d2==0 || m_n2==0) {
        if( m_d2==0) m_d2=sqrt((4*m_asnd/Pi-m_n1*m_d1*m_d1)/m_n2);
        if( m_n2==0) m_n2=(4*m_asnd/Pi-m_n1*m_d1*m_d1)/m_d2/m_d2;
    } else {
        m_asnd=0.25*Pi*(m_n1*m_d1*m_d1+m_n2*m_d2*m_d2);
	}
	
	val.Format("%8.2f",m_asnd);
	m_asnd=atof(val);

	UpdateData(FALSE);   
}

void Csdt01::OnBUTTONjsxs() 
{
	static double xs[10][5]={
		{125,0,0,0,500},	{250,0,0,0,500},
		{70,0,125,0,625},	{156,0,188,0,688},
		{80,25,100,0,600},	{175,100,150,0,650},
		{77,36,107,71,607},	{169,116,161,107,661},
		{78,46,105,79,606},	{171,132,158,118,658},
	};

	int kk;	

	UpdateData(TRUE);
	
	for(int i=1;i<=5;i++) {
		if(m_ks==i) {
			kk=2*i-2;
			m_mq1=xs[kk][0];	m_mq2=xs[kk][1];
			m_mq3=xs[kk][2];	m_mq4=xs[kk][3];
			m_vq=xs[kk][4];
		
			kk=2*i-1;
			m_mp1=xs[kk][0];	m_mp2=xs[kk][1];
			m_mp3=xs[kk][2];	m_mp4=xs[kk][3];
			m_vp=xs[kk][4];
		}
	}

	m_mq1*=0.001;	m_mq2*=0.001;	m_mq3*=0.001;
	m_mq4*=0.001;	m_vq*=0.001;
	m_mp1*=0.001;	m_mp2*=0.001;	m_mp3*=0.001;
	m_mp4*=0.001;	m_vp*=0.001;

	UpdateData(FALSE);   

}

void Csdt01::OnBTSdtHelp1() 
{
	ads_help("sdt2006.hlp","SDT01",0);
}

void Csdt01::OnBUTTONgjb1() 
{
	CSdt17 Dlg(CWnd::FromHandle(hWndACAD));
	Dlg.DoModal();	
}

void Csdt01::OnBUTTONjs2() 
{
	CString val,cval,ival;
	double b,h,h0,fc,fy,x;
       
	UpdateData(TRUE);

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

	m_h2.GetLBText(m_h2.GetCurSel(),val);
	h=atof(val);
	
	m_c2.GetLBText(m_c2.GetCurSel(),cval);
    if( !strcmp(cval,"20") )  fc=9.6 ;//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_i2.GetLBText(m_i2.GetCurSel(),ival);
    if( !strcmp(ival,"1") ) { fy=210 ;  }  // I
    if( !strcmp(ival,"2") ) { fy=300 ;  }  // II
    if( !strcmp(ival,"3") ) { fy=360 ;  }  // III 
	
	h0=h-35;
   
    x=fy*m_as2/b/fc;
    m_m2=fc*b*x*(h0-x/2)/1E6;

    val.Format("%8.3f",m_m2); 
    m_m2=atof(val);  	

	UpdateData(FALSE);
}

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

⌨️ 快捷键说明

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