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

📄 sdt08.cpp

📁 AotoCAD平台下的结构设计工具
💻 CPP
字号:
// sdt08.cpp : implementation file
//
// Sdt06 - 水平曲梁计算

#include "stdafx.h"
#include "Sdt.h"
#include "sdt08.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
/////////////////////////////////////////////////////////////////////////////
// Csdt08 dialog


Csdt08::Csdt08(CWnd* pParent /*=NULL*/)
	: CDialog(Csdt08::IDD, pParent)
{
	//{{AFX_DATA_INIT(Csdt08)
	m_mcc = 0.0;
	m_mcr = 0.0;
	m_mzr = 0.0;
	m_mzc = 0.0;
	m_qc = 20.0;
	m_qr = 20.0;
	m_tc = 0.0;
	m_tr = 0.0;
	m_vc = 0.0;
	m_vr = 0.0;
	m_ar = 45.0;
	m_ct = 45.0;
	m_aa = 3.0;
	m_rc = 3.0;
	m_jss = FALSE;
	m_lh = _T("QL-1");
	m_gcm = _T("Zzz");
	//}}AFX_DATA_INIT
}


void Csdt08::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Csdt08)
	DDX_Control(pDX, IDC_RADIO11, m_ra);
	DDX_Control(pDX, IDC_COMBOhr, m_hr);
	DDX_Control(pDX, IDC_COMBOhc, m_hc);
	DDX_Control(pDX, IDC_COMBObr, m_br);
	DDX_Control(pDX, IDC_COMBObc, m_bc);
	DDX_Text(pDX, IDC_EDITmcc, m_mcc);
	DDX_Text(pDX, IDC_EDITmcr, m_mcr);
	DDX_Text(pDX, IDC_EDITmzr, m_mzr);
	DDX_Text(pDX, IDC_EDITmzc, m_mzc);
	DDX_Text(pDX, IDC_EDITqc, m_qc);
	DDX_Text(pDX, IDC_EDITqr, m_qr);
	DDX_Text(pDX, IDC_EDITtc, m_tc);
	DDX_Text(pDX, IDC_EDITtr, m_tr);
	DDX_Text(pDX, IDC_EDITvc, m_vc);
	DDX_Text(pDX, IDC_EDITvr, m_vr);
	DDX_Text(pDX, IDC_EDITar, m_ar);
	DDV_MinMaxDouble(pDX, m_ar, 15., 75.);
	DDX_Text(pDX, IDC_EDITct, m_ct);
	DDX_Text(pDX, IDC_EDITaa, m_aa);
	DDX_Text(pDX, IDC_EDITrc, m_rc);
	DDX_Check(pDX, IDC_CHECKjss08, m_jss);
	DDX_Text(pDX, IDC_EDITlh08, m_lh);
	DDX_Text(pDX, IDC_EDITgcm08, m_gcm);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Csdt08, CDialog)
	//{{AFX_MSG_MAP(Csdt08)
	ON_BN_CLICKED(IDC_BUTTONjsc, OnBUTTONjsc)
	ON_BN_CLICKED(IDC_BUTTONjsl, OnBUTTONjsl)
	ON_BN_CLICKED(IDC_BTSdtHelp8, OnBTSdtHelp8)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Csdt08 message handlers

CString Bc[]={ "150","200","250","300","350","400","450","500",
			   "600" };//9
CString Hc[]={ "200","250","300","350","400","450","500","550",
			   "600","700","800","900","1000" };//13

CString Br[]={ "150","200","250","300","350","400","450","500",
			   "600" };//9
CString Hr[]={ "200","250","300","350","400","450","500","550",
			   "600","700","800","900","1000" };//13
double hbla[2][8]={ {1.0,1.2,1.4,1.6,1.8,2.0,2.5,3.0},// h/b
	{1.38,1.69,2.04,2.44,2.90,3.39,4.88,6.65} };      // λ

double q,p,b,h,hb,la;
int iRadio,kk; 
CString val,f8;

BOOL Csdt08::OnInitDialog() 
{
	CDialog::OnInitDialog();
	CheckRadioButton(IDC_RADIO11,IDC_RADIO12,IDC_RADIO11);

	for(int i=0;i<9;i++) {
		m_bc.AddString(Bc[i]); m_br.AddString(Br[i]); }
	m_bc.SetCurSel(2); m_br.SetCurSel(2);

	for(i=0;i<13;i++) {
		m_hc.AddString(Hc[i]); m_hr.AddString(Hr[i]); }
	m_hc.SetCurSel(4); m_hr.SetCurSel(4);

	return TRUE;  
}

void Csdt08::OnBUTTONjsc() 
{
	double qr,pr,cta,ka,kb,pha;

	UpdateData(TRUE);
	
	cta=m_ct*Pi/180.0;

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

	m_hc.GetLBText(m_hc.GetCurSel(),val);
	h=atof(val);

	hb=h/b;
	if(hb<=1.0) la=1.38;
	if(hb>=3.0) la=6.65;

	for(int i=0;i<7;i++) 
		if(hb>=hbla[0][i] && hb<hbla[0][i+1]) {kk=i; break;} 

	la=hbla[1][kk]+(hb-hbla[0][kk])/(hbla[0][kk+1]
			-hbla[0][kk])*(hbla[1][kk+1]-hbla[1][kk]);

	iRadio=GetCheckedRadioButton(IDC_RADIO11,IDC_RADIO12);

	if(iRadio==IDC_RADIO11) { //QQQ
		q=m_qc;
		qr=q*m_rc*m_rc;
		ka=4*(la+1)*sin(cta)-2*cta*(la+1)+(la-1)*sin(2*cta)-4*la*cta*cos(cta);
        kb=2*cta*(la+1)-(la-1)*sin(2*cta);

		m_mcc=qr*ka/kb;
		f8.Format("%8.3f",m_mcc); 
		m_mcc=atof(f8);

		m_mzc=m_mcc*cos(cta)-qr*(1-cos(cta));
		f8.Format("%8.3f",m_mzc); 
		m_mzc=atof(f8);

		pha=acos(qr/(m_mcc+qr));
		m_tc=m_mcc*sin(pha)-qr*(pha-sin(pha));
		f8.Format("%8.3f",m_tc); 
		m_tc=atof(f8);

		m_vc=cta*q*m_rc;
		f8.Format("%8.3f",m_vc); 
		m_vc=atof(f8);


	}
	
	if(iRadio==IDC_RADIO12) { //PPP
		p=m_qc;
		pr=p*m_rc;
        ka=(la-1)*(cos(2*cta-1))+4*la*(1-cos(cta));
		kb=4*cta*(la+1)-2*(la-1)*sin(2*cta);

		m_mcc=pr*ka/kb;
		f8.Format("%8.3f",m_mcc); 
		m_mcc=atof(f8);

		m_mzc=m_mcc*cos(cta)-pr*sin(cta)/2.0;
		f8.Format("%8.3f",m_mzc); 
		m_mzc=atof(f8);

		pha=atan(2*m_mcc/pr);
		m_tc=m_mcc*sin(pha)-pr*(1-cos(pha))/2.0;	
		f8.Format("%8.3f",m_tc); 
		m_tc=atof(f8);

		m_vc=p/2.0;
		f8.Format("%8.3f",m_vc); 
		m_vc=atof(f8);

	} 

	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   ***                       Sdt06 - 水平曲梁计算                      ***");
	fprintf(ou,"\n   *************************************************    Zgs 2002    ******");

	fprintf(ou,"\n\n   工程名称:  %s    构件编号:  %s",m_gcm,m_lh);
	
	fprintf(ou,"\n\n1. 已知数据\n");
if(iRadio==IDC_RADIO11)  //QQQ
	fprintf(ou,"\n     水平弧梁:   满跨均布荷载 Q=%8.3f(kN/m)",q);
if(iRadio==IDC_RADIO12)  //PPP
	fprintf(ou,"\n     水平弧梁:   跨中集中荷载 P=%8.3f(kN)",p);

	fprintf(ou,"\n   弧梁半径 R=%8.3f(m), 弧圆心角之半 θ=%6.2f(度)",m_rc,m_ct);
	fprintf(ou,"\n   梁宽 B=%5.0f (mm),  梁高 H=%5.0f (mm)",b,h);
		
	fprintf(ou,"\n\n2. 计算结果\n");
	fprintf(ou,"\n   跨中弯矩   Mc=%8.3f(kN-m), 支座弯矩   Mz=%8.3f(kN-m)",m_mcc,m_mzc);
	fprintf(ou,"\n   最大扭矩 Tmax=%8.3f(kN-m), 最大剪力 Vmax=%8.3f(kN)",m_tc,m_vc);

	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 Csdt08::OnBUTTONjsl() 
{
	double qa,pa,ar;
   
	UpdateData(TRUE);
	
	ar=m_ar*Pi/180.0;

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

	m_hr.GetLBText(m_hr.GetCurSel(),val);
	h=atof(val);

	hb=h/b;
	if(hb<=1.0) la=1.38;
	if(hb>=3.0) la=6.65;

	for(int i=0;i<7;i++) 
		if(hb>hbla[0][i] && hb<hbla[0][i+1]) kk=i; 

	la=hbla[1][kk]+(hb-hbla[0][kk])/(hbla[0][kk+1]
			-hbla[0][kk])*(hbla[1][kk+1]-hbla[1][kk]);

	iRadio=GetCheckedRadioButton(IDC_RADIO11,IDC_RADIO12);

	if(iRadio==IDC_RADIO11) { //QQQ
		q=m_qr;
		qa=q*m_aa*m_aa;
 
		m_mcr=qa*sin(ar)*sin(ar)/(sin(ar)*sin(ar)
			+la*cos(ar)*cos(ar))/6.0;
		f8.Format("%8.3f",m_mcr); 
		m_mcr=atof(f8);

		m_mzr=m_mcr-qa/2.0;
		f8.Format("%8.3f",m_mzr); 
		m_mzr=atof(f8);

 		m_tr=qa*sin(ar)*cos(ar)/(sin(ar)*sin(ar)
			+la*cos(ar)*cos(ar))/6.0;
		f8.Format("%8.3f",m_tr); 
		m_tr=atof(f8);

		m_vr=q*m_aa;
		f8.Format("%8.3f",m_vr); 
		m_vr=atof(f8);

	} 
	
	if(iRadio==IDC_RADIO12) { //PPP
		p=m_qr;
		pa=p*m_aa;
 
		m_mcr=pa*sin(ar)*sin(ar)/(sin(ar)*sin(ar)
			+la*cos(ar)*cos(ar))/4.0;
		f8.Format("%8.3f",m_mcr); 
		m_mcr=atof(f8);

		m_mzr=m_mcr-pa/2.0;
		f8.Format("%8.3f",m_mzr); 
		m_mzr=atof(f8);

 		m_tr=pa*sin(ar)*cos(ar)/(sin(ar)*sin(ar)
			+la*cos(ar)*cos(ar))/4.0;
		f8.Format("%8.3f",m_tr); 
		m_tr=atof(f8);

		m_vr=p/2.0;
		f8.Format("%8.3f",m_vr); 
		m_vr=atof(f8);
	} 

	UpdateData(FALSE);

if(m_jss == TRUE){

	FILE *ou; 
	CString flname;
	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   ***             Sdt06 - 水平曲梁计算               ***");
	fprintf(ou,"\n   **************************************** Zgs 2002 ****");
	
	fprintf(ou,"\n\n   工程名称:  %s    构件编号:  %s",m_gcm,m_lh);
	
	fprintf(ou,"\n\n1. 已知数据\n");
if(iRadio==IDC_RADIO11)  //QQQ
	fprintf(ou,"\n     水平折梁:   满跨均布荷载 Q=%8.3f(kN/m)",q);
if(iRadio==IDC_RADIO12)  //PPP
	fprintf(ou,"\n     水平折梁:   跨中集中荷载 P=%8.3f(kN)",p);

	fprintf(ou,"\n   折梁尺寸 a=%8.3f(m), 夹角之半 α=%6.2f(度)",m_aa,m_ar);
	fprintf(ou,"\n   梁宽 B=%5.0f (mm),  梁高 H=%5.0f (mm)",b,h);
		
	fprintf(ou,"\n\n2. 计算结果\n");
	fprintf(ou,"\n   跨中弯矩   Mc=%8.3f(kN-m), 支座弯矩   Mz=%8.3f(kN-m)",m_mcr,m_mzr);
	fprintf(ou,"\n   最大扭矩 Tmax=%8.3f(kN-m), 最大剪力 Vmax=%8.3f(kN)",m_tr,m_vr);

	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 Csdt08::OnBTSdtHelp8() 
{
	ads_help("sdt2002.hlp","SDT06",0);	
}

⌨️ 快捷键说明

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