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,216 +1,235 @@
|
|
1
|
-
from .BuildingDefine import Beam,Column,Joint,ComponentType,Grid
|
2
|
-
from .BuildingDefine import SinglePeriod, Period, MassResult,SingleMassResult
|
3
|
-
from .BuildingDefine import ValuePeer, FloorSeismicResult
|
4
|
-
from .BuildingDefine.Section import Section,ShapeEnum
|
5
|
-
from .SQLiteConnector import Connector,YDBTableName,RowDataFactory
|
1
|
+
from .BuildingDefine import Beam, Column, Joint, ComponentType, Grid
|
2
|
+
from .BuildingDefine import SinglePeriod, Period, MassResult, SingleMassResult
|
3
|
+
from .BuildingDefine import ValuePeer, FloorSeismicResult, SeismicResult
|
4
|
+
from .BuildingDefine.Section import Section, ShapeEnum
|
5
|
+
from .SQLiteConnector import Connector, YDBTableName, RowDataFactory
|
6
6
|
from .YDBType import YDBType
|
7
7
|
import os
|
8
8
|
from typing import List, Dict
|
9
9
|
|
10
|
+
|
10
11
|
class YDBLoader:
|
11
12
|
|
12
|
-
def __init__(self, file_name:str = None, ydb_type:YDBType = None):
|
13
|
+
def __init__(self, file_name: str = None, ydb_type: YDBType = None):
|
13
14
|
# default type is ModelType
|
14
15
|
if not file_name.endswith(".ydb"):
|
15
16
|
raise ValueError("Plase use file ends with .ybd!")
|
16
17
|
self.connector = Connector(file_name)
|
17
18
|
self.ydb_type = self.__check_ydb_type()
|
18
|
-
|
19
|
-
def get_columns(self)->List[Column]:
|
19
|
+
|
20
|
+
def get_columns(self) -> List[Column]:
|
20
21
|
columns = []
|
21
22
|
sections = self.__get_sections(ComponentType.Column)
|
22
23
|
row_data = self.connector.extract_table_by_columns(
|
23
|
-
YDBTableName.COLUMN_TABLE_NAME,
|
24
|
-
|
25
|
-
)
|
24
|
+
YDBTableName.COLUMN_TABLE_NAME, YDBTableName.COLUMN_TABLE_USEFUL_COLUMNS
|
25
|
+
)
|
26
26
|
for temp_column in row_data:
|
27
|
-
temp_col_id = RowDataFactory.extract_int(temp_column,0)
|
28
|
-
joint_id = RowDataFactory.extract_int(temp_column,1)
|
29
|
-
sect_id = RowDataFactory.extract_int(temp_column,2)
|
27
|
+
temp_col_id = RowDataFactory.extract_int(temp_column, 0)
|
28
|
+
joint_id = RowDataFactory.extract_int(temp_column, 1)
|
29
|
+
sect_id = RowDataFactory.extract_int(temp_column, 2)
|
30
30
|
joint = self.__find_joint_by_id(joint_id)
|
31
31
|
sect = [s for s in sections if s.id == sect_id][0]
|
32
|
-
new_column = Column(temp_col_id,joint,sect)
|
32
|
+
new_column = Column(temp_col_id, joint, sect)
|
33
33
|
columns.append(new_column)
|
34
34
|
return columns
|
35
|
-
|
36
|
-
def get_beams(self)->List[Beam]:
|
37
|
-
beams = []
|
35
|
+
|
36
|
+
def get_beams(self) -> List[Beam]:
|
37
|
+
beams = []
|
38
38
|
sections = self.__get_sections(ComponentType.Beam)
|
39
39
|
row_data = self.connector.extract_table_by_columns(
|
40
|
-
YDBTableName.BEAM_TABLE_NAME,
|
41
|
-
|
42
|
-
)
|
40
|
+
YDBTableName.BEAM_TABLE_NAME, YDBTableName.BEAM_TABLE_USEFUL_COLUMNS
|
41
|
+
)
|
43
42
|
for temp_beam in row_data:
|
44
|
-
temp_beam_id = RowDataFactory.extract_int(temp_beam,0)
|
45
|
-
grid_id = RowDataFactory.extract_int(temp_beam,1)
|
46
|
-
grid = self.__find_grid_by_id(grid_id)
|
47
|
-
sect_id = RowDataFactory.extract_int(temp_beam,2)
|
43
|
+
temp_beam_id = RowDataFactory.extract_int(temp_beam, 0)
|
44
|
+
grid_id = RowDataFactory.extract_int(temp_beam, 1)
|
45
|
+
grid = self.__find_grid_by_id(grid_id)
|
46
|
+
sect_id = RowDataFactory.extract_int(temp_beam, 2)
|
48
47
|
sect = [s for s in sections if s.id == sect_id][0]
|
49
|
-
new_beam = Beam(temp_beam_id,grid.start_joint,grid.end_joint,sect)
|
48
|
+
new_beam = Beam(temp_beam_id, grid.start_joint, grid.end_joint, sect)
|
50
49
|
beams.append(new_beam)
|
51
50
|
return beams
|
52
51
|
|
53
|
-
def __get_sections(self,comp_type:ComponentType):
|
52
|
+
def __get_sections(self, comp_type: ComponentType):
|
54
53
|
table_name = ""
|
55
|
-
table_columns = []
|
54
|
+
table_columns = []
|
56
55
|
table_names_for_different_comptype = {
|
57
|
-
ComponentType.Column:
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
56
|
+
ComponentType.Column: [
|
57
|
+
YDBTableName.COLUMN_SECTION_TABLE_NAME,
|
58
|
+
YDBTableName.SECTION_TABLE_USEFUL_COLUMNS,
|
59
|
+
],
|
60
|
+
ComponentType.Beam: [
|
61
|
+
YDBTableName.BEAM_SECTION_TABLE_NAME,
|
62
|
+
YDBTableName.SECTION_TABLE_USEFUL_COLUMNS,
|
63
|
+
],
|
63
64
|
}
|
64
|
-
if
|
65
|
+
if comp_type not in table_names_for_different_comptype.keys():
|
65
66
|
raise ValueError(f"{comp_type.name} is not suppported yet.")
|
66
67
|
# 这里根据不同的构件类型,进行不同的截面数据获取
|
67
68
|
table_name = table_names_for_different_comptype[comp_type][0]
|
68
69
|
table_columns = table_names_for_different_comptype[comp_type][1]
|
69
|
-
row_data = self.connector.extract_table_by_columns(table_name,table_columns)
|
70
|
+
row_data = self.connector.extract_table_by_columns(table_name, table_columns)
|
70
71
|
sections = []
|
71
72
|
for temp_section in row_data:
|
72
|
-
temp_section_id = RowDataFactory.extract_int(temp_section,0)
|
73
|
+
temp_section_id = RowDataFactory.extract_int(temp_section, 0)
|
73
74
|
# 这里的mat暂时没用到
|
74
|
-
mat = RowDataFactory.extract_int(temp_section,1)
|
75
|
-
kind = RowDataFactory.extract_int(temp_section,2)
|
76
|
-
shape_val = RowDataFactory.extract_list(temp_section,3)[1:]
|
77
|
-
new_section = Section(
|
75
|
+
mat = RowDataFactory.extract_int(temp_section, 1)
|
76
|
+
kind = RowDataFactory.extract_int(temp_section, 2)
|
77
|
+
shape_val = RowDataFactory.extract_list(temp_section, 3)[1:]
|
78
|
+
new_section = Section(
|
79
|
+
temp_section_id, ShapeEnum.ConvertToShapeEnum(kind), shape_val, mat
|
80
|
+
)
|
78
81
|
sections.append(new_section)
|
79
82
|
return sections
|
80
83
|
|
81
|
-
def __get_joints(self)->Dict[int,Joint]:
|
82
|
-
if hasattr(self,
|
84
|
+
def __get_joints(self) -> Dict[int, Joint]:
|
85
|
+
if hasattr(self, "joint_list"):
|
83
86
|
return self.joint_list
|
84
87
|
table_name = YDBTableName.JOINT_TABLE_NAME
|
85
88
|
useful_columns = YDBTableName.JOINT_TABLE_USEFUL_COLUMNS
|
86
|
-
row_data = self.connector.extract_table_by_columns(table_name,useful_columns)
|
89
|
+
row_data = self.connector.extract_table_by_columns(table_name, useful_columns)
|
87
90
|
joint_list = {}
|
88
91
|
for temp_joint in row_data:
|
89
|
-
temp_joint_id = RowDataFactory.extract_int(temp_joint,0)
|
90
|
-
x = RowDataFactory.extract_float(temp_joint,1)
|
91
|
-
y = RowDataFactory.extract_float(temp_joint,2)
|
92
|
-
std_flr_id = RowDataFactory.extract_int(temp_joint,3)
|
93
|
-
new_joint = Joint(temp_joint_id,x,y,std_flr_id)
|
92
|
+
temp_joint_id = RowDataFactory.extract_int(temp_joint, 0)
|
93
|
+
x = RowDataFactory.extract_float(temp_joint, 1)
|
94
|
+
y = RowDataFactory.extract_float(temp_joint, 2)
|
95
|
+
std_flr_id = RowDataFactory.extract_int(temp_joint, 3)
|
96
|
+
new_joint = Joint(temp_joint_id, x, y, std_flr_id)
|
94
97
|
joint_list[temp_joint_id] = new_joint
|
95
98
|
self.joint_list = joint_list
|
96
99
|
return self.joint_list
|
97
100
|
|
98
|
-
def __get_grids(self)->Dict[int,Grid]:
|
99
|
-
if hasattr(self,
|
101
|
+
def __get_grids(self) -> Dict[int, Grid]:
|
102
|
+
if hasattr(self, "grid_list"):
|
100
103
|
return self.grid_list
|
101
104
|
table_name = YDBTableName.GRID_TABLE_NAME
|
102
105
|
useful_columns = YDBTableName.GRID_TABLE_USEFUL_COLUMNS
|
103
|
-
row_data = self.connector.extract_table_by_columns(table_name,useful_columns)
|
106
|
+
row_data = self.connector.extract_table_by_columns(table_name, useful_columns)
|
104
107
|
grid_list = {}
|
105
108
|
for temp_grid in row_data:
|
106
|
-
temp_grid_id = RowDataFactory.extract_int(temp_grid,0)
|
107
|
-
start_joint_id = RowDataFactory.extract_int(temp_grid,1)
|
108
|
-
end_joint_id = RowDataFactory.extract_int(temp_grid,2)
|
109
|
+
temp_grid_id = RowDataFactory.extract_int(temp_grid, 0)
|
110
|
+
start_joint_id = RowDataFactory.extract_int(temp_grid, 1)
|
111
|
+
end_joint_id = RowDataFactory.extract_int(temp_grid, 2)
|
109
112
|
s_joint = self.__find_joint_by_id(start_joint_id)
|
110
113
|
e_joint = self.__find_joint_by_id(end_joint_id)
|
111
|
-
grid = Grid(temp_grid_id,s_joint, e_joint)
|
114
|
+
grid = Grid(temp_grid_id, s_joint, e_joint)
|
112
115
|
grid_list[temp_grid_id] = grid
|
113
116
|
self.grid_list = grid_list
|
114
|
-
return self.grid_list
|
115
|
-
|
116
|
-
def __check_ydb_type(self)->YDBType:
|
117
|
+
return self.grid_list
|
118
|
+
|
119
|
+
def __check_ydb_type(self) -> YDBType:
|
117
120
|
if self.connector.is_table_in_db(YDBTableName.JOINT_TABLE_NAME):
|
118
121
|
return YDBType.ModelYDB
|
119
122
|
if self.connector.is_table_in_db(YDBTableName.RESULT_PERIOD_TABLE):
|
120
123
|
return YDBType.ResultYDB
|
121
|
-
raise ValueError(
|
122
|
-
|
123
|
-
|
124
|
+
raise ValueError(
|
125
|
+
"This ydb database is not Model YDB neither Result YDB. Please use correct ydb file."
|
126
|
+
)
|
127
|
+
|
128
|
+
def __find_joint_by_id(self, joint_id: int) -> Joint:
|
124
129
|
joint_list = self.__get_joints()
|
125
130
|
try:
|
126
131
|
return joint_list[joint_id]
|
127
132
|
except KeyError:
|
128
133
|
raise ValueError(f"No Joint's ID is {joint_id}.")
|
129
|
-
|
130
|
-
def __find_grid_by_id(self,grid_id:int)->Grid:
|
134
|
+
|
135
|
+
def __find_grid_by_id(self, grid_id: int) -> Grid:
|
131
136
|
grid_list = self.__get_grids()
|
132
137
|
try:
|
133
138
|
return grid_list[grid_id]
|
134
139
|
except KeyError:
|
135
140
|
raise ValueError(f"No Joint's ID is {grid_id}.")
|
136
|
-
|
141
|
+
|
137
142
|
def __check_result_model(self, extracting_data_type):
|
138
143
|
if self.ydb_type != YDBType.ResultYDB:
|
139
|
-
raise TypeError(
|
140
|
-
|
141
|
-
|
142
|
-
|
144
|
+
raise TypeError(
|
145
|
+
"This model is not ResultYDB file, "
|
146
|
+
+ f"dont have {extracting_data_type} result, please retry."
|
147
|
+
)
|
148
|
+
|
149
|
+
def get_mass_result(self) -> MassResult:
|
143
150
|
self.__check_result_model("mass")
|
144
151
|
table_name = YDBTableName.RESULT_MASS_TABLE
|
145
152
|
useful_columns = YDBTableName.RESULT_MASS_USEFUL_COLUMNS
|
146
|
-
row_data = self.connector.extract_table_by_columns(table_name,useful_columns)
|
153
|
+
row_data = self.connector.extract_table_by_columns(table_name, useful_columns)
|
147
154
|
mass_list = []
|
148
155
|
for temp_mass in row_data:
|
149
|
-
floor_num = RowDataFactory.convert_to_int(temp_mass
|
150
|
-
tower_num = RowDataFactory.convert_to_int(temp_mass
|
151
|
-
mass_info = RowDataFactory.extract_list(temp_mass,2)
|
156
|
+
floor_num = RowDataFactory.convert_to_int(temp_mass[0])
|
157
|
+
tower_num = RowDataFactory.convert_to_int(temp_mass[1])
|
158
|
+
mass_info = RowDataFactory.extract_list(temp_mass, 2)
|
152
159
|
dead_load = RowDataFactory.convert_to_float(mass_info[1])
|
153
160
|
live_load = RowDataFactory.convert_to_float(mass_info[2])
|
154
161
|
# TODO: 需要计算slab的结果
|
155
162
|
slab_area = 10
|
156
|
-
single_mass = SingleMassResult(
|
157
|
-
|
163
|
+
single_mass = SingleMassResult(
|
164
|
+
floor_num, tower_num, dead_load, live_load, slab_area
|
165
|
+
)
|
166
|
+
mass_list.append(single_mass)
|
158
167
|
return MassResult(mass_list)
|
159
|
-
|
160
|
-
def get_period_result(self)->Period:
|
168
|
+
|
169
|
+
def get_period_result(self) -> Period:
|
161
170
|
self.__check_result_model("period")
|
162
171
|
table_name = YDBTableName.RESULT_PERIOD_TABLE
|
163
172
|
useful_columns = YDBTableName.RESULT_PERIOD_USEFUL_COLUMNS
|
164
|
-
row_data = self.connector.extract_table_by_columns(table_name,useful_columns)
|
173
|
+
row_data = self.connector.extract_table_by_columns(table_name, useful_columns)
|
165
174
|
periods = []
|
166
175
|
for temp_period in row_data:
|
167
|
-
module_id = RowDataFactory.extract_int(temp_period,0)
|
168
|
-
if module_id !=1:
|
176
|
+
module_id = RowDataFactory.extract_int(temp_period, 0)
|
177
|
+
if module_id != 1:
|
169
178
|
continue
|
170
|
-
period_index = RowDataFactory.extract_int(temp_period,1)
|
171
|
-
time = RowDataFactory.extract_float(temp_period,2)
|
172
|
-
angle = RowDataFactory.extract_float(temp_period,3)
|
173
|
-
coeff = RowDataFactory.extract_list(temp_period,4)
|
174
|
-
mass_participate = RowDataFactory.extract_list(temp_period,5)
|
175
|
-
period = SinglePeriod(
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
179
|
+
period_index = RowDataFactory.extract_int(temp_period, 1)
|
180
|
+
time = RowDataFactory.extract_float(temp_period, 2)
|
181
|
+
angle = RowDataFactory.extract_float(temp_period, 3)
|
182
|
+
coeff = RowDataFactory.extract_list(temp_period, 4)
|
183
|
+
mass_participate = RowDataFactory.extract_list(temp_period, 5)
|
184
|
+
period = SinglePeriod(
|
185
|
+
period_index,
|
186
|
+
time,
|
187
|
+
angle,
|
188
|
+
RowDataFactory.convert_to_float(coeff[1]),
|
189
|
+
RowDataFactory.convert_to_float(coeff[2]),
|
190
|
+
RowDataFactory.convert_to_float(coeff[-1]),
|
191
|
+
RowDataFactory.convert_to_float(mass_participate[1]),
|
192
|
+
RowDataFactory.convert_to_float(mass_participate[2]),
|
193
|
+
RowDataFactory.convert_to_float(mass_participate[-1]),
|
194
|
+
)
|
183
195
|
periods.append(period)
|
184
196
|
return Period(periods)
|
185
197
|
|
186
|
-
def get_seismic_result(self)->SeismicResult:
|
198
|
+
def get_seismic_result(self) -> SeismicResult:
|
187
199
|
self.__check_result_model("seismic")
|
188
200
|
table_name = YDBTableName.RESULT_FLOOR_DATA_TABLE
|
189
201
|
useful_columns = YDBTableName.RESULT_FLOOR_DATA_USEFUL_COLUMNS_SEISMIC
|
190
|
-
row_data = self.connector.extract_table_by_columns(table_name,useful_columns)
|
202
|
+
row_data = self.connector.extract_table_by_columns(table_name, useful_columns)
|
191
203
|
floor_result_list = []
|
192
204
|
for temp_floor in row_data:
|
193
|
-
floor_num = RowDataFactory.extract_int(temp_floor,0)
|
194
|
-
tower_num = RowDataFactory.extract_int(temp_floor,1)
|
205
|
+
floor_num = RowDataFactory.extract_int(temp_floor, 0)
|
206
|
+
tower_num = RowDataFactory.extract_int(temp_floor, 1)
|
195
207
|
force_x = RowDataFactory.convert_to_float(
|
196
|
-
RowDataFactory.extract_list(temp_floor,2)[1]
|
208
|
+
RowDataFactory.extract_list(temp_floor, 2)[1]
|
209
|
+
)
|
197
210
|
force_y = RowDataFactory.convert_to_float(
|
198
|
-
RowDataFactory.extract_list(temp_floor,3)[1]
|
211
|
+
RowDataFactory.extract_list(temp_floor, 3)[1]
|
212
|
+
)
|
199
213
|
shear_x = RowDataFactory.convert_to_float(
|
200
|
-
RowDataFactory.extract_list(temp_floor,4)[1]
|
214
|
+
RowDataFactory.extract_list(temp_floor, 4)[1]
|
215
|
+
)
|
201
216
|
shear_y = RowDataFactory.convert_to_float(
|
202
|
-
RowDataFactory.extract_list(temp_floor,5)[1]
|
217
|
+
RowDataFactory.extract_list(temp_floor, 5)[1]
|
218
|
+
)
|
203
219
|
moment_x = RowDataFactory.convert_to_float(
|
204
|
-
RowDataFactory.extract_list(temp_floor,6)[1]
|
220
|
+
RowDataFactory.extract_list(temp_floor, 6)[1]
|
221
|
+
)
|
205
222
|
moment_y = RowDataFactory.convert_to_float(
|
206
|
-
RowDataFactory.extract_list(temp_floor,7)[1]
|
207
|
-
|
223
|
+
RowDataFactory.extract_list(temp_floor, 7)[1]
|
224
|
+
)
|
225
|
+
force = ValuePeer(force_x, force_y)
|
208
226
|
shear = ValuePeer(shear_x, shear_y)
|
209
|
-
moment = ValuePeer(moment_x,moment_y)
|
210
|
-
|
211
|
-
|
227
|
+
moment = ValuePeer(moment_x, moment_y)
|
228
|
+
temp_floor_result = FloorSeismicResult(
|
229
|
+
floor_num, tower_num, force, shear, moment
|
230
|
+
)
|
212
231
|
floor_result_list.append(temp_floor_result)
|
213
|
-
|
232
|
+
|
214
233
|
return SeismicResult(floor_result_list)
|
215
234
|
|
216
235
|
|
@@ -220,5 +239,4 @@ if __name__ == "__main__":
|
|
220
239
|
columns = loader.get_columns()
|
221
240
|
|
222
241
|
for col in columns:
|
223
|
-
print(col.section,col.joint)
|
224
|
-
|
242
|
+
print(col.section, col.joint)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: civil_tools_v
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.3
|
4
4
|
Summary: A powerful tool for civil engineer in their work.
|
5
5
|
Home-page: https://github.com/VincentXGao/civil-tools
|
6
6
|
Author: Xinyu Gao (Vincent)
|
@@ -14,6 +14,7 @@ License-File: LICENSE
|
|
14
14
|
Requires-Dist: numpy>=2.0
|
15
15
|
Requires-Dist: python-docx>=1.0
|
16
16
|
Requires-Dist: matplotlib>=3.10.0
|
17
|
+
Requires-Dist: ezdxf==1.4.0
|
17
18
|
Dynamic: author
|
18
19
|
Dynamic: author-email
|
19
20
|
Dynamic: classifier
|
@@ -28,9 +29,12 @@ Dynamic: summary
|
|
28
29
|
|
29
30
|
这是一个针对结构工程师开发的,集成了模型设计、结果分析、绘制图纸、出具计算书等多个模块的工具包。
|
30
31
|
|
31
|
-
|
32
|
+
具体包含:
|
32
33
|
|
33
|
-
|
34
|
+
- [YDB 数据库加载工具](#YDBLoader) ( `YDBLoader` )
|
35
|
+
- [各类图纸绘制工具](#DXFGenerator) ( `DXFGenerator` )
|
36
|
+
- [各类报告计算书生成工具](#ReportGenerator) ( `ReportGenerator` )
|
37
|
+
- [各类数据图片绘制工具](#FigureGenerator) ( `FigureGenerator` )
|
34
38
|
|
35
39
|
## 安装: Installation
|
36
40
|
|
@@ -38,12 +42,24 @@ A python package to load `.ydb` files created by YJK, including `dtlmodel.ydb` (
|
|
38
42
|
|
39
43
|
The latest stable release (and required dependencies) can be installed from PyPI:
|
40
44
|
|
45
|
+
<strong>注意:</strong> pip 时使用的模块的名字是 <strong>civil-tools-v </strong>!
|
46
|
+
<br>
|
47
|
+
<strong>Notice:</strong> The module name for pip is <strong>civil-tools-v</strong> !
|
48
|
+
|
41
49
|
```shell
|
42
|
-
pip install
|
50
|
+
pip install civil-tools-v
|
43
51
|
```
|
44
52
|
|
53
|
+
<a id="YDBLoader"></a>
|
54
|
+
|
45
55
|
## 快速上手: Quick Start
|
46
56
|
|
57
|
+
### YDB 数据库加载工具 ( `YDBLoader` )
|
58
|
+
|
59
|
+
这是一个用于加载 YJK 软件中,以`.ydb`结尾的数据库文件的 Python 库,可以加载的文件包括 `dtlmodel.ydb`(基础建模数据库)和`dsnModel.ydb`(计算结果数据库)。
|
60
|
+
|
61
|
+
A python package to load `.ydb` files created by YJK, including `dtlmodel.ydb` (which contains the basic building information), and `dsnModel.ydb` (which conatins the calculate result of the model).
|
62
|
+
|
47
63
|
你可以轻易地从`.ydb`文件中提取出你想要的数据:
|
48
64
|
|
49
65
|
You can eaily extract the data you want from `.ydb` files:
|
@@ -51,7 +67,7 @@ You can eaily extract the data you want from `.ydb` files:
|
|
51
67
|
```python
|
52
68
|
# 导入本模块
|
53
69
|
# import this lib
|
54
|
-
from YDBLoader import YDBLoader
|
70
|
+
from CivilTools.YDBLoader import YDBLoader
|
55
71
|
|
56
72
|
# 定义你的.ydb文件路径
|
57
73
|
# define your .ydb file path
|
@@ -87,6 +103,73 @@ Joint(id:1013):[x:27054.9286,y:9061.9286]:stdFlrId:1001
|
|
87
103
|
Joint(id:1014):[x:27054.9286,y:18061.9286]:stdFlrId:1001
|
88
104
|
```
|
89
105
|
|
106
|
+
<a id="DXFGenerator"></a>
|
107
|
+
|
108
|
+
### 各类图纸绘制工具 ( `DXFGenerator` )
|
109
|
+
|
110
|
+
这是一个用于绘制各类结构相关图纸的工具,包括各类节点详图、大样,甚至整层楼的模板图等等。
|
111
|
+
|
112
|
+
This is a tool used to draw various structural related drawings, including detailed drawings, large samples, and even template drawings of the entire floor.
|
113
|
+
|
114
|
+
你可以轻易地从`CivilTools.DXFGenerator`中导出并使用它:
|
115
|
+
|
116
|
+
```python
|
117
|
+
from CivilTools.DXFGenerator import FloorHeightTableDXF
|
118
|
+
|
119
|
+
dxf = FloorHeightTableDXF(10,2,-500)
|
120
|
+
|
121
|
+
dxf.font_size = 400
|
122
|
+
dxf.set_table_title("XXX项目X号楼")
|
123
|
+
dxf.set_embeding_floor("F3")
|
124
|
+
dxf.export_dxf("test.dxf")
|
125
|
+
dxf
|
126
|
+
```
|
127
|
+
|
128
|
+
如果你在 Jupyter 中运行,则会看到如下的渲染示意图。可以看到层高表被自动生成出来,包括嵌固层等信息。与此同时,相应的 dxf 也已经保存在当前目录下的 test.dxf 文件中。
|
129
|
+
|
130
|
+
If you run it in Jupyter, you will see the following rendering diagram. The floor height table is automatically generated, including information such as the embedded floor. At the same time, the corresponding DXF has also been saved in the test.dxf file in the current directory.
|
131
|
+
|
132
|
+

|
133
|
+
|
134
|
+
<a id="ReportGenerator"></a>
|
135
|
+
|
136
|
+
### 各类报告计算书生成工具 ( `ReportGenerator` )
|
137
|
+
|
138
|
+
这是一个用于生成各类文本的工具,目前包括:
|
139
|
+
|
140
|
+
- 抗震审查报告(根据 YJK 计算结果生成)
|
141
|
+
- 混凝土板式楼梯计算书
|
142
|
+
|
143
|
+
你可以轻易地从`CivilTools.ReportGenerator`中导出并使用它:
|
144
|
+
|
145
|
+
```python
|
146
|
+
from CivilTools.ReportGenerator import SeismicReport
|
147
|
+
|
148
|
+
report = SeismicReport()
|
149
|
+
report.creat_doc()
|
150
|
+
report.save("seismic_review_report.docx")
|
151
|
+
|
152
|
+
```
|
153
|
+
|
154
|
+
```python
|
155
|
+
from CivilTools.ReportGenerator import StairCalculationReport
|
156
|
+
|
157
|
+
report = StairCalculationReport()
|
158
|
+
report.set_stair_data()
|
159
|
+
report.set_calculate_info()
|
160
|
+
report.create()
|
161
|
+
report.save("stair_calculation_sheet.docx")
|
162
|
+
|
163
|
+
```
|
164
|
+
|
165
|
+
目前版本中的内容仍待持续完善...
|
166
|
+
|
167
|
+
<a id="FigureGenerator"></a>
|
168
|
+
|
169
|
+
### 各类数据图片绘制工具 ( `FigureGenerator` )
|
170
|
+
|
171
|
+
这是一个用于绘制各类图标的工具,完善中...
|
172
|
+
|
90
173
|
## Others
|
91
174
|
|
92
175
|
我将持续更新,并且尽快完善本 python 库,如果你有任何问题或者建议,请随时通过邮箱联系我:`just_gxy@163.com`.
|
@@ -0,0 +1,60 @@
|
|
1
|
+
CivilTools/__init__.py,sha256=-wp56jTtm8saVtMIQvuSDDtuYuXPMbO6XlgUxIOPirY,69
|
2
|
+
CivilTools/Const/CAD.py,sha256=NE5ceXZa2mKpL-OkDAPOA0ynSLJ1ipX3SLy0kwtmC3I,37
|
3
|
+
CivilTools/Const/Concrete.py,sha256=Ob5orPLYa0lgCuKcQbILPByYidQWeuiQ2udWVJWrXZ8,3183
|
4
|
+
CivilTools/Const/Steel.py,sha256=VevShJZu6P_9fvIJQQMugQMUdk-SEEIdtDIXzI9vKAY,621
|
5
|
+
CivilTools/Const/__init__.py,sha256=J0YTsXeBFqE0XtZEPWVh9KVAOOlmpo-k1sOVfMdYjw8,112
|
6
|
+
CivilTools/DXFGenerator/BasicDXF.py,sha256=3cKatghvTXhrNXMly8FI-PbcVZoncwa3thMjSRh4UkM,9125
|
7
|
+
CivilTools/DXFGenerator/DetailDXF.py,sha256=f9iy7S9x0SbgPyh_1e-8_puuWUdUJ6tFmzPrSeyPpPk,11449
|
8
|
+
CivilTools/DXFGenerator/DrawingAttribs.py,sha256=F3CElw80JVKxh9zYMAeQDKJSsmq-GRq9MAX9coSSUTk,1280
|
9
|
+
CivilTools/DXFGenerator/LayerManager.py,sha256=_FelBJNUsnDn66ZdVqBdnfYHvQ7roAO6irgFf2mDkjQ,664
|
10
|
+
CivilTools/DXFGenerator/__init__.py,sha256=0jtyx5QnPbhauFfgjj4I5uqCwTy-nSuKtT-tbyEUiwQ,147
|
11
|
+
CivilTools/FigureGenerator/BasicPNGPlotter.py,sha256=7PjRuArFc4y-NYy6WQCyfkpCahVCwtipJYEKk1My1D4,1982
|
12
|
+
CivilTools/FigureGenerator/BasicPltPlotter.py,sha256=DNuBgg5qwi0kbttrNLcnAr1G1rYNunNCOaLwc5_8dzk,4002
|
13
|
+
CivilTools/FigureGenerator/StairCalculationSheetPNGPlotter.py,sha256=iVOEY3MXu7x9D1d3W6fofPCUOHaR06lT9CsssNGqeBI,200
|
14
|
+
CivilTools/FigureGenerator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
|
+
CivilTools/FigureGenerator/SeismicReport/ShearMassRatio.py,sha256=XpmPA9PeRED4Xzl_5LgJVgm9jEHuTda2GAFs5zMfVP8,2731
|
16
|
+
CivilTools/FigureGenerator/SeismicReport/ShearMoment.py,sha256=dYa4SK20u6MJXDsLAkpGk8t2U2tu3bEmBheu5D5nHek,2660
|
17
|
+
CivilTools/FigureGenerator/SeismicReport/__init__.py,sha256=W4yE7-BWQ1aiG-_oR7A08L6TtpIA-dlebtuGpU2-uOM,96
|
18
|
+
CivilTools/ReportGenerator/BasicGenerator.py,sha256=h5FDZvk0X0BozZrLFWxdvcUd2JjERIVUauTscdpi8zw,11329
|
19
|
+
CivilTools/ReportGenerator/DocParagraph.py,sha256=xJ9VWbi3IFu5nwJAS56ooQ49bCk4EBvme6IaY46DRP4,428
|
20
|
+
CivilTools/ReportGenerator/DocPicture.py,sha256=9bJ6Zjw7Z6yB_h_H1_2wL9KZxA14zW-jmsKb_EEGxAc,246
|
21
|
+
CivilTools/ReportGenerator/DocTable.py,sha256=4RHti5oKVSAaZeZ3CL67thYHW8t42ezPeqBNK073rM0,1622
|
22
|
+
CivilTools/ReportGenerator/SeismicReport.py,sha256=ETUjTQZsInFCzW5Cjgt-UGul4tVN4ZiXQv0Xda6sDDo,15455
|
23
|
+
CivilTools/ReportGenerator/SeismicReportTemplate.py,sha256=TxgRBCT0vW25AMYvuAtrV0wFUyimAKMMn3KhzGZHJRQ,22104
|
24
|
+
CivilTools/ReportGenerator/StairCalculationReport.py,sha256=gr2fafvYjTJCM4_JIiE9G5xbiy4W30TfmEjj3DW882Q,21566
|
25
|
+
CivilTools/ReportGenerator/UtilFunctions.py,sha256=7qvAsZvoJN9pakENjBMYhrqP73xj5T4FuhSHa1t8lSA,9398
|
26
|
+
CivilTools/ReportGenerator/__init__.py,sha256=1FVcNtNFstmE8zEFABs9oVw7rHiulvUKx0tD1GNFJ58,332
|
27
|
+
CivilTools/YDBLoader/YDBLoader.py,sha256=2lwJn1oEU_aHWPbOu6pGZbJqpZLdEoTFqSjeZ4jE7fM,11109
|
28
|
+
CivilTools/YDBLoader/YDBType.py,sha256=KVk_qpOwp4yAsHn96L5PAVTMMO8SU4lFOnnTMsH_qP0,109
|
29
|
+
CivilTools/YDBLoader/__init__.py,sha256=dOomroeul9yiQQ3FZQVhnfYav43sDv1hUltoA0BrmLw,144
|
30
|
+
CivilTools/YDBLoader/BuildingDefine/ComponentType.py,sha256=soUKmSeeY6dCO4IMrLuaF3GcOj8HgzeCQOtudTSqhno,146
|
31
|
+
CivilTools/YDBLoader/BuildingDefine/__init__.py,sha256=er4GVwvtqOI0G-vzARApPVkS1ntbUiA2d5oa8BsBTq0,343
|
32
|
+
CivilTools/YDBLoader/BuildingDefine/Beam/Beam.py,sha256=h84shEe7Pg8k32-2ifgpKg8IqNDKxb58kKdsMflistg,673
|
33
|
+
CivilTools/YDBLoader/BuildingDefine/Beam/__init__.py,sha256=3H9M7yiiio2q4SfdfUv2I2uhokFZv_IOkivE1PRWXus,24
|
34
|
+
CivilTools/YDBLoader/BuildingDefine/Column/Column.py,sha256=Sqt_IiaiAgsDTR-TLF3bGiJ4KvFsFW0y7RlXCVqkEi0,423
|
35
|
+
CivilTools/YDBLoader/BuildingDefine/Column/__init__.py,sha256=6G4HGDhnwPdYq2FKQeDZsECwjVffeKAbdzhvFTxiBbQ,26
|
36
|
+
CivilTools/YDBLoader/BuildingDefine/Geometry/Grid.py,sha256=BVhmbu8DndZYprVATKp7bUCsT3SSWpwN0CC0kNQBfWo,557
|
37
|
+
CivilTools/YDBLoader/BuildingDefine/Geometry/Joint.py,sha256=MjJ2CkNOgnQYCbmOeauiwW63ooHwHZlGzib1v2nPnE0,725
|
38
|
+
CivilTools/YDBLoader/BuildingDefine/Geometry/StandFloor.py,sha256=lxh5l_H9dl4udvt0zjsWVkF1JLgURC5dfisfEenHnrY,29
|
39
|
+
CivilTools/YDBLoader/BuildingDefine/Geometry/__init__.py,sha256=8eX2KQlOvtqnJqZ8QTc8HTCEuTv6xk1JeIeFdBoGpYQ,86
|
40
|
+
CivilTools/YDBLoader/BuildingDefine/GlobalResult/BasicResult.py,sha256=5M6Y0k1pvrsC9HskmPkMvEbsIESbRkjMNUttU1Y5JBc,1817
|
41
|
+
CivilTools/YDBLoader/BuildingDefine/GlobalResult/SeismicResult.py,sha256=KoaQmF57_C2-EjVxYr1uu8ZVy_F_Ih-7yeYckkDvhYo,6825
|
42
|
+
CivilTools/YDBLoader/BuildingDefine/GlobalResult/__init__.py,sha256=cquJ_qevVkhpHRKKNJl8g_3WlmOhvejV4HthYhO0ZZI,150
|
43
|
+
CivilTools/YDBLoader/BuildingDefine/Section/Section.py,sha256=wFWHKbrf1VUeCM2fVbrCDERGvcaTqE6gmLiV2RO7cNs,1644
|
44
|
+
CivilTools/YDBLoader/BuildingDefine/Section/ShapeEnum.py,sha256=hTHx2wnNp1hMhRDM5upxxhgTpYGFF23rolfPpUcJFiI,856
|
45
|
+
CivilTools/YDBLoader/BuildingDefine/Section/__init__.py,sha256=lX7D2FvzQzzZ7B6F4MnXGpAxcwbyVdJreBOZMRmsQmQ,64
|
46
|
+
CivilTools/YDBLoader/BuildingDefine/Slab/Slab.py,sha256=IIeqSlPiXJHKRHtNsVYV8pNEhnkfgzKWwBuhYuEsJyg,23
|
47
|
+
CivilTools/YDBLoader/BuildingDefine/Slab/__init__.py,sha256=8hlak8vB7Ib_F7pvtCgWXHRfM8O8OLtWlBkpxohcbgY,22
|
48
|
+
CivilTools/YDBLoader/BuildingDefine/StairPart/LoadDefine.py,sha256=DYYjAlndN5J--d7vDD_-2Eq57WlRHi-NTjBQ9qgwtag,964
|
49
|
+
CivilTools/YDBLoader/BuildingDefine/StairPart/StairComponent.py,sha256=E0VL9c0WC9CPVsf3ByXn49SExx6GKFalHRauhkawaLE,3066
|
50
|
+
CivilTools/YDBLoader/BuildingDefine/StairPart/StairPart.py,sha256=0HLLcQbjOECbWHPKtci4mNOWv7CcgO4UVrtUyPwfeQw,8537
|
51
|
+
CivilTools/YDBLoader/BuildingDefine/StairPart/__init__.py,sha256=Z7tqd0HHG_Wg1qFTt4kiJxofz08DLBnTywpY5vtJmZk,145
|
52
|
+
CivilTools/YDBLoader/SQLiteConnector/Connector.py,sha256=TWr8SNdYrL3WqMVC3NqLfk6JwZmEEGNwGkEKCeeQbYM,2882
|
53
|
+
CivilTools/YDBLoader/SQLiteConnector/RowDataFactory.py,sha256=CRStFrV9ac2bi_R1CB6LW4_MrXhMtfyOFWgrT31PkI4,1537
|
54
|
+
CivilTools/YDBLoader/SQLiteConnector/YDBTableName.py,sha256=X71ka_a4CU39_r6_jtW2BO9nQe_wiequ4ELE77rvfVA,2614
|
55
|
+
CivilTools/YDBLoader/SQLiteConnector/__init__.py,sha256=0WWCCdLvlX0Rp-CjcVQc9oQ2b770Zd5TcMGxWBtToS4,116
|
56
|
+
civil_tools_v-0.0.3.dist-info/LICENSE,sha256=nq3TNN3UrfULANUGIRvaZAI1jUn6HlYeLxIRjJvDxCc,1088
|
57
|
+
civil_tools_v-0.0.3.dist-info/METADATA,sha256=KepJhL96WNYk3DIcl27ThIj0iBJFUwud1L5obualo08,6184
|
58
|
+
civil_tools_v-0.0.3.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
59
|
+
civil_tools_v-0.0.3.dist-info/top_level.txt,sha256=AP0ng4FJ3z78LnGOjUzZaGRMMp-lDtw91Rlia8z--wM,11
|
60
|
+
civil_tools_v-0.0.3.dist-info/RECORD,,
|
@@ -1,50 +0,0 @@
|
|
1
|
-
CivilTools/__init__.py,sha256=-wp56jTtm8saVtMIQvuSDDtuYuXPMbO6XlgUxIOPirY,69
|
2
|
-
CivilTools/DXFGenerator/BasicDXF.py,sha256=DxHqwnEe_j9zLlRKI9Uhl_munF1BZV-ZqVZSfR79j7o,27
|
3
|
-
CivilTools/DXFGenerator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
CivilTools/FigureGenerator/BasicPNGPlotter.py,sha256=lwqmxzfLyMRqgWCqp-RtEek1PuhousF1IqOyiaMBOH4,1949
|
5
|
-
CivilTools/FigureGenerator/BasicPltPlotter.py,sha256=zJ4sJqHTgj-6_TPVNOLGaitcqSdk7b4QARAvPKNJWKs,34
|
6
|
-
CivilTools/FigureGenerator/StairCalculationSheetPNGPlotter.py,sha256=Ljg3jD2J15gatEzJNS0ZnQS--BiH0mt79CkTawhMNKw,230
|
7
|
-
CivilTools/FigureGenerator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
-
CivilTools/ReportGenerator/BasicGenerator.py,sha256=VUrqKwTEKcYG3bIoOUZI3jNwji4s-Ju93CQVJ8TzCtI,10844
|
9
|
-
CivilTools/ReportGenerator/DocParagraph.py,sha256=7SKWuTfYXax22e6EcOYTBQEhDDzu4HXVutTJqfuGaQY,433
|
10
|
-
CivilTools/ReportGenerator/DocPicture.py,sha256=I2bQyjbPF7twJ5qiIYkyEkCHS6bAQcVUkO6BG6Yduro,174
|
11
|
-
CivilTools/ReportGenerator/DocTable.py,sha256=1j7dJpeeNE_YdwUy7NZ-TgPUKQFwJoQJNPr4M5-gekM,1618
|
12
|
-
CivilTools/ReportGenerator/SeismicReport.py,sha256=h_Xk1xiPJcdGXdQyCA5GsmehqBn_BbWOUEQVqyeoHsk,8530
|
13
|
-
CivilTools/ReportGenerator/SeismicReportTemplate.py,sha256=aYaKsT_DHvXXPGjVVcW5YbGaWbzLSUwMKbPTBwPc2no,12792
|
14
|
-
CivilTools/ReportGenerator/StairCalculationReport.py,sha256=tJOHYWpBJ2Ih1fHZin4-UV1mmv4qanCyWKs8BPvzMP0,20872
|
15
|
-
CivilTools/ReportGenerator/UtilFunctions.py,sha256=GZ2DGDFqkIO3QPIBbSx2g1NMNRgIGXmRLbBhCkQ7kro,9320
|
16
|
-
CivilTools/ReportGenerator/__init__.py,sha256=0m3P_xiVj5BIIgmxF1QiqXcPq1l3YiL9OyegrYWQMrs,311
|
17
|
-
CivilTools/YDBLoader/YDBLoader.py,sha256=rxLPSiSh0I2qvznNaqFF7JgYA2YfHxxNcixzQUQyiuU,10956
|
18
|
-
CivilTools/YDBLoader/YDBType.py,sha256=KVk_qpOwp4yAsHn96L5PAVTMMO8SU4lFOnnTMsH_qP0,109
|
19
|
-
CivilTools/YDBLoader/__init__.py,sha256=dOomroeul9yiQQ3FZQVhnfYav43sDv1hUltoA0BrmLw,144
|
20
|
-
CivilTools/YDBLoader/BuildingDefine/ComponentType.py,sha256=v7OeKx8I905EOxg7XPbqYklUsj8bcmPC1oRkQNs6Byo,148
|
21
|
-
CivilTools/YDBLoader/BuildingDefine/__init__.py,sha256=er4GVwvtqOI0G-vzARApPVkS1ntbUiA2d5oa8BsBTq0,343
|
22
|
-
CivilTools/YDBLoader/BuildingDefine/Beam/Beam.py,sha256=0FZYNQknmSp1S3370zDM_0ZBjjH7RaRZ-QlPxt6Jnbk,706
|
23
|
-
CivilTools/YDBLoader/BuildingDefine/Beam/__init__.py,sha256=3H9M7yiiio2q4SfdfUv2I2uhokFZv_IOkivE1PRWXus,24
|
24
|
-
CivilTools/YDBLoader/BuildingDefine/Column/Column.py,sha256=WOL-Jcx-yQcbEC2tSFsW_xxgx_HRsFIB0EYYWESt9w4,422
|
25
|
-
CivilTools/YDBLoader/BuildingDefine/Column/__init__.py,sha256=6G4HGDhnwPdYq2FKQeDZsECwjVffeKAbdzhvFTxiBbQ,26
|
26
|
-
CivilTools/YDBLoader/BuildingDefine/Geometry/Grid.py,sha256=5ft4XfuH1QZzUPFRpiQNMIQw9zFBddn_W7RpNb0azSw,597
|
27
|
-
CivilTools/YDBLoader/BuildingDefine/Geometry/Joint.py,sha256=XGX4GJqZD0mR0yStgU0wS1g4_wdgg297BFkmlU9V3ds,722
|
28
|
-
CivilTools/YDBLoader/BuildingDefine/Geometry/StandFloor.py,sha256=NUuWfGrS8hU5u7Aazv-1Fy2YS5P5bt0_h_yvl8G6diI,27
|
29
|
-
CivilTools/YDBLoader/BuildingDefine/Geometry/__init__.py,sha256=8eX2KQlOvtqnJqZ8QTc8HTCEuTv6xk1JeIeFdBoGpYQ,86
|
30
|
-
CivilTools/YDBLoader/BuildingDefine/GlobalResult/BasicResult.py,sha256=w6c2LCLCd9D6JFcgJ9h9_DySX6LOx6CHH1AR4VfkeCo,1258
|
31
|
-
CivilTools/YDBLoader/BuildingDefine/GlobalResult/SeismicResult.py,sha256=Q8twG9tWJfdrYwVF77IxhT5xXOeFNvPrWCFaZkY_MUk,3897
|
32
|
-
CivilTools/YDBLoader/BuildingDefine/GlobalResult/__init__.py,sha256=cquJ_qevVkhpHRKKNJl8g_3WlmOhvejV4HthYhO0ZZI,150
|
33
|
-
CivilTools/YDBLoader/BuildingDefine/Section/Section.py,sha256=J-YfgKvxNkARLMTTJ3ixHTzbuls01Cj0Xzwg0_yG68M,1755
|
34
|
-
CivilTools/YDBLoader/BuildingDefine/Section/ShapeEnum.py,sha256=eAuUumEcha2WSoSEFXGkkYLKl7J52wj_fdWBX8ta3yU,857
|
35
|
-
CivilTools/YDBLoader/BuildingDefine/Section/__init__.py,sha256=lX7D2FvzQzzZ7B6F4MnXGpAxcwbyVdJreBOZMRmsQmQ,64
|
36
|
-
CivilTools/YDBLoader/BuildingDefine/Slab/Slab.py,sha256=fezhh-bCj3nmg9IXTo-sCjOYWkSxwucrmrcQzZxYxSE,21
|
37
|
-
CivilTools/YDBLoader/BuildingDefine/Slab/__init__.py,sha256=8hlak8vB7Ib_F7pvtCgWXHRfM8O8OLtWlBkpxohcbgY,22
|
38
|
-
CivilTools/YDBLoader/BuildingDefine/StairPart/LoadDefine.py,sha256=ws-OkRLw5TmW9zFfo0LvEhfRXSo5SWlzpMd3cQc97H8,946
|
39
|
-
CivilTools/YDBLoader/BuildingDefine/StairPart/StairComponent.py,sha256=KO6gPprFSrQSYLoFnkhNwq9RxILdyCGNajvuPrCJ2KE,3047
|
40
|
-
CivilTools/YDBLoader/BuildingDefine/StairPart/StairPart.py,sha256=dNDadePzxI3jIekU5B7LIKwi85QQyfjROQ5Ov_5iDeQ,7717
|
41
|
-
CivilTools/YDBLoader/BuildingDefine/StairPart/__init__.py,sha256=Z7tqd0HHG_Wg1qFTt4kiJxofz08DLBnTywpY5vtJmZk,145
|
42
|
-
CivilTools/YDBLoader/SQLiteConnector/Connector.py,sha256=Hq3sdiv7OsydgBgcZKCDrDWHFIF673UpjNCAPjRFmZM,2787
|
43
|
-
CivilTools/YDBLoader/SQLiteConnector/RowDataFactory.py,sha256=ZLrGk1rc13wPPkeIWJ5R6z8onwUegKBl8MgTQAq2Cyw,1519
|
44
|
-
CivilTools/YDBLoader/SQLiteConnector/YDBTableName.py,sha256=x-v5rUoWKIwDJ5dMqxjf-7ZrBe8GimdAFNvroHiXOZs,2507
|
45
|
-
CivilTools/YDBLoader/SQLiteConnector/__init__.py,sha256=0WWCCdLvlX0Rp-CjcVQc9oQ2b770Zd5TcMGxWBtToS4,116
|
46
|
-
civil_tools_v-0.0.1.dist-info/LICENSE,sha256=nq3TNN3UrfULANUGIRvaZAI1jUn6HlYeLxIRjJvDxCc,1088
|
47
|
-
civil_tools_v-0.0.1.dist-info/METADATA,sha256=9t93iOTPqVwtvwMUfN0M_6mHdG0NxQYEag8zeHvMm3c,3387
|
48
|
-
civil_tools_v-0.0.1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
49
|
-
civil_tools_v-0.0.1.dist-info/top_level.txt,sha256=AP0ng4FJ3z78LnGOjUzZaGRMMp-lDtw91Rlia8z--wM,11
|
50
|
-
civil_tools_v-0.0.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|