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,240 +1,561 @@
1
1
  from typing import List
2
+ from ..YDBLoader.BuildingDefine import Period
3
+
4
+
5
+ X_DIRECTION = "X向"
6
+ Y_DIRECTION = "Y向"
7
+
2
8
 
3
9
  class ChapterTemplate:
4
- def __init__(self, title,paragraph:List,table=None,picture=None,table_context = None,*args, **kwargs):
10
+ def __init__(
11
+ self,
12
+ title,
13
+ paragraph: List,
14
+ table=None,
15
+ picture=None,
16
+ table_context=None,
17
+ *args,
18
+ **kwargs,
19
+ ):
5
20
  self.title = title
6
21
  self.paragraph = paragraph
7
22
  self.table = table
8
23
  self.picture = picture
9
24
  self.table_context = table_context
10
25
 
26
+
27
+ def period_para_analysis(period_result: Period, chapter_index: int, sub_index: int):
28
+ first_para = __period_first_para(period_result, chapter_index, sub_index)
29
+ second_para = __period_second_para(period_result)
30
+ return [first_para, second_para]
31
+
32
+
33
+ def __period_first_para(period_result: Period, chapter_index: int, sub_index: int):
34
+ type_1 = period_result.periods[0].direction
35
+ type_2 = period_result.periods[1].direction
36
+ type_3 = period_result.periods[2].direction
37
+ first_para = (
38
+ f"表{chapter_index}.{sub_index}.1为强制刚性楼板假定下计算得到的结构模态信息,"
39
+ )
40
+ if type_1.upper() == "X" and type_2.upper() == "Y" and type_3.upper() == "Z":
41
+ z_x = period_result.periods[2].time / period_result.periods[0].time
42
+ z_y = period_result.periods[2].time / period_result.periods[1].time
43
+ first_para += (
44
+ "前两阶振型分别为X、Y向平动振型,第三阶振型为Z向扭转振型;"
45
+ + f"结构第一扭转周期与第一、第二平动周期的比值分别为{z_x:.2f}和{z_y:.2f}。"
46
+ )
47
+ elif type_1.upper() == "Y" and type_2.upper() == "X" and type_3.upper() == "Z":
48
+ z_y = period_result.periods[2].time / period_result.periods[0].time
49
+ z_x = period_result.periods[2].time / period_result.periods[1].time
50
+ first_para += (
51
+ "前两阶振型分别为Y、X向平动振型,第三阶振型为Z向扭转振型;"
52
+ + f"结构第一扭转周期与第一、第二平动周期的比值分别为{z_y:.2f}和{z_x:.2f}。"
53
+ )
54
+ elif type_1.upper() == "X" and type_2.upper() == "Z" and type_3.upper() == "Y":
55
+ z_x = period_result.periods[1].time / period_result.periods[0].time
56
+ first_para += (
57
+ "第一阶振型为X向平动,第二阶振型为Z向扭转,第三阶振型为Y向平动;"
58
+ + f"结构第一扭转周期与第一平动周期的比值分别为{z_x:.2f}。"
59
+ )
60
+ elif type_1.upper() == "Y" and type_2.upper() == "Z" and type_3.upper() == "X":
61
+ z_y = period_result.periods[1].time / period_result.periods[0].time
62
+ first_para += (
63
+ "第一阶振型为Y向平动,第二阶振型为Z向扭转,第三振阶型为X向平动;"
64
+ + f"结构第一扭转周期与第一平动周期的比值分别为{z_y:.2f}。"
65
+ )
66
+ elif type_1.upper() == "Z" and type_2.upper() == "X" and type_3.upper() == "Y":
67
+ first_para += "*{第一阶振型为Z向扭转,第二、三阶振型分别为X、Y向平动,请注意复核计算结果;}"
68
+ else:
69
+ first_para += "*{第一阶振型为Z向扭转,第二、三阶振型分别为Y、X向平动,请注意复核计算结果;}"
70
+ first_para += f"结构前三振型如图{chapter_index}.{sub_index}.1所示。"
71
+ return first_para
72
+
73
+
74
+ def __period_second_para(period_result: Period):
75
+ total_participate_x = sum([p.mass_participate_x for p in period_result.periods])
76
+ total_participate_y = sum([p.mass_participate_y for p in period_result.periods])
77
+ if total_participate_x >= 0.9 and total_participate_y >= 0.9:
78
+ second_para = (
79
+ "从上表可以看出,X、Y方向平动的质量参与系数均大于90%,满足规范要求。"
80
+ )
81
+ elif total_participate_x >= 0.9:
82
+ second_para = "从上表可以看出,X方向平动的质量参与系数大于90%,*{但Y方向不满足,可酌情增加计算振型数量。}"
83
+ elif total_participate_y >= 0.9:
84
+ second_para = "从上表可以看出,Y方向平动的质量参与系数大于90%,*{但X方向不满足,可酌情增加计算振型数量。}"
85
+ else:
86
+ second_para = "从上表可以看出,*{X、Y方向平动的质量参与系数均小于90%,可酌情增加计算振型数量。}"
87
+ return second_para
88
+
89
+
90
+ def shear_mass_ratio(chapter_index: int, sub_index: int):
91
+ # todo: 这里需要根据设防烈度及基底剪力结果进行判断
92
+ para_context = "剪重比为结构设计的重要指标,按规范7度,0.10g的反应谱计算,"
93
+ para_context += f"结构基底和各楼层剪重比计算具体结果分别见表{chapter_index}.{sub_index}.1和图{chapter_index}.{sub_index}.1。"
94
+ para_context += (
95
+ "计算结果显示,结构两个主向的基底剪力均满足规范1.60%的最小剪重比要求。"
96
+ )
97
+
98
+ return para_context
99
+
100
+
101
+ def shear_and_moment(chapter_index: int, sub_index: int):
102
+ para = f"塔楼基底剪力和基底倾覆力矩见下表{chapter_index}.{sub_index}.1。"
103
+ para += f"图{chapter_index}.{sub_index}.1为50年重现期下的风荷载和小震作用下的楼层剪力分布,"
104
+ para += f"图{chapter_index}.{sub_index}.2为50年重现期下的风荷载和小震作用下的倾覆弯矩分布。"
105
+ para += "计算结果显示,"
106
+ para += "在X、Y两个方向,小震作用下的楼层剪力和倾覆弯矩均远大于50年重现期下的风荷载作用,"
107
+ para += "也表明在结构刚度和变形方面,小震起控制作用。"
108
+
109
+ return para
110
+
111
+
112
+ def horizental_moment_ratio_for_column(chapter_index: int, sub_index: int):
113
+ para1 = f"图{chapter_index}.{sub_index}.1为结构在双向水平地震作用下,各层框架柱分担的倾覆力矩与各层结构总倾覆力矩的比值(倾覆力矩分担比),"
114
+ para1 += f"表{chapter_index}.{sub_index}.1与表{chapter_index}.{sub_index}.2为结构分别在双向水平地震作用下,各层框架柱分担的剪力、倾覆力矩及其所占比例的具体数值。"
115
+
116
+ para2 = "结果表明:在规定水平力下,结构底层框架部分承受的地震倾覆力矩分担比"
117
+ para2 += "在X向和Y向分别为54.8%和48.0%。底层倾覆力矩分担比大于50%,"
118
+ para2 += "按照《高规》第8.1.3条第3款之规定,本工程应按照框架-剪力墙结构进行设计,"
119
+ para2 += "其最大适用高度可比框架结构适当增加,框架部分的抗震等级和轴压比限值宜按框架结构的规定采用。"
120
+
121
+ return [para1, para2]
122
+
123
+
124
+ def disp_and_drift(chapter_index: int, sub_index: int):
125
+ para = f"结构在小震与风荷载作用下的最大层间位移角如表{chapter_index}.{sub_index}.1和图{chapter_index}.{sub_index}.1所示。"
126
+ para += "各工况下各楼层位移角均小于规范限值1/800的要求。"
127
+ para += "此外,风荷载下各层层间位移角小于小震作用,小震起控制作用。"
128
+
129
+ return para
130
+
131
+
11
132
  class SRTemplate:
12
133
  # 前情提要
13
- FIRST_INFO = lambda model_name : f"*{{本报告内容针对模型“{model_name}”,请注意核对模型名称!}}"
134
+ FIRST_INFO = (
135
+ lambda model_name: f"*{{本报告内容针对模型“{model_name}”,请注意核对模型名称!}}"
136
+ )
14
137
  # 小震章节提要
15
138
  SEISMIC_CHAPTER_TITLE = ChapterTemplate(
16
- title = lambda index : f"{index}.小震弹性分析的主要结果",
17
- paragraph= lambda index, yjk_version :[
18
- f"本模型弹性计算分析和构件设计软件采用YJK{yjk_version},结构计算模型如图{index}.0.1所示,结构计算假定如下:",
139
+ title=lambda index: f"{index}.小震弹性分析的主要结果",
140
+ paragraph=lambda index, yjk_version: [
141
+ f"本模型弹性计算分析和构件设计软件采用YJK-{yjk_version},结构计算模型如图{index}.0.1所示,结构计算假定如下:",
19
142
  "1. *{XXXX作为上部结构的嵌固端;}",
20
143
  "2. 计算结构整体指标按刚性板假定,构件验算时按弹性板设计。",
21
- "*{(这里需要一张图片!)}"
144
+ "*{(这里需要一张图片!)}",
22
145
  ],
23
- picture=lambda index : f"图{index}.0.1 YJK计算模型示意图"
146
+ picture=lambda index: f"图{index}.0.1 YJK计算模型示意图",
24
147
  )
25
148
  # 嵌固层
26
149
  SEISMIC_EMBEDDING = ChapterTemplate(
27
- title = lambda index, sub_index : f"{index}.{sub_index} 嵌固层",
28
- paragraph= lambda index, sub_index :[
29
- "采用《高层建筑混凝土结构技术规程》附录E剪切刚度的计算公式,"+
30
- "计算地下室顶板上下两层的侧向刚度比值。地下室范围的墙、柱构件取至塔楼外三个梁跨。"+
31
- f"计算结果见表{index}.{sub_index}.1,表明*{{地下室的刚度满足结构嵌固端的要求,"+
32
- "结构分析将嵌固端选取在地下室顶板是合理的。}",
33
- ],
34
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 嵌固层验算",
35
- table_context = [
36
- ["-","X向剪切刚度(kN/m)","Y向剪切刚度(kN/m)",r"层高H_{i}(m)","X向剪切刚度比","Y向剪切刚度比","结论"],
37
- ["首层","-","-","-","-","-","-",],
38
- ["地下一层","-","-","-","-","-","-",],
39
- ]
40
- )
41
-
150
+ title=lambda index, sub_index: f"{index}.{sub_index} 嵌固层",
151
+ paragraph=lambda index, sub_index: [
152
+ "采用《高层建筑混凝土结构技术规程》附录E剪切刚度的计算公式,"
153
+ + "计算地下室顶板上下两层的侧向刚度比值。地下室范围的墙、柱构件取至塔楼外三个梁跨。"
154
+ + f"计算结果见表{index}.{sub_index}.1,表明*{{地下室的刚度满足结构嵌固端的要求,"
155
+ + "结构分析将嵌固端选取在地下室顶板是合理的。}",
156
+ ],
157
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 嵌固层验算",
158
+ table_context=[
159
+ [
160
+ "-",
161
+ "X向剪切刚度(kN/m)",
162
+ "Y向剪切刚度(kN/m)",
163
+ r"层高H_{i}(m)",
164
+ "X向剪切刚度比",
165
+ "Y向剪切刚度比",
166
+ "结论",
167
+ ],
168
+ [
169
+ "首层",
170
+ "-",
171
+ "-",
172
+ "-",
173
+ "-",
174
+ "-",
175
+ "-",
176
+ ],
177
+ [
178
+ "地下一层",
179
+ "-",
180
+ "-",
181
+ "-",
182
+ "-",
183
+ "-",
184
+ "-",
185
+ ],
186
+ ],
187
+ )
188
+
42
189
  # 结构质量
43
190
  PROJECT_MASS = ChapterTemplate(
44
- title = lambda index, sub_index : f"{index}.{sub_index} 结构质量",
45
- paragraph= lambda index, sub_index,**kwargs :[
46
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
47
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
48
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
49
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
50
- ],
51
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
52
- table_context = lambda **kwargs : [
53
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
54
- ["恒载","-","-","-",],
55
- ["活载*0.5","-","-","-",],
56
- ["总质量(D+0.5L)","-","-","-",],
57
- ]
58
- )
59
-
191
+ title=lambda index, sub_index: f"{index}.{sub_index} 结构质量",
192
+ paragraph=lambda index, sub_index, **kwargs: [
193
+ f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"
194
+ + f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"
195
+ + f"按结构楼板折算的重量约为{kwargs["average_load"]}kN/m^{{2}}。"
196
+ + f"其中恒载及活载详情见表{index}.{sub_index}.1。",
197
+ ],
198
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构质量组成",
199
+ table_context=lambda **kwargs: [
200
+ [
201
+ "类别",
202
+ "数值(t)",
203
+ "占比",
204
+ "单位楼板面积重量\r(kN/m^{2})",
205
+ ],
206
+ [
207
+ "恒载",
208
+ f"{kwargs['dead_mass']}",
209
+ f"{kwargs['dead_percentage']}",
210
+ f"{kwargs['dead_average']}",
211
+ ],
212
+ [
213
+ "活载*0.5",
214
+ f"{kwargs['live_mass']}",
215
+ f"{kwargs['live_percentage']}",
216
+ f"{kwargs['live_average']}",
217
+ ],
218
+ [
219
+ "总质量(D+0.5L)",
220
+ f"{kwargs['total_mass']}",
221
+ f"{kwargs['total_percentage']}",
222
+ f"{kwargs['total_average']}",
223
+ ],
224
+ ],
225
+ )
226
+
60
227
  # 振型与周期
61
228
  PERIOD = ChapterTemplate(
62
- title = lambda index, sub_index : f"{index}.{sub_index} 振型与周期",
63
- paragraph= lambda index, sub_index,**kwargs :[
64
- f"表{index}.{sub_index}.1为强制刚性楼板假定下计算得到的结构模态信息," +
65
- f"结构前三振型如图{index}.{sub_index}.1所示。",
66
- "从上表可以看出,X、Y方向平动的质量参与系数均大于90%,满足规范要求。"
229
+ title=lambda index, sub_index: f"{index}.{sub_index} 振型与周期",
230
+ paragraph=period_para_analysis,
231
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构模态信息",
232
+ table_context=[
233
+ [
234
+ "振型号",
235
+ "周期",
236
+ "平动系数(X+Y)",
237
+ "扭转系数",
238
+ "X向平动质量参与系数(累计%)",
239
+ "Y向平动质量参与系数(累计%)",
240
+ ],
67
241
  ],
68
- table=lambda index, sub_index : f"{index}.{sub_index}.1 结构模态信息",
69
- table_context = lambda **kwargs : [
70
- ["振型号","周期","平动系数(X+Y)","扭转系数","X向平动质量参与系数(累计)","Y向平动质量参与系数(累计)"],
71
- ["1","-","-","-","-","-",],
72
- ["2","-","-","-","-","-",],
73
- ["3","-","-","-","-","-",],
74
- ["4","-","-","-","-","-",],
75
- ["5","-","-","-","-","-",],
76
- ["6","-","-","-","-","-",],
77
- ["7","-","-","-","-","-",],
78
- ["8","-","-","-","-","-",],
79
- ["9","-","-","-","-","-",],
80
- ]
81
- )
82
-
242
+ picture=lambda index, sub_index: f"{index}.{sub_index}.1 结构前三振型示意图",
243
+ )
244
+
83
245
  # 楼层剪重比
84
246
  SHEAR_MASS_RATIO = ChapterTemplate(
85
- title = lambda index, sub_index : f"{index}.{sub_index} 楼层剪重比",
86
- paragraph= lambda index, sub_index,**kwargs :[
87
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
88
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
89
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
90
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
91
- ],
92
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
93
- table_context = lambda **kwargs : [
94
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
95
- ["恒载","-","-","-",],
96
- ["活载*0.5","-","-","-",],
97
- ["总质量(D+0.5L)","-","-","-",],
98
- ]
99
- )
100
-
101
- # 楼层剪力及倾覆力矩
247
+ title=lambda index, sub_index: f"{index}.{sub_index} 楼层剪重比",
248
+ paragraph=shear_mass_ratio,
249
+ table=lambda index, sub_index: f"{index}.{sub_index}.1 结构基底剪重比",
250
+ table_context=lambda **kwargs: [
251
+ [
252
+ "方向",
253
+ "基底剪力(kN)",
254
+ "重力荷载代表值(kN)",
255
+ "剪重比",
256
+ ],
257
+ [
258
+ X_DIRECTION,
259
+ "-",
260
+ "-",
261
+ "-",
262
+ ],
263
+ [
264
+ Y_DIRECTION,
265
+ "-",
266
+ "-",
267
+ "-",
268
+ ],
269
+ ],
270
+ picture=lambda index, sub_index: f"图{index}.{sub_index}.1 地震作用下各楼层剪重比",
271
+ )
272
+
273
+ # 楼层剪力及倾覆力矩
102
274
  SHEAR_AND_MOMENT = ChapterTemplate(
103
- title = lambda index, sub_index : f"{index}.{sub_index} 楼层剪力及倾覆力矩",
104
- paragraph= lambda index, sub_index,**kwargs :[
105
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
106
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
107
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
108
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
109
- ],
110
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
111
- table_context = lambda **kwargs : [
112
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
113
- ["恒载","-","-","-",],
114
- ["活载*0.5","-","-","-",],
115
- ["总质量(D+0.5L)","-","-","-",],
116
- ]
117
- )
118
-
275
+ title=lambda index, sub_index: f"{index}.{sub_index} 楼层剪力及倾覆力矩",
276
+ paragraph=shear_and_moment,
277
+ table=lambda index, sub_index: f"{index}.{sub_index}.1 结构基底总剪力和倾覆力矩",
278
+ table_context=lambda **kwargs: [
279
+ [
280
+ "--",
281
+ "--",
282
+ "YJK",
283
+ "YJK",
284
+ ],
285
+ [
286
+ "--",
287
+ "项目",
288
+ X_DIRECTION,
289
+ Y_DIRECTION,
290
+ ],
291
+ [
292
+ "风荷载",
293
+ "基底剪力(kN)",
294
+ "-",
295
+ "-",
296
+ ],
297
+ [
298
+ "风荷载",
299
+ "基地倾覆力矩(MN·m)",
300
+ "-",
301
+ "-",
302
+ ],
303
+ [
304
+ "多遇地震",
305
+ "基底剪力(kN)",
306
+ "-",
307
+ "-",
308
+ ],
309
+ [
310
+ "多遇地震",
311
+ "基地倾覆力矩(MN·m)",
312
+ "-",
313
+ "-",
314
+ ],
315
+ ],
316
+ picture=lambda index, sub_index: [
317
+ f"图{index}.{sub_index}.1 风荷载和小震作用下的楼层剪力",
318
+ f"图{index}.{sub_index}.2 风荷载和小震作用下的楼层倾覆力矩",
319
+ ],
320
+ )
321
+
119
322
  # 框架倾覆力矩占比
120
323
  HORIZENTAL_MOMENT_RATIO_FOR_COLUMN = ChapterTemplate(
121
- title = lambda index, sub_index : f"{index}.{sub_index} 框架倾覆力矩占比",
122
- paragraph= lambda index, sub_index,**kwargs :[
123
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
124
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
125
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
126
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
127
- ],
128
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
129
- table_context = lambda **kwargs : [
130
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
131
- ["恒载","-","-","-",],
132
- ["活载*0.5","-","-","-",],
133
- ["总质量(D+0.5L)","-","-","-",],
134
- ]
135
- )
136
-
324
+ title=lambda index, sub_index: f"{index}.{sub_index} 框架倾覆力矩占比",
325
+ paragraph=horizental_moment_ratio_for_column,
326
+ table=lambda index, sub_index: [
327
+ f"{index}.{sub_index}.1 外框柱剪力及倾覆力矩分担比(X向)",
328
+ f"{index}.{sub_index}.2 外框柱剪力及倾覆力矩分担比(Y向)",
329
+ ],
330
+ table_context=lambda **kwargs: [
331
+ [
332
+ "层号",
333
+ "剪力(kN)",
334
+ "剪力分担比",
335
+ "弯矩(kN*m)",
336
+ "弯矩分担比",
337
+ ],
338
+ ],
339
+ picture=lambda index, sub_index: f"图{index}.{sub_index}.1 各楼层的框架剪力和弯矩分比",
340
+ )
341
+
137
342
  # 结构位移与层间位移
138
343
  DISP_AND_DRIFT = ChapterTemplate(
139
- title = lambda index, sub_index : f"{index}.{sub_index} 结构位移与层间位移",
140
- paragraph= lambda index, sub_index,**kwargs :[
141
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
142
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
143
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
144
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
145
- ],
146
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
147
- table_context = lambda **kwargs : [
148
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
149
- ["恒载","-","-","-",],
150
- ["活载*0.5","-","-","-",],
151
- ["总质量(D+0.5L)","-","-","-",],
152
- ]
153
- )
154
-
155
- # 侧向刚度比
344
+ title=lambda index, sub_index: f"{index}.{sub_index} 结构位移与层间位移",
345
+ paragraph=disp_and_drift,
346
+ table=lambda index, sub_index: f"{index}.{sub_index}.1 楼层最大层间位移角",
347
+ table_context=lambda **kwargs: [
348
+ [
349
+ "类别",
350
+ "数值(t)",
351
+ "占比",
352
+ "单位楼板面积重量\r(kN/m^{2})",
353
+ ],
354
+ [
355
+ "恒载",
356
+ "-",
357
+ "-",
358
+ "-",
359
+ ],
360
+ [
361
+ "活载*0.5",
362
+ "-",
363
+ "-",
364
+ "-",
365
+ ],
366
+ [
367
+ "总质量(D+0.5L)",
368
+ "-",
369
+ "-",
370
+ "-",
371
+ ],
372
+ ],
373
+ )
374
+
375
+ # 侧向刚度比
156
376
  HORIZENTAL_STIFFNESS_RATIO = ChapterTemplate(
157
- title = lambda index, sub_index : f"{index}.{sub_index} 侧向刚度比",
158
- paragraph= lambda index, sub_index,**kwargs :[
159
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
160
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
161
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
162
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
163
- ],
164
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
165
- table_context = lambda **kwargs : [
166
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
167
- ["恒载","-","-","-",],
168
- ["活载*0.5","-","-","-",],
169
- ["总质量(D+0.5L)","-","-","-",],
170
- ]
171
- )
172
-
173
- # 扭转位移比
377
+ title=lambda index, sub_index: f"{index}.{sub_index} 侧向刚度比",
378
+ paragraph=lambda index, sub_index, **kwargs: [
379
+ f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"
380
+ + f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"
381
+ + f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"
382
+ + f"其中恒载及活载详情见表{index}.{sub_index}.1。",
383
+ ],
384
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构质量组成",
385
+ picture=lambda index, sub_index: f"图{index}.{sub_index}.1 结构楼层层间位移角",
386
+ table_context=lambda **kwargs: [
387
+ [
388
+ "类别",
389
+ "数值(t)",
390
+ "占比",
391
+ "单位楼板面积重量\r(kN/m^{2})",
392
+ ],
393
+ [
394
+ "恒载",
395
+ "-",
396
+ "-",
397
+ "-",
398
+ ],
399
+ [
400
+ "活载*0.5",
401
+ "-",
402
+ "-",
403
+ "-",
404
+ ],
405
+ [
406
+ "总质量(D+0.5L)",
407
+ "-",
408
+ "-",
409
+ "-",
410
+ ],
411
+ ],
412
+ )
413
+
414
+ # 扭转位移比
174
415
  ROTATION_RATIO = ChapterTemplate(
175
- title = lambda index, sub_index : f"{index}.{sub_index} 扭转位移比",
176
- paragraph= lambda index, sub_index,**kwargs :[
177
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
178
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
179
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
180
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
181
- ],
182
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
183
- table_context = lambda **kwargs : [
184
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
185
- ["恒载","-","-","-",],
186
- ["活载*0.5","-","-","-",],
187
- ["总质量(D+0.5L)","-","-","-",],
188
- ]
416
+ title=lambda index, sub_index: f"{index}.{sub_index} 扭转位移比",
417
+ paragraph=lambda index, sub_index, **kwargs: [
418
+ f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"
419
+ + f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"
420
+ + f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"
421
+ + f"其中恒载及活载详情见表{index}.{sub_index}.1。",
422
+ ],
423
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构质量组成",
424
+ table_context=lambda **kwargs: [
425
+ [
426
+ "类别",
427
+ "数值(t)",
428
+ "占比",
429
+ "单位楼板面积重量\r(kN/m^{2})",
430
+ ],
431
+ [
432
+ "恒载",
433
+ "-",
434
+ "-",
435
+ "-",
436
+ ],
437
+ [
438
+ "活载*0.5",
439
+ "-",
440
+ "-",
441
+ "-",
442
+ ],
443
+ [
444
+ "总质量(D+0.5L)",
445
+ "-",
446
+ "-",
447
+ "-",
448
+ ],
449
+ ],
189
450
  )
190
451
  # 刚重比
191
452
  STIFFNESS_MASS_RATIO = ChapterTemplate(
192
- title = lambda index, sub_index : f"{index}.{sub_index} 刚重比",
193
- paragraph= lambda index, sub_index,**kwargs :[
194
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
195
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
196
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
197
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
198
- ],
199
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
200
- table_context = lambda **kwargs : [
201
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
202
- ["恒载","-","-","-",],
203
- ["活载*0.5","-","-","-",],
204
- ["总质量(D+0.5L)","-","-","-",],
205
- ]
206
- )
207
- # 楼层侧向受剪承载力比
453
+ title=lambda index, sub_index: f"{index}.{sub_index} 刚重比",
454
+ paragraph=lambda index, sub_index, **kwargs: [
455
+ f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"
456
+ + f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"
457
+ + f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"
458
+ + f"其中恒载及活载详情见表{index}.{sub_index}.1。",
459
+ ],
460
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构质量组成",
461
+ table_context=lambda **kwargs: [
462
+ [
463
+ "类别",
464
+ "数值(t)",
465
+ "占比",
466
+ "单位楼板面积重量\r(kN/m^{2})",
467
+ ],
468
+ [
469
+ "恒载",
470
+ "-",
471
+ "-",
472
+ "-",
473
+ ],
474
+ [
475
+ "活载*0.5",
476
+ "-",
477
+ "-",
478
+ "-",
479
+ ],
480
+ [
481
+ "总质量(D+0.5L)",
482
+ "-",
483
+ "-",
484
+ "-",
485
+ ],
486
+ ],
487
+ )
488
+ # 楼层侧向受剪承载力比
208
489
  SHEAR_CAPACITY_RATIO = ChapterTemplate(
209
- title = lambda index, sub_index : f"{index}.{sub_index} 楼层侧向受剪承载力比",
210
- paragraph= lambda index, sub_index,**kwargs :[
211
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
212
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
213
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
214
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
215
- ],
216
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
217
- table_context = lambda **kwargs : [
218
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
219
- ["恒载","-","-","-",],
220
- ["活载*0.5","-","-","-",],
221
- ["总质量(D+0.5L)","-","-","-",],
222
- ]
223
- )
224
- # 风荷载下的结构舒适度验算
490
+ title=lambda index, sub_index: f"{index}.{sub_index} 楼层侧向受剪承载力比",
491
+ paragraph=lambda index, sub_index, **kwargs: [
492
+ f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"
493
+ + f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"
494
+ + f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"
495
+ + f"其中恒载及活载详情见表{index}.{sub_index}.1。",
496
+ ],
497
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构质量组成",
498
+ table_context=lambda **kwargs: [
499
+ [
500
+ "类别",
501
+ "数值(t)",
502
+ "占比",
503
+ "单位楼板面积重量\r(kN/m^{2})",
504
+ ],
505
+ [
506
+ "恒载",
507
+ "-",
508
+ "-",
509
+ "-",
510
+ ],
511
+ [
512
+ "活载*0.5",
513
+ "-",
514
+ "-",
515
+ "-",
516
+ ],
517
+ [
518
+ "总质量(D+0.5L)",
519
+ "-",
520
+ "-",
521
+ "-",
522
+ ],
523
+ ],
524
+ )
525
+ # 风荷载下的结构舒适度验算
225
526
  WIND_ACC = ChapterTemplate(
226
- title = lambda index, sub_index : f"{index}.{sub_index} 风荷载下的结构舒适度验算",
227
- paragraph= lambda index, sub_index,**kwargs :[
228
- f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"+
229
- f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"+
230
- f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"+
231
- f"其中恒载及活载详情见表{index}.{sub_index}.1。",
232
- ],
233
- table=lambda index, sub_index : f"表{index}.{sub_index}.1 结构质量组成",
234
- table_context = lambda **kwargs : [
235
- ["类别","数值(t)","占比","单位楼板面积重量\r(kN/m^{2})",],
236
- ["恒载","-","-","-",],
237
- ["活载*0.5","-","-","-",],
238
- ["总质量(D+0.5L)","-","-","-",],
239
- ]
240
- )
527
+ title=lambda index, sub_index: f"{index}.{sub_index} 风荷载下的结构舒适度验算",
528
+ paragraph=lambda index, sub_index, **kwargs: [
529
+ f"本塔楼结构重力荷载代表值为{kwargs["total_mass"]}吨,"
530
+ + f"地上部分的结构楼板面积为{kwargs["total_area"]}平方米,"
531
+ + f"按结构楼板折算的重量约为{kwargs["average_load"]:.2f}kN/m2。"
532
+ + f"其中恒载及活载详情见表{index}.{sub_index}.1。",
533
+ ],
534
+ table=lambda index, sub_index: f"表{index}.{sub_index}.1 结构质量组成",
535
+ table_context=lambda **kwargs: [
536
+ [
537
+ "类别",
538
+ "数值(t)",
539
+ "占比",
540
+ "单位楼板面积重量\r(kN/m^{2})",
541
+ ],
542
+ [
543
+ "恒载",
544
+ "-",
545
+ "-",
546
+ "-",
547
+ ],
548
+ [
549
+ "活载*0.5",
550
+ "-",
551
+ "-",
552
+ "-",
553
+ ],
554
+ [
555
+ "总质量(D+0.5L)",
556
+ "-",
557
+ "-",
558
+ "-",
559
+ ],
560
+ ],
561
+ )