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.
Files changed (48) hide show
  1. CivilTools/Const/CAD.py +2 -0
  2. CivilTools/Const/Concrete.py +144 -0
  3. CivilTools/Const/Steel.py +21 -0
  4. CivilTools/Const/__init__.py +3 -0
  5. CivilTools/DXFGenerator/BasicDXF.py +238 -1
  6. CivilTools/DXFGenerator/DetailDXF.py +324 -0
  7. CivilTools/DXFGenerator/DrawingAttribs.py +45 -0
  8. CivilTools/DXFGenerator/LayerManager.py +37 -0
  9. CivilTools/DXFGenerator/__init__.py +3 -0
  10. CivilTools/FigureGenerator/BasicPNGPlotter.py +28 -25
  11. CivilTools/FigureGenerator/BasicPltPlotter.py +115 -1
  12. CivilTools/FigureGenerator/SeismicReport/ShearMassRatio.py +73 -0
  13. CivilTools/FigureGenerator/SeismicReport/ShearMoment.py +71 -0
  14. CivilTools/FigureGenerator/SeismicReport/__init__.py +2 -0
  15. CivilTools/FigureGenerator/StairCalculationSheetPNGPlotter.py +2 -8
  16. CivilTools/ReportGenerator/BasicGenerator.py +109 -83
  17. CivilTools/ReportGenerator/DocParagraph.py +3 -5
  18. CivilTools/ReportGenerator/DocPicture.py +7 -8
  19. CivilTools/ReportGenerator/DocTable.py +11 -11
  20. CivilTools/ReportGenerator/SeismicReport.py +302 -143
  21. CivilTools/ReportGenerator/SeismicReportTemplate.py +523 -202
  22. CivilTools/ReportGenerator/StairCalculationReport.py +249 -185
  23. CivilTools/ReportGenerator/UtilFunctions.py +108 -104
  24. CivilTools/ReportGenerator/__init__.py +2 -2
  25. CivilTools/YDBLoader/BuildingDefine/Beam/Beam.py +12 -15
  26. CivilTools/YDBLoader/BuildingDefine/Column/Column.py +5 -5
  27. CivilTools/YDBLoader/BuildingDefine/ComponentType.py +1 -1
  28. CivilTools/YDBLoader/BuildingDefine/Geometry/Grid.py +8 -12
  29. CivilTools/YDBLoader/BuildingDefine/Geometry/Joint.py +11 -10
  30. CivilTools/YDBLoader/BuildingDefine/Geometry/StandFloor.py +1 -1
  31. CivilTools/YDBLoader/BuildingDefine/GlobalResult/BasicResult.py +44 -24
  32. CivilTools/YDBLoader/BuildingDefine/GlobalResult/SeismicResult.py +168 -54
  33. CivilTools/YDBLoader/BuildingDefine/Section/Section.py +26 -31
  34. CivilTools/YDBLoader/BuildingDefine/Section/ShapeEnum.py +9 -9
  35. CivilTools/YDBLoader/BuildingDefine/Slab/Slab.py +1 -1
  36. CivilTools/YDBLoader/BuildingDefine/StairPart/LoadDefine.py +16 -10
  37. CivilTools/YDBLoader/BuildingDefine/StairPart/StairComponent.py +41 -37
  38. CivilTools/YDBLoader/BuildingDefine/StairPart/StairPart.py +133 -78
  39. CivilTools/YDBLoader/SQLiteConnector/Connector.py +16 -8
  40. CivilTools/YDBLoader/SQLiteConnector/RowDataFactory.py +19 -17
  41. CivilTools/YDBLoader/SQLiteConnector/YDBTableName.py +31 -20
  42. CivilTools/YDBLoader/YDBLoader.py +128 -110
  43. {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/METADATA +88 -5
  44. civil_tools_v-0.0.3.dist-info/RECORD +60 -0
  45. {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/WHEEL +1 -1
  46. civil_tools_v-0.0.1.dist-info/RECORD +0 -50
  47. {civil_tools_v-0.0.1.dist-info → civil_tools_v-0.0.3.dist-info}/LICENSE +0 -0
  48. {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 Position, StairPart,LoadParams,StairLoad,LoadCalulateType
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], #// fc, ft, ftk, E
34
- 35:[16.7, 1.57, 2.20, 31500], #// fc, ft, ftk, E
35
- 40:[19.1, 1.71, 2.39, 32500], #// fc, ft, ftk, E
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
- position1 = Position(0,2180,0,1910,5030,6850)
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 = self.current_stair.left_thick * self.concrete_density / 1000 + self.load_param.append_dead_load
76
- self.left_slab_load = StairLoad(left_dead,self.load_param.live_load,self.load_param)
77
-
78
- right_dead = self.current_stair.right_thick * self.concrete_density / 1000 + self.load_param.append_dead_load
79
- self.right_slab_load = StairLoad(right_dead,self.load_param.live_load,self.load_param)
80
-
81
- main_dead = self.current_stair.equivlent_main_slab_thick * self.concrete_density / 1000 + self.load_param.append_dead_load
82
- self.main_slab_load = StairLoad(main_dead,self.load_param.live_load,self.load_param)
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( self.left_slab_load.q,self.main_slab_load.q,self.right_slab_load.q)
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 = [["项目名称","XX项目","构件编号","XXXX","日 期","2024/10/10"],
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(f"{self.current_index}、{self.current_stair.stair_type}类梯板,标高区间:{self.current_stair.stair_elevation_range}")
130
- doc_par.style = self.body_style
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 = self.current_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 = self.body_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 = self.body_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(f"左标高={stair.position.left_elevation/1000:.3f}m;右标高={stair.position.right_elevation/1000:.3f}m")
172
- doc_par.style = self.body_style
173
- doc_par.first_line_indent = indent*2
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 = f"左平台厚度={stair.left_thick}mm;右平台厚度={stair.right_thick}mm"
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 = self.body_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(f"附加恒荷载={self.load_param.append_dead_load:.3f}kN/m^{{2}} 活荷载={self.load_param.live_load:.3f}kN/m^{{2}}")
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 = f"活载准永久值系数:{self.load_param.live_load_permenent_coef}"
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 = f"梯板纵筋等级:{self.rebar_level};f_{{y}} ={self.rebar_fy}MPa"
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 = f"梯梁纵筋等级:{self.rebar_level};f_{{y}} ={self.rebar_fy}MPa"
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 = f"梯梁箍筋等级:{self.rebar_level};f_{{y}} ={self.rebar_fy}MPa"
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 = self.body_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(f"挠度限值:L_{{0}} /{self.displacement_limit};裂缝限值:{self.crack_width_limit}mm")
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 = self.body_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("(1)楼梯板计算;(2)平台梁计算;(3)平台板裂缝验算;(4)平台板挠度验算;")
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 = self.current_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 = self.body_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 = self.body_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 f"左延伸段:{Q1:.2f}kN/m\t斜梯段:{Q2:.2f}kN/m\t右延伸段:{Q3:.2f}kN/m"
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 = self.current_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 = self.body_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 = self.body_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 self.current_stair.stair_type == "BT" or self.current_stair.stair_type == "DT":
378
- left_table = DocTable(8,4)
379
- left_table.merge_cells(3,1,3,3)
380
- left_table.set_table_title(f"计算板段-{table_index}(左延伸段):截面B×H=1000mm×{self.current_stair.left_thick}mm")
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("left",ft,self.cover_thickness)
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
- ["弯矩(M)",f"{moments[0]:.2f}",f"{moments[1]:.2f}",f"{moments[2]:.2f}"],
388
- ["剪力(V)",f"{shears[0]:.2f}",f"{shears[1]:.2f}",f"{shears[2]:.2f}"],
389
- ["抗剪截面验算",shear_context],
390
- ["上部计算纵筋As'","","",""],
391
- ["下部计算纵筋As","","",""],
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(f"计算板段-{table_index}(斜梯段):截面B×H=1000mm×{self.current_stair.main_thick}mm")
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("main",ft,self.cover_thickness)
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 self.current_stair.stair_type == "CT" or self.current_stair.stair_type == "DT":
426
- right_table = DocTable(8,4)
427
- right_table.merge_cells(3,1,3,3)
428
- right_table.set_table_title(f"计算板段-{table_index}(右延伸段):截面B×H=1000mm×{self.current_stair.right_thick}mm")
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("right",ft,self.cover_thickness)
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
- ["弯矩(M)",f"{moments[0]:.2f}",f"{moments[1]:.2f}",f"{moments[2]:.2f}"],
438
- ["剪力(V)",f"{shears[0]:.2f}",f"{shears[1]:.2f}",f"{shears[2]:.2f}"],
439
- ["抗剪截面验算",shear_context],
440
- ["上部计算纵筋As'","","",""],
441
- ["下部计算纵筋As","","",""],
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
-