📄 sdt07.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)
ON_BN_CLICKED(IDC_BUTTONjsdk, OnBUTTONjsdk)
//}}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;
}
CString flname7;
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;
if(m_gcm =="") {AfxMessageBox("请输入工程名!"); return;}
flname7=m_gcm + ".txt";
ou=fopen(flname7,"a");
fprintf(ou,"\n\n\n");
fprintf(ou,"\n***********************************************************************");
fprintf(ou,"\n*** 结 构 设 计 计 算 书 ***");
fprintf(ou,"\n*** ***");
fprintf(ou,"\n*** Sdt03 - 柱配筋计算 ***");
fprintf(ou,"\n************************************************* Zgs 2006 ******");
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()
{
acedHelp("SdtR2x.hlp","SDT03",0);
}
void Csdt07::OnBUTTONjsdk()
{
// TODO: Add your control notification handler code here
acedCommand(RTSTR,"NOTEPAD",RTSTR,flname7,RTNONE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -