civil-tools-v 0.0.1__py3-none-any.whl → 0.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- CivilTools/Const/CAD.py +2 -0
- CivilTools/Const/Concrete.py +144 -0
- CivilTools/Const/Steel.py +21 -0
- CivilTools/Const/__init__.py +3 -0
- CivilTools/DXFGenerator/BasicDXF.py +238 -1
- CivilTools/DXFGenerator/DetailDXF.py +324 -0
- CivilTools/DXFGenerator/DrawingAttribs.py +45 -0
- CivilTools/DXFGenerator/LayerManager.py +37 -0
- CivilTools/DXFGenerator/__init__.py +3 -0
- CivilTools/FigureGenerator/BasicPNGPlotter.py +28 -25
- CivilTools/FigureGenerator/BasicPltPlotter.py +115 -1
- CivilTools/FigureGenerator/SeismicReport/ShearMassRatio.py +73 -0
- CivilTools/FigureGenerator/SeismicReport/ShearMoment.py +71 -0
- CivilTools/FigureGenerator/SeismicReport/__init__.py +2 -0
- CivilTools/FigureGenerator/StairCalculationSheetPNGPlotter.py +2 -8
- CivilTools/ReportGenerator/BasicGenerator.py +109 -83
- CivilTools/ReportGenerator/DocParagraph.py +3 -5
- CivilTools/ReportGenerator/DocPicture.py +7 -8
- CivilTools/ReportGenerator/DocTable.py +11 -11
- CivilTools/ReportGenerator/SeismicReport.py +302 -143
- CivilTools/ReportGenerator/SeismicReportTemplate.py +523 -202
- CivilTools/ReportGenerator/StairCalculationReport.py +249 -185
- CivilTools/ReportGenerator/UtilFunctions.py +108 -104
- CivilTools/ReportGenerator/__init__.py +2 -2
- CivilTools/YDBLoader/BuildingDefine/Beam/Beam.py +12 -15
- CivilTools/YDBLoader/BuildingDefine/Column/Column.py +5 -5
- CivilTools/YDBLoader/BuildingDefine/ComponentType.py +1 -1
- CivilTools/YDBLoader/BuildingDefine/Geometry/Grid.py +8 -12
- CivilTools/YDBLoader/BuildingDefine/Geometry/Joint.py +11 -10
- CivilTools/YDBLoader/BuildingDefine/Geometry/StandFloor.py +1 -1
- CivilTools/YDBLoader/BuildingDefine/GlobalResult/BasicResult.py +44 -24
- CivilTools/YDBLoader/BuildingDefine/GlobalResult/SeismicResult.py +168 -54
- CivilTools/YDBLoader/BuildingDefine/Section/Section.py +26 -31
- CivilTools/YDBLoader/BuildingDefine/Section/ShapeEnum.py +9 -9
- CivilTools/YDBLoader/BuildingDefine/Slab/Slab.py +1 -1
- CivilTools/YDBLoader/BuildingDefine/StairPart/LoadDefine.py +16 -10
- CivilTools/YDBLoader/BuildingDefine/StairPart/StairComponent.py +41 -37
- CivilTools/YDBLoader/BuildingDefine/StairPart/StairPart.py +133 -78
- CivilTools/YDBLoader/SQLiteConnector/Connector.py +16 -8
- CivilTools/YDBLoader/SQLiteConnector/RowDataFactory.py +19 -17
- CivilTools/YDBLoader/SQLiteConnector/YDBTableName.py +31 -20
- CivilTools/YDBLoader/YDBLoader.py +128 -110
- {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/METADATA +88 -5
- civil_tools_v-0.0.3.dist-info/RECORD +60 -0
- {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/WHEEL +1 -1
- civil_tools_v-0.0.1.dist-info/RECORD +0 -50
- {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/LICENSE +0 -0
- {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,12 @@
|
|
1
|
-
from .BasicGenerator import BasicGenerator,PageSize
|
1
|
+
from .BasicGenerator import BasicGenerator, PageSize
|
2
2
|
from docx.shared import Inches, RGBColor, Pt, Cm
|
3
|
-
from CivilTools.YDBLoader.BuildingDefine.StairPart import
|
3
|
+
from CivilTools.YDBLoader.BuildingDefine.StairPart import (
|
4
|
+
Position,
|
5
|
+
StairPart,
|
6
|
+
LoadParams,
|
7
|
+
StairLoad,
|
8
|
+
LoadCalulateType,
|
9
|
+
)
|
4
10
|
from .UtilFunctions import MatrixSolver
|
5
11
|
from .DocTable import DocTable
|
6
12
|
from .DocPicture import DocPicture
|
@@ -13,11 +19,11 @@ class StairCalculationReport(BasicGenerator):
|
|
13
19
|
# 修改为A3图纸,横向,两栏
|
14
20
|
self.change_paper_size(PageSize.A4)
|
15
21
|
# 修改纸张Margin,单位mm
|
16
|
-
self.change_paper_margin(20,20,20,20)
|
22
|
+
self.change_paper_margin(20, 20, 20, 20)
|
17
23
|
# 格式统一修改
|
18
24
|
# self.body_style.paragraph_format.line_spacing = Pt(22)
|
19
25
|
self.set_const()
|
20
|
-
|
26
|
+
|
21
27
|
def set_const(self):
|
22
28
|
self.big_title = "现浇板式普通楼梯设计"
|
23
29
|
self.operate_code_title = "执行规范:"
|
@@ -25,76 +31,93 @@ class StairCalculationReport(BasicGenerator):
|
|
25
31
|
"《混凝土结构通用规范》(GB 55008-2021),本文简称《混凝土通用规范》;",
|
26
32
|
"《混凝土结构设计规范》(GB 50010-2010(2015年版)),本文简称《混凝土规范》;",
|
27
33
|
"《工程结构通用规范》(GB 55001-2021);",
|
28
|
-
"《建筑结构荷载规范》(GB 50009-2012),本文简称《荷载规范》;"
|
29
|
-
|
34
|
+
"《建筑结构荷载规范》(GB 50009-2012),本文简称《荷载规范》;",
|
35
|
+
]
|
30
36
|
self.symbol_explain = "钢筋:d-HPB300;D-HRB335;E-HRB400;F-RRB400;G-HRB500;Q-HRBF400;R-HRB550"
|
31
37
|
self.cut_line = "---------------------------------------------------------------------------------------------"
|
32
38
|
self.concrete_data = {
|
33
|
-
30:[14.3, 1.43, 2.01, 30000],
|
34
|
-
35:[16.7, 1.57, 2.20, 31500],
|
35
|
-
40:[19.1, 1.71, 2.39, 32500],
|
39
|
+
30: [14.3, 1.43, 2.01, 30000], # // fc, ft, ftk, E
|
40
|
+
35: [16.7, 1.57, 2.20, 31500], # // fc, ft, ftk, E
|
41
|
+
40: [19.1, 1.71, 2.39, 32500], # // fc, ft, ftk, E
|
36
42
|
}
|
37
43
|
self.concrete_density = 25
|
38
44
|
self.rebar_level = "HRB400"
|
39
45
|
self.rebar_fy = 360
|
40
46
|
self.indent = 0.22
|
41
47
|
self.normal_font_size = 11
|
42
|
-
|
43
|
-
|
48
|
+
|
44
49
|
# 数据入口!!!!
|
45
50
|
def set_stair_data(self):
|
46
|
-
"""这个函数需要重写!!!!!是数据流入的最主要的入口
|
47
|
-
|
48
|
-
|
49
|
-
sp1 = StairPart(position1,13)
|
51
|
+
"""这个函数需要重写!!!!!是数据流入的最主要的入口"""
|
52
|
+
position1 = Position(0, 2180, 0, 1910, 5030, 6850)
|
53
|
+
sp1 = StairPart(position1, 13)
|
50
54
|
sp1.left_thick = sp1.main_thick = sp1.right_thick = 130
|
51
|
-
position2 = Position(0,2180,0,1910,5030,6850)
|
52
|
-
sp2 = StairPart(position2,13)
|
53
|
-
sp2.set_beam_offset(1,500)
|
54
|
-
position3= Position(0,2180,0,1910,5030,6850)
|
55
|
-
sp3 = StairPart(position3,13)
|
56
|
-
sp3.set_beam_offset(2,500)
|
57
|
-
position4= Position(0,2180,0,1910,5030,6850)
|
58
|
-
sp4 = StairPart(position4,13)
|
59
|
-
sp4.set_beam_offset(1,500)
|
60
|
-
sp4.set_beam_offset(2,500)
|
61
|
-
|
62
|
-
self.stair_list =[sp1,sp2,sp3,sp4]
|
63
|
-
|
55
|
+
position2 = Position(0, 2180, 0, 1910, 5030, 6850)
|
56
|
+
sp2 = StairPart(position2, 13)
|
57
|
+
sp2.set_beam_offset(1, 500)
|
58
|
+
position3 = Position(0, 2180, 0, 1910, 5030, 6850)
|
59
|
+
sp3 = StairPart(position3, 13)
|
60
|
+
sp3.set_beam_offset(2, 500)
|
61
|
+
position4 = Position(0, 2180, 0, 1910, 5030, 6850)
|
62
|
+
sp4 = StairPart(position4, 13)
|
63
|
+
sp4.set_beam_offset(1, 500)
|
64
|
+
sp4.set_beam_offset(2, 500)
|
65
|
+
|
66
|
+
self.stair_list = [sp1, sp2, sp3, sp4]
|
67
|
+
|
64
68
|
# 数据入口!!!!
|
65
69
|
def set_calculate_info(self):
|
66
70
|
self.load_param = LoadParams()
|
67
71
|
self.concrete_level = 30
|
68
72
|
self.rebar_area_adjust_coef = 1
|
69
73
|
self.cover_thickness = 15
|
70
|
-
|
74
|
+
|
71
75
|
self.displacement_limit = 200
|
72
76
|
self.crack_width_limit = 0.3
|
73
|
-
|
77
|
+
|
74
78
|
def load_calculate(self):
|
75
|
-
left_dead =
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
self.
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
79
|
+
left_dead = (
|
80
|
+
self.current_stair.left_thick * self.concrete_density / 1000
|
81
|
+
+ self.load_param.append_dead_load
|
82
|
+
)
|
83
|
+
self.left_slab_load = StairLoad(
|
84
|
+
left_dead, self.load_param.live_load, self.load_param
|
85
|
+
)
|
86
|
+
|
87
|
+
right_dead = (
|
88
|
+
self.current_stair.right_thick * self.concrete_density / 1000
|
89
|
+
+ self.load_param.append_dead_load
|
90
|
+
)
|
91
|
+
self.right_slab_load = StairLoad(
|
92
|
+
right_dead, self.load_param.live_load, self.load_param
|
93
|
+
)
|
94
|
+
|
95
|
+
main_dead = (
|
96
|
+
self.current_stair.equivlent_main_slab_thick * self.concrete_density / 1000
|
97
|
+
+ self.load_param.append_dead_load
|
98
|
+
)
|
99
|
+
self.main_slab_load = StairLoad(
|
100
|
+
main_dead, self.load_param.live_load, self.load_param
|
101
|
+
)
|
102
|
+
|
84
103
|
def do_the_math(self):
|
85
104
|
solver = MatrixSolver(self.current_stair)
|
86
|
-
solver.set_load(
|
105
|
+
solver.set_load(
|
106
|
+
self.left_slab_load.q, self.main_slab_load.q, self.right_slab_load.q
|
107
|
+
)
|
87
108
|
self.current_stair.set_calculate_result(solver.submit_problem())
|
88
|
-
|
109
|
+
|
89
110
|
def add_first_part(self):
|
90
111
|
# 添加最大的标题
|
91
112
|
self.add_big_title(self.big_title)
|
92
113
|
# 添加一个2*6的表格,包含项目基本信息和设计人员信息
|
93
|
-
table = DocTable(2,6)
|
94
|
-
table_context = [
|
95
|
-
|
114
|
+
table = DocTable(2, 6)
|
115
|
+
table_context = [
|
116
|
+
["项目名称", "XX项目", "构件编号", "XXXX", "日 期", "2024/10/10"],
|
117
|
+
["设 计", "", "校 对", "", "审 核", ""],
|
118
|
+
]
|
96
119
|
table.set_table_context(table_context)
|
97
|
-
|
120
|
+
|
98
121
|
# table.no_grid = True
|
99
122
|
table.all_bold = True
|
100
123
|
self.add_table(table)
|
@@ -105,7 +128,7 @@ class StairCalculationReport(BasicGenerator):
|
|
105
128
|
doc_par.font_size = 10
|
106
129
|
doc_par.first_line_indent = 0
|
107
130
|
self.add_paragraph(doc_par)
|
108
|
-
|
131
|
+
|
109
132
|
for line in self.operate_code_text_list:
|
110
133
|
doc_par = DocParagraph(line)
|
111
134
|
doc_par.style = self.body_style
|
@@ -120,62 +143,66 @@ class StairCalculationReport(BasicGenerator):
|
|
120
143
|
self.add_paragraph(doc_par)
|
121
144
|
doc_par.context = self.cut_line
|
122
145
|
self.add_paragraph(doc_par)
|
123
|
-
|
124
|
-
def add_single_stair(self,stair:StairPart,index):
|
146
|
+
|
147
|
+
def add_single_stair(self, stair: StairPart, index):
|
125
148
|
self.current_stair = stair
|
126
149
|
self.current_index = index
|
127
|
-
|
150
|
+
|
128
151
|
# 添加一个标题
|
129
|
-
doc_par = DocParagraph(
|
130
|
-
|
152
|
+
doc_par = DocParagraph(
|
153
|
+
f"{self.current_index}、{self.current_stair.stair_type}类梯板,标高区间:{self.current_stair.stair_elevation_range}"
|
154
|
+
)
|
155
|
+
doc_par.style = self.body_style
|
131
156
|
doc_par.first_line_indent = 0
|
132
157
|
doc_par.font_size = 11
|
133
158
|
doc_par.is_bold = True
|
134
159
|
doc_par.par_level = 1
|
135
|
-
self.add_title(doc_par)
|
136
|
-
|
160
|
+
self.add_title(doc_par)
|
161
|
+
|
137
162
|
# 进行必要的计算
|
138
163
|
self.load_calculate()
|
139
|
-
|
164
|
+
|
140
165
|
self.do_the_math()
|
141
|
-
|
166
|
+
|
142
167
|
# 添加part1已知条件
|
143
168
|
self.add_1_basic_info()
|
144
169
|
self.add_2_load_and_calculate()
|
145
170
|
self.add_3_result()
|
146
171
|
self.add_blank_paragraph()
|
147
|
-
|
148
|
-
|
149
|
-
|
172
|
+
|
150
173
|
def add_1_basic_info(self):
|
151
174
|
stair = self.current_stair
|
152
|
-
index =
|
175
|
+
index = self.current_index
|
153
176
|
indent = self.indent
|
154
177
|
font_size = self.normal_font_size
|
155
|
-
|
178
|
+
# 添加一个二级标题
|
156
179
|
doc_par = DocParagraph(f"{index}.1 已知条件")
|
157
|
-
doc_par.style =
|
180
|
+
doc_par.style = self.body_style
|
158
181
|
doc_par.first_line_indent = 0
|
159
182
|
doc_par.font_size = font_size
|
160
183
|
doc_par.is_bold = False
|
161
184
|
doc_par.par_level = 2
|
162
185
|
self.add_title(doc_par)
|
163
|
-
|
186
|
+
|
164
187
|
# 几何信息
|
165
188
|
doc_par = DocParagraph("几何信息:")
|
166
|
-
doc_par.style =
|
167
|
-
doc_par.first_line_indent =indent
|
189
|
+
doc_par.style = self.body_style
|
190
|
+
doc_par.first_line_indent = indent
|
168
191
|
doc_par.font_size = font_size
|
169
192
|
self.add_paragraph(doc_par)
|
170
|
-
|
171
|
-
doc_par = DocParagraph(
|
172
|
-
|
173
|
-
|
193
|
+
|
194
|
+
doc_par = DocParagraph(
|
195
|
+
f"左标高={stair.position.left_elevation/1000:.3f}m;右标高={stair.position.right_elevation/1000:.3f}m"
|
196
|
+
)
|
197
|
+
doc_par.style = self.body_style
|
198
|
+
doc_par.first_line_indent = indent * 2
|
174
199
|
doc_par.font_size = font_size
|
175
200
|
self.add_paragraph(doc_par)
|
176
201
|
doc_par.context = f"左平台长度={stair.position.left_plat_length}mm;右平台长度={stair.position.right_plat_length}mm"
|
177
202
|
self.add_paragraph(doc_par)
|
178
|
-
doc_par.context =
|
203
|
+
doc_par.context = (
|
204
|
+
f"左平台厚度={stair.left_thick}mm;右平台厚度={stair.right_thick}mm"
|
205
|
+
)
|
179
206
|
self.add_paragraph(doc_par)
|
180
207
|
doc_par.context = f"内延长(左)={stair.beam_list[1].offset}mm;内延长(右)={stair.beam_list[2].offset}mm"
|
181
208
|
self.add_paragraph(doc_par)
|
@@ -188,22 +215,26 @@ class StairCalculationReport(BasicGenerator):
|
|
188
215
|
doc_par.is_bold = False
|
189
216
|
self.add_paragraph(doc_par)
|
190
217
|
self.add_blank_paragraph()
|
191
|
-
|
218
|
+
|
192
219
|
# 荷载信息
|
193
220
|
doc_par = DocParagraph("荷载信息:")
|
194
|
-
doc_par.style =
|
195
|
-
doc_par.first_line_indent =indent
|
221
|
+
doc_par.style = self.body_style
|
222
|
+
doc_par.first_line_indent = indent
|
196
223
|
doc_par.font_size = font_size
|
197
224
|
self.add_paragraph(doc_par)
|
198
|
-
|
199
|
-
doc_par = DocParagraph(
|
225
|
+
|
226
|
+
doc_par = DocParagraph(
|
227
|
+
f"附加恒荷载={self.load_param.append_dead_load:.3f}kN/m^{{2}} 活荷载={self.load_param.live_load:.3f}kN/m^{{2}}"
|
228
|
+
)
|
200
229
|
doc_par.style = self.body_style
|
201
|
-
doc_par.first_line_indent = indent*2
|
230
|
+
doc_par.first_line_indent = indent * 2
|
202
231
|
doc_par.font_size = font_size
|
203
232
|
self.add_paragraph(doc_par)
|
204
233
|
doc_par.context = f"恒载分项系数:{self.load_param.dead_load_coef};活载分项系数:{self.load_param.live_load_coef};活载调整系数:γ_{{L}} ={self.load_param.live_load_adjust_coef:.2f}"
|
205
234
|
self.add_paragraph(doc_par)
|
206
|
-
doc_par.context =
|
235
|
+
doc_par.context = (
|
236
|
+
f"活载准永久值系数:{self.load_param.live_load_permenent_coef}"
|
237
|
+
)
|
207
238
|
self.add_paragraph(doc_par)
|
208
239
|
doc_par.context = f"混凝土等级:C{self.concrete_level},f_{{c}} ={self.concrete_data[self.concrete_level][0]:.2f}MPa"
|
209
240
|
self.add_paragraph(doc_par)
|
@@ -211,55 +242,65 @@ class StairCalculationReport(BasicGenerator):
|
|
211
242
|
self.add_paragraph(doc_par)
|
212
243
|
doc_par.context = f"配筋调整系数:{self.rebar_area_adjust_coef:.2f};纵筋保护层厚度:c={self.cover_thickness}mm"
|
213
244
|
self.add_paragraph(doc_par)
|
214
|
-
doc_par.context =
|
245
|
+
doc_par.context = (
|
246
|
+
f"梯板纵筋等级:{self.rebar_level};f_{{y}} ={self.rebar_fy}MPa"
|
247
|
+
)
|
215
248
|
self.add_paragraph(doc_par)
|
216
|
-
doc_par.context =
|
249
|
+
doc_par.context = (
|
250
|
+
f"梯梁纵筋等级:{self.rebar_level};f_{{y}} ={self.rebar_fy}MPa"
|
251
|
+
)
|
217
252
|
self.add_paragraph(doc_par)
|
218
|
-
doc_par.context =
|
253
|
+
doc_par.context = (
|
254
|
+
f"梯梁箍筋等级:{self.rebar_level};f_{{y}} ={self.rebar_fy}MPa"
|
255
|
+
)
|
219
256
|
self.add_paragraph(doc_par)
|
220
|
-
|
257
|
+
|
221
258
|
# 验算信息
|
222
259
|
doc_par = DocParagraph("验算信息:")
|
223
|
-
doc_par.style =
|
224
|
-
doc_par.first_line_indent =indent
|
260
|
+
doc_par.style = self.body_style
|
261
|
+
doc_par.first_line_indent = indent
|
225
262
|
doc_par.font_size = font_size
|
226
263
|
self.add_paragraph(doc_par)
|
227
|
-
|
228
|
-
doc_par = DocParagraph(
|
264
|
+
|
265
|
+
doc_par = DocParagraph(
|
266
|
+
f"挠度限值:L_{{0}} /{self.displacement_limit};裂缝限值:{self.crack_width_limit}mm"
|
267
|
+
)
|
229
268
|
doc_par.style = self.body_style
|
230
|
-
doc_par.first_line_indent = indent*2
|
269
|
+
doc_par.first_line_indent = indent * 2
|
231
270
|
doc_par.font_size = font_size
|
232
271
|
self.add_paragraph(doc_par)
|
233
|
-
|
272
|
+
|
234
273
|
# 计算要求
|
235
274
|
doc_par = DocParagraph("计算要求:")
|
236
|
-
doc_par.style =
|
237
|
-
doc_par.first_line_indent =indent
|
275
|
+
doc_par.style = self.body_style
|
276
|
+
doc_par.first_line_indent = indent
|
238
277
|
doc_par.font_size = font_size
|
239
278
|
self.add_paragraph(doc_par)
|
240
|
-
|
241
|
-
doc_par = DocParagraph(
|
279
|
+
|
280
|
+
doc_par = DocParagraph(
|
281
|
+
"(1)楼梯板计算;(2)平台梁计算;(3)平台板裂缝验算;(4)平台板挠度验算;"
|
282
|
+
)
|
242
283
|
doc_par.style = self.body_style
|
243
|
-
doc_par.first_line_indent = indent*2
|
284
|
+
doc_par.first_line_indent = indent * 2
|
244
285
|
doc_par.font_size = font_size
|
245
286
|
self.add_paragraph(doc_par)
|
246
287
|
|
247
288
|
def add_2_load_and_calculate(self):
|
248
|
-
index =
|
289
|
+
index = self.current_index
|
249
290
|
indent = self.indent
|
250
291
|
font_size = self.normal_font_size
|
251
|
-
|
292
|
+
# 添加一个二级标题
|
252
293
|
doc_par = DocParagraph(f"{index}.2 荷载与内力计算")
|
253
|
-
doc_par.style =
|
294
|
+
doc_par.style = self.body_style
|
254
295
|
doc_par.first_line_indent = 0
|
255
296
|
doc_par.font_size = font_size
|
256
297
|
doc_par.is_bold = False
|
257
298
|
doc_par.par_level = 2
|
258
299
|
self.add_title(doc_par)
|
259
|
-
|
300
|
+
|
260
301
|
doc_par = DocParagraph("(1)荷载计算:")
|
261
|
-
doc_par.style =
|
262
|
-
doc_par.first_line_indent =0
|
302
|
+
doc_par.style = self.body_style
|
303
|
+
doc_par.first_line_indent = 0
|
263
304
|
doc_par.font_size = font_size
|
264
305
|
self.add_paragraph(doc_par)
|
265
306
|
# 标准值
|
@@ -267,35 +308,34 @@ class StairCalculationReport(BasicGenerator):
|
|
267
308
|
doc_par.first_line_indent = indent
|
268
309
|
self.add_paragraph(doc_par)
|
269
310
|
doc_par.context = self.get_load_text(LoadCalulateType.qk)
|
270
|
-
doc_par.first_line_indent = indent*2
|
311
|
+
doc_par.first_line_indent = indent * 2
|
271
312
|
self.add_paragraph(doc_par)
|
272
|
-
|
313
|
+
# 设计值
|
273
314
|
doc_par.context = "设计值(q):"
|
274
315
|
doc_par.first_line_indent = indent
|
275
316
|
self.add_paragraph(doc_par)
|
276
317
|
doc_par.context = self.get_load_text(LoadCalulateType.q)
|
277
|
-
doc_par.first_line_indent = indent*2
|
318
|
+
doc_par.first_line_indent = indent * 2
|
278
319
|
self.add_paragraph(doc_par)
|
279
|
-
|
320
|
+
# 准永久值
|
280
321
|
doc_par.context = "准永久值(qe):"
|
281
322
|
doc_par.first_line_indent = indent
|
282
323
|
self.add_paragraph(doc_par)
|
283
324
|
doc_par.context = self.get_load_text(LoadCalulateType.qe)
|
284
|
-
doc_par.first_line_indent = indent*2
|
325
|
+
doc_par.first_line_indent = indent * 2
|
285
326
|
self.add_paragraph(doc_par)
|
286
327
|
|
287
328
|
doc_par.context = "(2)内力计算:"
|
288
|
-
doc_par.first_line_indent =0
|
329
|
+
doc_par.first_line_indent = 0
|
289
330
|
self.add_paragraph(doc_par)
|
290
331
|
# 标准值
|
291
332
|
doc_par.context = "a.楼梯板:矩阵位移法求解。"
|
292
333
|
doc_par.first_line_indent = indent
|
293
334
|
self.add_paragraph(doc_par)
|
294
|
-
|
295
335
|
|
296
336
|
self.add_blank_paragraph()
|
297
|
-
|
298
|
-
def get_load_text(self, type:LoadCalulateType):
|
337
|
+
|
338
|
+
def get_load_text(self, type: LoadCalulateType):
|
299
339
|
if type == LoadCalulateType.qk:
|
300
340
|
Q1 = self.left_slab_load.qk
|
301
341
|
Q2 = self.main_slab_load.qk
|
@@ -310,156 +350,180 @@ class StairCalculationReport(BasicGenerator):
|
|
310
350
|
Q3 = self.right_slab_load.qe
|
311
351
|
else:
|
312
352
|
Q1 = Q2 = Q3 = 0
|
313
|
-
|
314
|
-
if self.current_stair.stair_type=="AT":
|
353
|
+
|
354
|
+
if self.current_stair.stair_type == "AT":
|
315
355
|
return f"斜梯段:{Q2:.2f}kN/m"
|
316
356
|
elif self.current_stair.stair_type == "BT":
|
317
357
|
return f"左延伸段:{Q1:.2f}kN/m\t斜梯段:{Q2:.2f}kN/m"
|
318
358
|
elif self.current_stair.stair_type == "CT":
|
319
359
|
return f"斜梯段:{Q2:.2f}kN/m\t右延伸段:{Q3:.2f}kN/m"
|
320
360
|
elif self.current_stair.stair_type == "DT":
|
321
|
-
return
|
361
|
+
return (
|
362
|
+
f"左延伸段:{Q1:.2f}kN/m\t斜梯段:{Q2:.2f}kN/m\t右延伸段:{Q3:.2f}kN/m"
|
363
|
+
)
|
322
364
|
else:
|
323
365
|
return "未知踏步类型,暂无数据"
|
324
366
|
|
325
367
|
def add_3_result(self):
|
326
|
-
index =
|
368
|
+
index = self.current_index
|
327
369
|
indent = self.indent
|
328
370
|
font_size = self.normal_font_size
|
329
|
-
|
371
|
+
# 添加一个二级标题
|
330
372
|
doc_par = DocParagraph(f"{index}.3 计算结果")
|
331
|
-
doc_par.style =
|
373
|
+
doc_par.style = self.body_style
|
332
374
|
doc_par.first_line_indent = 0
|
333
375
|
doc_par.font_size = font_size
|
334
376
|
doc_par.is_bold = False
|
335
377
|
doc_par.par_level = 2
|
336
378
|
self.add_title(doc_par)
|
337
|
-
|
379
|
+
|
338
380
|
doc_par = DocParagraph("计算说明:")
|
339
|
-
doc_par.style =
|
381
|
+
doc_par.style = self.body_style
|
340
382
|
doc_par.first_line_indent = 0
|
341
383
|
doc_par.font_size = font_size
|
342
384
|
self.add_paragraph(doc_par)
|
343
|
-
|
385
|
+
|
344
386
|
doc_par.context = "(a)简化方法:取板沿着宽度方向单位长度的板带"
|
345
387
|
doc_par.first_line_indent = indent
|
346
388
|
self.add_paragraph(doc_par)
|
347
|
-
|
389
|
+
|
348
390
|
doc_par.context = "(b)计算方法:矩阵位移法"
|
349
391
|
self.add_paragraph(doc_par)
|
350
|
-
|
392
|
+
|
351
393
|
doc_par.context = "单位说明:"
|
352
394
|
doc_par.first_line_indent = 0
|
353
395
|
self.add_paragraph(doc_par)
|
354
|
-
|
396
|
+
|
355
397
|
doc_par.context = "弯 矩:kN·m\t\t剪 力:kN/m\t\t挠 度:mm"
|
356
398
|
doc_par.first_line_indent = indent
|
357
399
|
self.add_paragraph(doc_par)
|
358
400
|
doc_par.context = r"纵筋面积:mm^{2}/m\t\t截面尺寸:mm×mm\t\t裂 缝:mm"
|
359
401
|
self.add_paragraph(doc_par)
|
360
|
-
|
402
|
+
|
361
403
|
self.add_blank_paragraph()
|
362
404
|
doc_par.context = "板段配筋计算结果:"
|
363
405
|
doc_par.first_line_indent = 0
|
364
406
|
self.add_paragraph(doc_par)
|
365
407
|
doc_par.context = "---------------------------------------------------------------------------------------------"
|
366
408
|
self.add_paragraph(doc_par)
|
367
|
-
|
409
|
+
|
368
410
|
self.insert_calculate_table()
|
369
|
-
|
411
|
+
|
370
412
|
# self.insert_all_pictures()
|
371
|
-
|
413
|
+
|
372
414
|
self.add_blank_paragraph()
|
373
|
-
|
415
|
+
|
374
416
|
def insert_calculate_table(self):
|
375
417
|
table_index = 1
|
376
418
|
ft = self.concrete_data[self.concrete_level][1]
|
377
|
-
if
|
378
|
-
|
379
|
-
|
380
|
-
|
419
|
+
if (
|
420
|
+
self.current_stair.stair_type == "BT"
|
421
|
+
or self.current_stair.stair_type == "DT"
|
422
|
+
):
|
423
|
+
left_table = DocTable(8, 4)
|
424
|
+
left_table.merge_cells(3, 1, 3, 3)
|
425
|
+
left_table.set_table_title(
|
426
|
+
f"计算板段-{table_index}(左延伸段):截面B×H=1000mm×{self.current_stair.left_thick}mm"
|
427
|
+
)
|
381
428
|
moments = self.current_stair.get_left_slab_table_moments()
|
382
|
-
shears = self.current_stair.get_left_slab_table_shears()
|
383
|
-
shear_context = self.current_stair.get_shear_validate(
|
429
|
+
shears = self.current_stair.get_left_slab_table_shears()
|
430
|
+
shear_context = self.current_stair.get_shear_validate(
|
431
|
+
"left", ft, self.cover_thickness
|
432
|
+
)
|
384
433
|
|
385
434
|
table_context = [
|
386
|
-
["截面位置","左","中","右"],
|
387
|
-
[
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
["
|
435
|
+
["截面位置", "左", "中", "右"],
|
436
|
+
[
|
437
|
+
"弯矩(M)",
|
438
|
+
f"{moments[0]:.2f}",
|
439
|
+
f"{moments[1]:.2f}",
|
440
|
+
f"{moments[2]:.2f}",
|
441
|
+
],
|
442
|
+
["剪力(V)", f"{shears[0]:.2f}", f"{shears[1]:.2f}", f"{shears[2]:.2f}"],
|
443
|
+
["抗剪截面验算", shear_context],
|
444
|
+
["上部计算纵筋As'", "", "", ""],
|
445
|
+
["下部计算纵筋As", "", "", ""],
|
446
|
+
["上部纵筋实配", "", "", ""],
|
447
|
+
["下部纵筋实配", "", "", ""],
|
394
448
|
]
|
395
449
|
left_table.set_table_context(table_context)
|
396
450
|
self.add_table(left_table)
|
397
451
|
table_index += 1
|
398
|
-
|
399
|
-
cal_table = DocTable(13,4)
|
400
|
-
for i in [3,8,9,11,12]:
|
401
|
-
cal_table.merge_cells(i,1,i,3)
|
402
|
-
cal_table.set_table_title(
|
452
|
+
|
453
|
+
cal_table = DocTable(13, 4)
|
454
|
+
for i in [3, 8, 9, 11, 12]:
|
455
|
+
cal_table.merge_cells(i, 1, i, 3)
|
456
|
+
cal_table.set_table_title(
|
457
|
+
f"计算板段-{table_index}(斜梯段):截面B×H=1000mm×{self.current_stair.main_thick}mm"
|
458
|
+
)
|
403
459
|
moments = self.current_stair.get_main_table_moments()
|
404
460
|
shears = self.current_stair.get_main_table_shears()
|
405
|
-
shear_context = self.current_stair.get_shear_validate(
|
406
|
-
|
461
|
+
shear_context = self.current_stair.get_shear_validate(
|
462
|
+
"main", ft, self.cover_thickness
|
463
|
+
)
|
464
|
+
|
407
465
|
table_context = [
|
408
|
-
["截面位置","左","中","右"],
|
409
|
-
["弯矩(M)",f"{moments[0]:.2f}",f"{moments[1]:.2f}",f"{moments[2]:.2f}"],
|
410
|
-
["剪力(V)",f"{shears[0]:.2f}",f"{shears[1]:.2f}",f"{shears[2]:.2f}"],
|
411
|
-
["抗剪截面验算",shear_context],
|
412
|
-
["上部计算纵筋As'","","",""],
|
413
|
-
["下部计算纵筋As","","",""],
|
414
|
-
["上部纵筋实配","","",""],
|
415
|
-
["下部纵筋实配","","",""],
|
416
|
-
["挠度限值",f"[f]={self.crack_width_limit:.2f}mm"],
|
417
|
-
["挠度验算结果","满足"],
|
418
|
-
["裂缝宽度","","",""],
|
419
|
-
["裂缝限值",f"[ω]={self.crack_width_limit:.2f}mm"],
|
420
|
-
["裂缝验算结果",""]
|
466
|
+
["截面位置", "左", "中", "右"],
|
467
|
+
["弯矩(M)", f"{moments[0]:.2f}", f"{moments[1]:.2f}", f"{moments[2]:.2f}"],
|
468
|
+
["剪力(V)", f"{shears[0]:.2f}", f"{shears[1]:.2f}", f"{shears[2]:.2f}"],
|
469
|
+
["抗剪截面验算", shear_context],
|
470
|
+
["上部计算纵筋As'", "", "", ""],
|
471
|
+
["下部计算纵筋As", "", "", ""],
|
472
|
+
["上部纵筋实配", "", "", ""],
|
473
|
+
["下部纵筋实配", "", "", ""],
|
474
|
+
["挠度限值", f"[f]={self.crack_width_limit:.2f}mm"],
|
475
|
+
["挠度验算结果", "满足"],
|
476
|
+
["裂缝宽度", "", "", ""],
|
477
|
+
["裂缝限值", f"[ω]={self.crack_width_limit:.2f}mm"],
|
478
|
+
["裂缝验算结果", ""],
|
479
|
+
]
|
421
480
|
cal_table.set_table_context(table_context)
|
422
481
|
self.add_table(cal_table)
|
423
482
|
table_index += 1
|
424
|
-
|
425
|
-
if
|
426
|
-
|
427
|
-
|
428
|
-
|
483
|
+
|
484
|
+
if (
|
485
|
+
self.current_stair.stair_type == "CT"
|
486
|
+
or self.current_stair.stair_type == "DT"
|
487
|
+
):
|
488
|
+
right_table = DocTable(8, 4)
|
489
|
+
right_table.merge_cells(3, 1, 3, 3)
|
490
|
+
right_table.set_table_title(
|
491
|
+
f"计算板段-{table_index}(右延伸段):截面B×H=1000mm×{self.current_stair.right_thick}mm"
|
492
|
+
)
|
429
493
|
|
430
494
|
moments = self.current_stair.get_right_slab_table_moments()
|
431
|
-
shears = self.current_stair.get_right_slab_table_shears()
|
432
|
-
shear_context = self.current_stair.get_shear_validate(
|
433
|
-
|
434
|
-
|
495
|
+
shears = self.current_stair.get_right_slab_table_shears()
|
496
|
+
shear_context = self.current_stair.get_shear_validate(
|
497
|
+
"right", ft, self.cover_thickness
|
498
|
+
)
|
499
|
+
|
435
500
|
table_context = [
|
436
|
-
["截面位置","左","中","右"],
|
437
|
-
[
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
["
|
501
|
+
["截面位置", "左", "中", "右"],
|
502
|
+
[
|
503
|
+
"弯矩(M)",
|
504
|
+
f"{moments[0]:.2f}",
|
505
|
+
f"{moments[1]:.2f}",
|
506
|
+
f"{moments[2]:.2f}",
|
507
|
+
],
|
508
|
+
["剪力(V)", f"{shears[0]:.2f}", f"{shears[1]:.2f}", f"{shears[2]:.2f}"],
|
509
|
+
["抗剪截面验算", shear_context],
|
510
|
+
["上部计算纵筋As'", "", "", ""],
|
511
|
+
["下部计算纵筋As", "", "", ""],
|
512
|
+
["上部纵筋实配", "", "", ""],
|
513
|
+
["下部纵筋实配", "", "", ""],
|
444
514
|
]
|
445
515
|
right_table.set_table_context(table_context)
|
446
516
|
|
447
|
-
|
448
517
|
self.add_table(right_table)
|
449
518
|
table_index += 1
|
450
|
-
|
451
|
-
|
519
|
+
|
452
520
|
def create(self):
|
453
521
|
self.add_first_part()
|
454
522
|
for i in range(len(self.stair_list)):
|
455
523
|
stair = self.stair_list[i]
|
456
|
-
self.add_single_stair(stair,i+1)
|
457
|
-
if i < len(self.stair_list)-1:
|
524
|
+
self.add_single_stair(stair, i + 1)
|
525
|
+
if i < len(self.stair_list) - 1:
|
458
526
|
self.add_page_break()
|
459
|
-
|
460
|
-
def save_to_file(self, path):
|
527
|
+
|
528
|
+
def save_to_file(self, path):
|
461
529
|
self.save(path)
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|