pysectprop 0.0.1__tar.gz → 0.2.0__tar.gz

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 (76) hide show
  1. {pysectprop-0.0.1 → pysectprop-0.2.0}/LICENSE +21 -21
  2. {pysectprop-0.0.1 → pysectprop-0.2.0}/PKG-INFO +59 -58
  3. {pysectprop-0.0.1 → pysectprop-0.2.0}/README.md +44 -40
  4. pysectprop-0.2.0/pyproject.toml +21 -0
  5. {pysectprop-0.0.1 → pysectprop-0.2.0}/setup.cfg +4 -4
  6. pysectprop-0.2.0/src/pysectprop/__init__.py +5 -0
  7. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop/config.py +13 -13
  8. pysectprop-0.2.0/src/pysectprop/extruded/__init__.py +6 -0
  9. pysectprop-0.2.0/src/pysectprop/extruded/isection.py +93 -0
  10. pysectprop-0.2.0/src/pysectprop/extruded/jsection.py +81 -0
  11. pysectprop-0.2.0/src/pysectprop/extruded/lsection.py +60 -0
  12. pysectprop-0.2.0/src/pysectprop/extruded/omegasection.py +91 -0
  13. pysectprop-0.2.0/src/pysectprop/extruded/tsection.py +62 -0
  14. pysectprop-0.2.0/src/pysectprop/extruded/zsection.py +85 -0
  15. pysectprop-0.2.0/src/pysectprop/formed/__init__.py +4 -0
  16. pysectprop-0.2.0/src/pysectprop/formed/csectionformed.py +79 -0
  17. pysectprop-0.2.0/src/pysectprop/formed/lsectionformed.py +66 -0
  18. pysectprop-0.2.0/src/pysectprop/formed/omegasectionformed.py +81 -0
  19. pysectprop-0.2.0/src/pysectprop/formed/zsectionformed.py +75 -0
  20. pysectprop-0.2.0/src/pysectprop/general/__init__.py +10 -0
  21. pysectprop-0.2.0/src/pysectprop/general/arc.py +238 -0
  22. pysectprop-0.2.0/src/pysectprop/general/compositesection.py +337 -0
  23. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop/general/cripplingsection.py +257 -160
  24. pysectprop-0.2.0/src/pysectprop/general/generalsection.py +277 -0
  25. pysectprop-0.2.0/src/pysectprop/general/hollowsection.py +168 -0
  26. pysectprop-0.2.0/src/pysectprop/general/line.py +149 -0
  27. pysectprop-0.2.0/src/pysectprop/general/material.py +88 -0
  28. pysectprop-0.2.0/src/pysectprop/general/materialsection.py +229 -0
  29. pysectprop-0.2.0/src/pysectprop/general/mould.py +100 -0
  30. pysectprop-0.2.0/src/pysectprop/general/numericalsection.py +248 -0
  31. pysectprop-0.2.0/src/pysectprop/general/point.py +10 -0
  32. pysectprop-0.2.0/src/pysectprop/general/sector.py +246 -0
  33. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop/general/thinwalledsection.py +381 -362
  34. pysectprop-0.2.0/src/pysectprop/results/__init__.py +1 -0
  35. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop/results/sectionresult.py +151 -107
  36. pysectprop-0.2.0/src/pysectprop/standard/__init__.py +5 -0
  37. pysectprop-0.2.0/src/pysectprop/standard/circlesection.py +41 -0
  38. pysectprop-0.2.0/src/pysectprop/standard/rectanglesection.py +51 -0
  39. pysectprop-0.2.0/src/pysectprop/standard/semitubesection.py +48 -0
  40. pysectprop-0.2.0/src/pysectprop/standard/squaresection.py +43 -0
  41. pysectprop-0.2.0/src/pysectprop/standard/tubesection.py +46 -0
  42. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop.egg-info/PKG-INFO +59 -58
  43. pysectprop-0.2.0/src/pysectprop.egg-info/SOURCES.txt +48 -0
  44. pysectprop-0.2.0/tests/test_circle.py +57 -0
  45. pysectprop-0.2.0/tests/test_line.py +41 -0
  46. pysectprop-0.2.0/tests/test_materialsection.py +67 -0
  47. pysectprop-0.2.0/tests/test_rectangle.py +61 -0
  48. pysectprop-0.2.0/tests/test_sector.py +67 -0
  49. pysectprop-0.0.1/pysectprop/__init__.py +0 -5
  50. pysectprop-0.0.1/pysectprop/extruded/__init__.py +0 -10
  51. pysectprop-0.0.1/pysectprop/extruded/circlesection.py +0 -28
  52. pysectprop-0.0.1/pysectprop/extruded/isection.py +0 -58
  53. pysectprop-0.0.1/pysectprop/extruded/jsection.py +0 -94
  54. pysectprop-0.0.1/pysectprop/extruded/lsection.py +0 -39
  55. pysectprop-0.0.1/pysectprop/extruded/omegasection.py +0 -56
  56. pysectprop-0.0.1/pysectprop/extruded/rectanglesection.py +0 -35
  57. pysectprop-0.0.1/pysectprop/extruded/semitubesection.py +0 -32
  58. pysectprop-0.0.1/pysectprop/extruded/ssection.py +0 -64
  59. pysectprop-0.0.1/pysectprop/extruded/tubesection.py +0 -32
  60. pysectprop-0.0.1/pysectprop/extruded/zsection.py +0 -46
  61. pysectprop-0.0.1/pysectprop/formed/__init__.py +0 -2
  62. pysectprop-0.0.1/pysectprop/formed/csection.py +0 -45
  63. pysectprop-0.0.1/pysectprop/formed/lsection.py +0 -58
  64. pysectprop-0.0.1/pysectprop/general/__init__.py +0 -6
  65. pysectprop-0.0.1/pysectprop/general/arc.py +0 -313
  66. pysectprop-0.0.1/pysectprop/general/compositesection.py +0 -252
  67. pysectprop-0.0.1/pysectprop/general/generalsection.py +0 -359
  68. pysectprop-0.0.1/pysectprop/general/line.py +0 -120
  69. pysectprop-0.0.1/pysectprop/general/material.py +0 -54
  70. pysectprop-0.0.1/pysectprop/general/materialsection.py +0 -125
  71. pysectprop-0.0.1/pysectprop/general/point.py +0 -8
  72. pysectprop-0.0.1/pysectprop/results/__init__.py +0 -1
  73. pysectprop-0.0.1/pysectprop.egg-info/SOURCES.txt +0 -35
  74. pysectprop-0.0.1/setup.py +0 -22
  75. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop.egg-info/dependency_links.txt +0 -0
  76. {pysectprop-0.0.1 → pysectprop-0.2.0/src}/pysectprop.egg-info/top_level.txt +0 -0
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 Xero64
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Xero64
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,58 +1,59 @@
1
- Metadata-Version: 2.1
2
- Name: pysectprop
3
- Version: 0.0.1
4
- Summary: Python Section Property Calculator
5
- Home-page: https://github.com/Xero64/pysectprop
6
- Author: Xero64
7
- Author-email: xero64@gmail.com
8
- License: UNKNOWN
9
- Platform: UNKNOWN
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: License :: OSI Approved :: MIT License
12
- Classifier: Operating System :: OS Independent
13
- Requires-Python: >=3.8
14
- Description-Content-Type: text/markdown
15
- License-File: LICENSE
16
-
17
- # pysectprop
18
-
19
- Python Section Property Calculator
20
-
21
- Section properties can be calculated used and displayed from standard section geometry inputs.
22
-
23
- Example - Omega Section - test_omegasection.py:
24
-
25
- ``` python
26
- #%% Import Dependencies
27
- from IPython.display import display
28
- from pysectprop.extruded import OmegaSection
29
-
30
- #%% Create Section
31
- omsect = OmegaSection(20.0, 1.6, 20.0, 1.6, 10.0, 1.6, rf=0.0, rl=0.0)
32
-
33
- #%% Display Section Properties
34
- display(omsect)
35
-
36
- #%% Plot Section
37
- ax = omsect.plot()
38
- ```
39
-
40
- Output:
41
-
42
- ### Omega-Section
43
-
44
- | h<sub>w</sub> (mm) | t<sub>w</sub> (mm) | w<sub>f</sub> (mm) | t<sub>f</sub> (mm) | w<sub>l</sub> (mm) | t<sub>l</sub> (mm) | r<sub>f</sub> (mm) | r<sub>l</sub> (mm) |
45
- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
46
- | 20.0 | 1.6 | 20.0 | 1.6 | 10.0 | 1.6 | 0.0 | 0.0 |
47
-
48
- | A (mm<sup>2</sup>) | Ay (mm<sup>3</sup>) | Az (mm<sup>3</sup>) | c<sub>y</sub> (mm) | c<sub>z</sub> (mm) | Ayy (mm<sup>4</sup>) | Azz (mm<sup>4</sup>) | Ayz (mm<sup>4</sup>) |
49
- | :----------------: | :-----------------: | :-----------------: | :----------------: | :----------------: | :------------------: | :------------------: | :------------------: |
50
- | 117.8 | 0 | 1178 | 0.0 | 10.0 | 11641 | 18471 | 0 |
51
-
52
- | I<sub>yy</sub> (mm<sup>4</sup>) | I<sub>zz</sub> (mm<sup>4</sup>) | I<sub>yz</sub> (mm<sup>4</sup>) | &theta;<sub>p</sub> (&deg;) | I<sub>yp</sub> (mm<sup>4</sup>) | I<sub>zp</sub> (mm<sup>4</sup>) |
53
- | :-----------------------------: | :-----------------------------: | :-----------------------------: | :-------------------------: | :-----------------------------: | :-----------------------------: |
54
- | 6695 | 11641 | 0 | 0.0 | 6695 | 11641 |
55
-
56
- ![](omegasection.svg)
57
-
58
-
1
+ Metadata-Version: 2.4
2
+ Name: pysectprop
3
+ Version: 0.2.0
4
+ Summary: Python Package for Section Properties
5
+ Author-email: Xero64 <xero64@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Xero64/pysectprop
8
+ Project-URL: Issues, https://github.com/Xero64/pysectprop/issues
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Dynamic: license-file
15
+
16
+ # pysectprop
17
+
18
+ Python Section Property Calculator
19
+
20
+ Section properties can be calculated used and displayed from standard section geometry inputs.
21
+
22
+ Example - Omega Section - test_omegasection.py:
23
+
24
+ ``` python
25
+ #%%
26
+ # Import Dependencies
27
+ from IPython.display import display
28
+ from pysectprop.extruded import OmegaSection
29
+
30
+ #%%
31
+ # Create Section
32
+ omsect = OmegaSection(20.0, 1.6, 20.0, 1.6, 10.0, 1.6, rf=0.0, rl=0.0)
33
+
34
+ #%%
35
+ # Display Section Properties
36
+ display(omsect)
37
+
38
+ #%%
39
+ # Plot Section
40
+ ax = omsect.plot()
41
+ ```
42
+
43
+ Output:
44
+
45
+ ### Omega-Section
46
+
47
+ | h<sub>w</sub> (mm) | t<sub>w</sub> (mm) | w<sub>f</sub> (mm) | t<sub>f</sub> (mm) | w<sub>l</sub> (mm) | t<sub>l</sub> (mm) | r<sub>f</sub> (mm) | r<sub>l</sub> (mm) |
48
+ | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
49
+ | 20.0 | 1.6 | 20.0 | 1.6 | 10.0 | 1.6 | 0.0 | 0.0 |
50
+
51
+ | A (mm<sup>2</sup>) | Ay (mm<sup>3</sup>) | Az (mm<sup>3</sup>) | c<sub>y</sub> (mm) | c<sub>z</sub> (mm) | Ayy (mm<sup>4</sup>) | Azz (mm<sup>4</sup>) | Ayz (mm<sup>4</sup>) |
52
+ | :----------------: | :-----------------: | :-----------------: | :----------------: | :----------------: | :------------------: | :------------------: | :------------------: |
53
+ | 117.8 | 0 | 1178 | 0.0 | 10.0 | 11641 | 18471 | 0 |
54
+
55
+ | I<sub>yy</sub> (mm<sup>4</sup>) | I<sub>zz</sub> (mm<sup>4</sup>) | I<sub>yz</sub> (mm<sup>4</sup>) | &theta;<sub>p</sub> (&deg;) | I<sub>yp</sub> (mm<sup>4</sup>) | I<sub>zp</sub> (mm<sup>4</sup>) |
56
+ | :-----------------------------: | :-----------------------------: | :-----------------------------: | :-------------------------: | :-----------------------------: | :-----------------------------: |
57
+ | 6695 | 11641 | 0 | 0.0 | 6695 | 11641 |
58
+
59
+ ![](omegasection.svg)
@@ -1,40 +1,44 @@
1
- # pysectprop
2
-
3
- Python Section Property Calculator
4
-
5
- Section properties can be calculated used and displayed from standard section geometry inputs.
6
-
7
- Example - Omega Section - test_omegasection.py:
8
-
9
- ``` python
10
- #%% Import Dependencies
11
- from IPython.display import display
12
- from pysectprop.extruded import OmegaSection
13
-
14
- #%% Create Section
15
- omsect = OmegaSection(20.0, 1.6, 20.0, 1.6, 10.0, 1.6, rf=0.0, rl=0.0)
16
-
17
- #%% Display Section Properties
18
- display(omsect)
19
-
20
- #%% Plot Section
21
- ax = omsect.plot()
22
- ```
23
-
24
- Output:
25
-
26
- ### Omega-Section
27
-
28
- | h<sub>w</sub> (mm) | t<sub>w</sub> (mm) | w<sub>f</sub> (mm) | t<sub>f</sub> (mm) | w<sub>l</sub> (mm) | t<sub>l</sub> (mm) | r<sub>f</sub> (mm) | r<sub>l</sub> (mm) |
29
- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
30
- | 20.0 | 1.6 | 20.0 | 1.6 | 10.0 | 1.6 | 0.0 | 0.0 |
31
-
32
- | A (mm<sup>2</sup>) | Ay (mm<sup>3</sup>) | Az (mm<sup>3</sup>) | c<sub>y</sub> (mm) | c<sub>z</sub> (mm) | Ayy (mm<sup>4</sup>) | Azz (mm<sup>4</sup>) | Ayz (mm<sup>4</sup>) |
33
- | :----------------: | :-----------------: | :-----------------: | :----------------: | :----------------: | :------------------: | :------------------: | :------------------: |
34
- | 117.8 | 0 | 1178 | 0.0 | 10.0 | 11641 | 18471 | 0 |
35
-
36
- | I<sub>yy</sub> (mm<sup>4</sup>) | I<sub>zz</sub> (mm<sup>4</sup>) | I<sub>yz</sub> (mm<sup>4</sup>) | &theta;<sub>p</sub> (&deg;) | I<sub>yp</sub> (mm<sup>4</sup>) | I<sub>zp</sub> (mm<sup>4</sup>) |
37
- | :-----------------------------: | :-----------------------------: | :-----------------------------: | :-------------------------: | :-----------------------------: | :-----------------------------: |
38
- | 6695 | 11641 | 0 | 0.0 | 6695 | 11641 |
39
-
40
- ![](omegasection.svg)
1
+ # pysectprop
2
+
3
+ Python Section Property Calculator
4
+
5
+ Section properties can be calculated used and displayed from standard section geometry inputs.
6
+
7
+ Example - Omega Section - test_omegasection.py:
8
+
9
+ ``` python
10
+ #%%
11
+ # Import Dependencies
12
+ from IPython.display import display
13
+ from pysectprop.extruded import OmegaSection
14
+
15
+ #%%
16
+ # Create Section
17
+ omsect = OmegaSection(20.0, 1.6, 20.0, 1.6, 10.0, 1.6, rf=0.0, rl=0.0)
18
+
19
+ #%%
20
+ # Display Section Properties
21
+ display(omsect)
22
+
23
+ #%%
24
+ # Plot Section
25
+ ax = omsect.plot()
26
+ ```
27
+
28
+ Output:
29
+
30
+ ### Omega-Section
31
+
32
+ | h<sub>w</sub> (mm) | t<sub>w</sub> (mm) | w<sub>f</sub> (mm) | t<sub>f</sub> (mm) | w<sub>l</sub> (mm) | t<sub>l</sub> (mm) | r<sub>f</sub> (mm) | r<sub>l</sub> (mm) |
33
+ | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
34
+ | 20.0 | 1.6 | 20.0 | 1.6 | 10.0 | 1.6 | 0.0 | 0.0 |
35
+
36
+ | A (mm<sup>2</sup>) | Ay (mm<sup>3</sup>) | Az (mm<sup>3</sup>) | c<sub>y</sub> (mm) | c<sub>z</sub> (mm) | Ayy (mm<sup>4</sup>) | Azz (mm<sup>4</sup>) | Ayz (mm<sup>4</sup>) |
37
+ | :----------------: | :-----------------: | :-----------------: | :----------------: | :----------------: | :------------------: | :------------------: | :------------------: |
38
+ | 117.8 | 0 | 1178 | 0.0 | 10.0 | 11641 | 18471 | 0 |
39
+
40
+ | I<sub>yy</sub> (mm<sup>4</sup>) | I<sub>zz</sub> (mm<sup>4</sup>) | I<sub>yz</sub> (mm<sup>4</sup>) | &theta;<sub>p</sub> (&deg;) | I<sub>yp</sub> (mm<sup>4</sup>) | I<sub>zp</sub> (mm<sup>4</sup>) |
41
+ | :-----------------------------: | :-----------------------------: | :-----------------------------: | :-------------------------: | :-----------------------------: | :-----------------------------: |
42
+ | 6695 | 11641 | 0 | 0.0 | 6695 | 11641 |
43
+
44
+ ![](omegasection.svg)
@@ -0,0 +1,21 @@
1
+ [project]
2
+ name = "pysectprop"
3
+ version = "0.2.0"
4
+ authors = [
5
+ { name="Xero64", email="xero64@gmail.com" },
6
+ ]
7
+ description = "Python Package for Section Properties"
8
+ readme = "README.md"
9
+ requires-python = ">=3.10"
10
+ classifiers = [
11
+ "Programming Language :: Python :: 3",
12
+ "Operating System :: OS Independent",
13
+ ]
14
+ license = "MIT"
15
+ license-files = ["LICEN[CS]E*"]
16
+ dependencies = [
17
+ ]
18
+
19
+ [project.urls]
20
+ Homepage = "https://github.com/Xero64/pysectprop"
21
+ Issues = "https://github.com/Xero64/pysectprop/issues"
@@ -1,4 +1,4 @@
1
- [egg_info]
2
- tag_build =
3
- tag_date = 0
4
-
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,5 @@
1
+ from .general.compositesection import CompositeSection as CompositeSection
2
+ from .general.cripplingsection import CripplingSection as CripplingSection
3
+ from .general.generalsection import GeneralSection as GeneralSection
4
+ from .general.materialsection import MaterialSection as MaterialSection
5
+ from .general.thinwalledsection import ThinWalledSection as ThinWalledSection
@@ -1,13 +1,13 @@
1
- lunit = 'mm' # Length unit used in pysectprop
2
- funit = 'N' # Force unit used in pysectprop
3
- sunit = 'MPa' # Stress unit used in pysectprop
4
-
5
- angfrm = '.1f' # Angle format
6
- l1frm = '.1f' # Length format
7
- l2frm = '.1f' # Length**2 format
8
- l3frm = '.0f' # Length**3 format
9
- l4frm = '.0f' # Length**4 format
10
- sfrm = '.1f' # Stress format
11
- efrm = '.0f' # Elastic Modulus formaty
12
-
13
- msmode = False # Output Margins of Safety
1
+ lunit = 'mm' # Length unit used in pysectprop
2
+ funit = 'N' # Force unit used in pysectprop
3
+ sunit = 'MPa' # Stress unit used in pysectprop
4
+
5
+ angfrm = '.1f' # Angle format
6
+ l1frm = '.1f' # Length format
7
+ l2frm = '.1f' # Length**2 format
8
+ l3frm = '.0f' # Length**3 format
9
+ l4frm = '.0f' # Length**4 format
10
+ sfrm = '.1f' # Stress format
11
+ efrm = '.0f' # Elastic Modulus formaty
12
+
13
+ msmode = False # Output Margins of Safety
@@ -0,0 +1,6 @@
1
+ from .isection import ISection as ISection
2
+ from .jsection import JSection as JSection
3
+ from .lsection import LSection as LSection
4
+ from .omegasection import OmegaSection as OmegaSection
5
+ from .tsection import TSection as TSection
6
+ from .zsection import ZSection as ZSection
@@ -0,0 +1,93 @@
1
+ from py2md.classes import MDTable
2
+
3
+ from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
6
+
7
+ class ISection(GeneralSection):
8
+ hw: float = None
9
+ tw: float = None
10
+ wlf: float = None
11
+ tlf: float = None
12
+ wuf: float = None
13
+ tuf: float = None
14
+ rlf: float = None
15
+ ruf: float = None
16
+
17
+ def __init__(self, hw: float, tw: float, wlf: float, tlf: float,
18
+ wuf: float, tuf: float, rlf: float=0.0, ruf: float=0.0,
19
+ label: str=None) -> None:
20
+ self.hw = hw
21
+ self.tw = tw
22
+ self.wlf = wlf
23
+ self.tlf = tlf
24
+ self.wuf = wuf
25
+ self.tuf = tuf
26
+ self.rlf = rlf
27
+ self.ruf = ruf
28
+ y = [0.0, self.wlf/2, self.wlf/2,
29
+ self.tw/2, self.tw/2, self.wuf/2,
30
+ self.wuf/2, 0.0, -self.wuf/2, -self.wuf/2,
31
+ -self.tw/2, -self.tw/2, -self.wlf/2,
32
+ -self.wlf/2]
33
+ z = [0.0, 0.0, self.tlf, self.tlf,
34
+ self.hw-self.tuf, self.hw-self.tuf, self.hw,
35
+ self.hw, self.hw, self.hw-self.tuf, self.hw-self.tuf,
36
+ self.tlf, self.tlf, 0.0]
37
+ r = [0.0, 0.0, 0.0, self.rlf, self.ruf,
38
+ 0.0, 0.0, 0.0, 0.0, 0.0,
39
+ self.ruf, self.rlf, 0.0, 0.0]
40
+ super().__init__(y, z, r, label=label)
41
+
42
+ def _repr_markdown_(self) -> str:
43
+ mdstr = self.section_heading('I-Section')
44
+ table = MDTable()
45
+ table.add_column(f'h<sub>w</sub> ({config.lunit:s})', config.l1frm,
46
+ data=[self.hw])
47
+ table.add_column(f't<sub>w</sub> ({config.lunit:s})', config.l1frm,
48
+ data=[self.tw])
49
+ table.add_column(f'w<sub>lf</sub> ({config.lunit:s})', config.l1frm,
50
+ data=[self.wlf])
51
+ table.add_column(f't<sub>lf</sub> ({config.lunit:s})', config.l1frm,
52
+ data=[self.tlf])
53
+ table.add_column(f'w<sub>uf</sub> ({config.lunit:s})', config.l1frm,
54
+ data=[self.wuf])
55
+ table.add_column(f't<sub>uf</sub> ({config.lunit:s})', config.l1frm,
56
+ data=[self.tuf])
57
+ table.add_column(f'r<sub>lf</sub> ({config.lunit:s})', config.l1frm,
58
+ data=[self.rlf])
59
+ table.add_column(f'r<sub>uf</sub> ({config.lunit:s})', config.l1frm,
60
+ data=[self.ruf])
61
+ mdstr += table._repr_markdown_()
62
+ mdstr += self.section_properties(outtype='md')
63
+ return mdstr
64
+
65
+ def __str__(self) -> str:
66
+ outstr = self.section_heading('I-Section')
67
+ table = MDTable()
68
+ table.add_column(f'h_w ({config.lunit:s})', config.l1frm,
69
+ data=[self.hw])
70
+ table.add_column(f't_w ({config.lunit:s})', config.l1frm,
71
+ data=[self.tw])
72
+ table.add_column(f'w_lf ({config.lunit:s})', config.l1frm,
73
+ data=[self.wlf])
74
+ table.add_column(f't_lf ({config.lunit:s})', config.l1frm,
75
+ data=[self.tlf])
76
+ table.add_column(f'w_uf ({config.lunit:s})', config.l1frm,
77
+ data=[self.wuf])
78
+ table.add_column(f't_uf ({config.lunit:s})', config.l1frm,
79
+ data=[self.tuf])
80
+ table.add_column(f'r_lf ({config.lunit:s})', config.l1frm,
81
+ data=[self.rlf])
82
+ table.add_column(f'r_uf ({config.lunit:s})', config.l1frm,
83
+ data=[self.ruf])
84
+ outstr += table.__str__()
85
+ outstr += self.section_properties(outtype=str)
86
+ return outstr
87
+
88
+ def __repr__(self) -> str:
89
+ if self.label is None:
90
+ outstr = '<I-Section>'
91
+ else:
92
+ outstr = f'<I-Section {self.label:s}>'
93
+ return outstr
@@ -0,0 +1,81 @@
1
+ from py2md.classes import MDTable
2
+
3
+ from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
6
+
7
+ class JSection(GeneralSection):
8
+ hw: float = None
9
+ tw: float = None
10
+ wuf: float = None
11
+ wlf: float = None
12
+ tuf: float = None
13
+ tlf: float = None
14
+ ruf: float = None
15
+ rlf: float = None
16
+
17
+ def __init__(self, hw: float, tw: float, wuf: float, tuf: float,
18
+ wlf: float, tlf: float, rlf: float=0.0, ruf: float=0.0,
19
+ label: str=None) -> None:
20
+ self.hw = hw
21
+ self.tw = tw
22
+ self.wuf = wuf
23
+ self.tuf = tuf
24
+ self.wlf = wlf
25
+ self.tlf = tlf
26
+ self.rlf = rlf
27
+ self.ruf = ruf
28
+ y = [self.tw/2, self.tw/2, self.wuf/2, self.wuf/2,
29
+ -self.wuf/2, -self.wuf/2, -self.tw/2, -self.tw/2,
30
+ -self.wlf, -self.wlf]
31
+ z = [0.0, self.hw-self.tuf, self.hw-self.tuf, self.hw,
32
+ self.hw, self.hw-self.tuf, self.hw-self.tuf,
33
+ self.tlf, self.tlf, 0.0]
34
+ r = [0.0, self.ruf, 0.0, 0.0, 0.0, 0.0, self.ruf,
35
+ self.rlf, 0.0, 0.0]
36
+ super().__init__(y, z, r, label=label)
37
+
38
+ def _repr_markdown_(self) -> str:
39
+ mdstr = self.section_heading('J-Section')
40
+ table = MDTable()
41
+ table.add_column(f'h<sub>w</sub> ({config.lunit:s})', config.l1frm,
42
+ data=[self.hw])
43
+ table.add_column(f't<sub>w</sub> ({config.lunit:s})', config.l1frm,
44
+ data=[self.tw])
45
+ table.add_column(f'w<sub>uf</sub> ({config.lunit:s})', config.l1frm,
46
+ data=[self.wuf])
47
+ table.add_column(f't<sub>uf</sub> ({config.lunit:s})', config.l1frm,
48
+ data=[self.tuf])
49
+ table.add_column(f'w<sub>lf</sub> ({config.lunit:s})', config.l1frm,
50
+ data=[self.wlf])
51
+ table.add_column(f't<sub>lf</sub> ({config.lunit:s})', config.l1frm,
52
+ data=[self.tlf])
53
+ table.add_column(f'r<sub>lf</sub> ({config.lunit:s})', config.l1frm,
54
+ data=[self.rlf])
55
+ table.add_column(f'r<sub>uf</sub> ({config.lunit:s})', config.l1frm,
56
+ data=[self.ruf])
57
+ mdstr += table._repr_markdown_()
58
+ mdstr += self.section_properties(outtype='md')
59
+ return mdstr
60
+
61
+ def __str__(self) -> str:
62
+ outstr = self.section_heading('J-Section')
63
+ table = MDTable()
64
+ table.add_column(f'h_w ({config.lunit:s})', config.l1frm, data=[self.hw])
65
+ table.add_column(f't_w ({config.lunit:s})', config.l1frm, data=[self.tw])
66
+ table.add_column(f'w_uf ({config.lunit:s})', config.l1frm, data=[self.wuf])
67
+ table.add_column(f't_uf ({config.lunit:s})', config.l1frm, data=[self.tuf])
68
+ table.add_column(f'w_lf ({config.lunit:s})', config.l1frm, data=[self.wlf])
69
+ table.add_column(f't_lf ({config.lunit:s})', config.l1frm, data=[self.tlf])
70
+ table.add_column(f'r_lf ({config.lunit:s})', config.l1frm, data=[self.rlf])
71
+ table.add_column(f'r_uf ({config.lunit:s})', config.l1frm, data=[self.ruf])
72
+ outstr += table.__str__()
73
+ outstr += self.section_properties(outtype=str)
74
+ return outstr
75
+
76
+ def __repr__(self) -> str:
77
+ if self.label is None:
78
+ outstr = '<J-Section>'
79
+ else:
80
+ outstr = f'<J-Section {self.label:s}>'
81
+ return outstr
@@ -0,0 +1,60 @@
1
+ from py2md.classes import MDTable
2
+
3
+ from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
6
+
7
+ class LSection(GeneralSection):
8
+ hw: float = None
9
+ tw: float = None
10
+ wf: float = None
11
+ tf: float = None
12
+ rc: float = None
13
+
14
+ def __init__(self, hw: float, tw: float, wf: float, tf: float,
15
+ rc: float=0.0, label: str=None) -> None:
16
+ self.hw = hw
17
+ self.tw = tw
18
+ self.wf = wf
19
+ self.tf = tf
20
+ self.rc = rc
21
+ y = [0.0, self.wf, self.wf, self.tw, self.tw, 0.0]
22
+ z = [0.0, 0.0, self.tf, self.tf, self.hw, self.hw]
23
+ r = [0.0, 0.0, 0.0, self.rc, 0.0, 0.0]
24
+ super().__init__(y, z, r, label=label)
25
+
26
+ def _repr_markdown_(self) -> str:
27
+ mdstr = self.section_heading('L-Section')
28
+ table = MDTable()
29
+ table.add_column(f'h<sub>w</sub> ({config.lunit:s})', config.l1frm,
30
+ data=[self.hw])
31
+ table.add_column(f't<sub>w</sub> ({config.lunit:s})', config.l1frm,
32
+ data=[self.tw])
33
+ table.add_column(f'w<sub>f</sub> ({config.lunit:s})', config.l1frm,
34
+ data=[self.wf])
35
+ table.add_column(f't<sub>f</sub> ({config.lunit:s})', config.l1frm,
36
+ data=[self.tf])
37
+ table.add_column(f'r<sub>c</sub> ({config.lunit:s})', config.l1frm,
38
+ data=[self.rc])
39
+ mdstr += table._repr_markdown_()
40
+ mdstr += self.section_properties(outtype='md')
41
+ return mdstr
42
+
43
+ def __str__(self) -> str:
44
+ outstr = self.section_heading('L-Section')
45
+ table = MDTable()
46
+ table.add_column(f'h_w ({config.lunit:s})', config.l1frm, data=[self.hw])
47
+ table.add_column(f't_w ({config.lunit:s})', config.l1frm, data=[self.tw])
48
+ table.add_column(f'w_f ({config.lunit:s})', config.l1frm, data=[self.wf])
49
+ table.add_column(f't_f ({config.lunit:s})', config.l1frm, data=[self.tf])
50
+ table.add_column(f'r_c ({config.lunit:s})', config.l1frm, data=[self.rc])
51
+ outstr += table.__str__()
52
+ outstr += self.section_properties(outtype=str)
53
+ return outstr
54
+
55
+ def __repr__(self) -> str:
56
+ if self.label is None:
57
+ outstr = '<L-Section>'
58
+ else:
59
+ outstr = f'<L-Section {self.label:s}>'
60
+ return outstr