pysectprop 0.1.0__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 (58) hide show
  1. {pysectprop-0.1.0 → pysectprop-0.2.0}/LICENSE +1 -1
  2. {pysectprop-0.1.0 → pysectprop-0.2.0}/PKG-INFO +9 -8
  3. pysectprop-0.2.0/pyproject.toml +21 -0
  4. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/isection.py +9 -3
  5. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/jsection.py +9 -3
  6. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/lsection.py +9 -3
  7. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/omegasection.py +9 -3
  8. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/tsection.py +9 -3
  9. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/zsection.py +10 -3
  10. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/formed/csectionformed.py +10 -3
  11. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/formed/lsectionformed.py +10 -3
  12. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/formed/omegasectionformed.py +15 -8
  13. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/formed/zsectionformed.py +15 -8
  14. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/__init__.py +7 -3
  15. pysectprop-0.2.0/src/pysectprop/general/arc.py +238 -0
  16. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/compositesection.py +168 -96
  17. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/cripplingsection.py +23 -6
  18. pysectprop-0.2.0/src/pysectprop/general/generalsection.py +277 -0
  19. pysectprop-0.2.0/src/pysectprop/general/hollowsection.py +168 -0
  20. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/line.py +29 -15
  21. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/material.py +11 -4
  22. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/materialsection.py +87 -24
  23. pysectprop-0.2.0/src/pysectprop/general/mould.py +100 -0
  24. pysectprop-0.2.0/src/pysectprop/general/numericalsection.py +248 -0
  25. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/point.py +2 -0
  26. pysectprop-0.2.0/src/pysectprop/general/sector.py +246 -0
  27. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/general/thinwalledsection.py +73 -98
  28. pysectprop-0.2.0/src/pysectprop/results/__init__.py +1 -0
  29. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/results/sectionresult.py +27 -17
  30. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/standard/__init__.py +2 -1
  31. pysectprop-0.2.0/src/pysectprop/standard/circlesection.py +41 -0
  32. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/standard/rectanglesection.py +27 -11
  33. pysectprop-0.2.0/src/pysectprop/standard/semitubesection.py +48 -0
  34. pysectprop-0.2.0/src/pysectprop/standard/squaresection.py +43 -0
  35. pysectprop-0.2.0/src/pysectprop/standard/tubesection.py +46 -0
  36. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop.egg-info/PKG-INFO +9 -8
  37. pysectprop-0.2.0/src/pysectprop.egg-info/SOURCES.txt +48 -0
  38. pysectprop-0.2.0/tests/test_circle.py +57 -0
  39. pysectprop-0.2.0/tests/test_line.py +41 -0
  40. pysectprop-0.2.0/tests/test_materialsection.py +67 -0
  41. pysectprop-0.2.0/tests/test_rectangle.py +61 -0
  42. pysectprop-0.2.0/tests/test_sector.py +67 -0
  43. pysectprop-0.1.0/pysectprop/general/arc.py +0 -339
  44. pysectprop-0.1.0/pysectprop/general/generalsection.py +0 -394
  45. pysectprop-0.1.0/pysectprop/results/__init__.py +0 -1
  46. pysectprop-0.1.0/pysectprop/standard/circlesection.py +0 -28
  47. pysectprop-0.1.0/pysectprop/standard/semitubesection.py +0 -32
  48. pysectprop-0.1.0/pysectprop/standard/tubesection.py +0 -34
  49. pysectprop-0.1.0/pysectprop.egg-info/SOURCES.txt +0 -38
  50. pysectprop-0.1.0/setup.py +0 -22
  51. {pysectprop-0.1.0 → pysectprop-0.2.0}/README.md +0 -0
  52. {pysectprop-0.1.0 → pysectprop-0.2.0}/setup.cfg +0 -0
  53. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/__init__.py +2 -2
  54. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/config.py +0 -0
  55. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/extruded/__init__.py +2 -2
  56. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop/formed/__init__.py +2 -2
  57. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop.egg-info/dependency_links.txt +0 -0
  58. {pysectprop-0.1.0 → pysectprop-0.2.0/src}/pysectprop.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Xero64
3
+ Copyright (c) 2025 Xero64
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,16 +1,17 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pysectprop
3
- Version: 0.1.0
4
- Summary: Python Section Property Calculator
5
- Home-page: https://github.com/Xero64/pysectprop
6
- Author: Xero64
7
- Author-email: xero64@gmail.com
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
8
9
  Classifier: Programming Language :: Python :: 3
9
- Classifier: License :: OSI Approved :: MIT License
10
10
  Classifier: Operating System :: OS Independent
11
- Requires-Python: >=3.8
11
+ Requires-Python: >=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
+ Dynamic: license-file
14
15
 
15
16
  # pysectprop
16
17
 
@@ -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,6 +1,8 @@
1
1
  from py2md.classes import MDTable
2
- from ..general.generalsection import GeneralSection
2
+
3
3
  from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
4
6
 
5
7
  class ISection(GeneralSection):
6
8
  hw: float = None
@@ -11,6 +13,7 @@ class ISection(GeneralSection):
11
13
  tuf: float = None
12
14
  rlf: float = None
13
15
  ruf: float = None
16
+
14
17
  def __init__(self, hw: float, tw: float, wlf: float, tlf: float,
15
18
  wuf: float, tuf: float, rlf: float=0.0, ruf: float=0.0,
16
19
  label: str=None) -> None:
@@ -35,6 +38,7 @@ class ISection(GeneralSection):
35
38
  0.0, 0.0, 0.0, 0.0, 0.0,
36
39
  self.ruf, self.rlf, 0.0, 0.0]
37
40
  super().__init__(y, z, r, label=label)
41
+
38
42
  def _repr_markdown_(self) -> str:
39
43
  mdstr = self.section_heading('I-Section')
40
44
  table = MDTable()
@@ -57,6 +61,7 @@ class ISection(GeneralSection):
57
61
  mdstr += table._repr_markdown_()
58
62
  mdstr += self.section_properties(outtype='md')
59
63
  return mdstr
64
+
60
65
  def __str__(self) -> str:
61
66
  outstr = self.section_heading('I-Section')
62
67
  table = MDTable()
@@ -76,9 +81,10 @@ class ISection(GeneralSection):
76
81
  data=[self.rlf])
77
82
  table.add_column(f'r_uf ({config.lunit:s})', config.l1frm,
78
83
  data=[self.ruf])
79
- outstr += str(table)
80
- outstr += self.section_properties(outtype='str')
84
+ outstr += table.__str__()
85
+ outstr += self.section_properties(outtype=str)
81
86
  return outstr
87
+
82
88
  def __repr__(self) -> str:
83
89
  if self.label is None:
84
90
  outstr = '<I-Section>'
@@ -1,6 +1,8 @@
1
1
  from py2md.classes import MDTable
2
- from ..general.generalsection import GeneralSection
2
+
3
3
  from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
4
6
 
5
7
  class JSection(GeneralSection):
6
8
  hw: float = None
@@ -11,6 +13,7 @@ class JSection(GeneralSection):
11
13
  tlf: float = None
12
14
  ruf: float = None
13
15
  rlf: float = None
16
+
14
17
  def __init__(self, hw: float, tw: float, wuf: float, tuf: float,
15
18
  wlf: float, tlf: float, rlf: float=0.0, ruf: float=0.0,
16
19
  label: str=None) -> None:
@@ -31,6 +34,7 @@ class JSection(GeneralSection):
31
34
  r = [0.0, self.ruf, 0.0, 0.0, 0.0, 0.0, self.ruf,
32
35
  self.rlf, 0.0, 0.0]
33
36
  super().__init__(y, z, r, label=label)
37
+
34
38
  def _repr_markdown_(self) -> str:
35
39
  mdstr = self.section_heading('J-Section')
36
40
  table = MDTable()
@@ -53,6 +57,7 @@ class JSection(GeneralSection):
53
57
  mdstr += table._repr_markdown_()
54
58
  mdstr += self.section_properties(outtype='md')
55
59
  return mdstr
60
+
56
61
  def __str__(self) -> str:
57
62
  outstr = self.section_heading('J-Section')
58
63
  table = MDTable()
@@ -64,9 +69,10 @@ class JSection(GeneralSection):
64
69
  table.add_column(f't_lf ({config.lunit:s})', config.l1frm, data=[self.tlf])
65
70
  table.add_column(f'r_lf ({config.lunit:s})', config.l1frm, data=[self.rlf])
66
71
  table.add_column(f'r_uf ({config.lunit:s})', config.l1frm, data=[self.ruf])
67
- outstr += str(table)
68
- outstr += self.section_properties(outtype='str')
72
+ outstr += table.__str__()
73
+ outstr += self.section_properties(outtype=str)
69
74
  return outstr
75
+
70
76
  def __repr__(self) -> str:
71
77
  if self.label is None:
72
78
  outstr = '<J-Section>'
@@ -1,6 +1,8 @@
1
1
  from py2md.classes import MDTable
2
- from ..general.generalsection import GeneralSection
2
+
3
3
  from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
4
6
 
5
7
  class LSection(GeneralSection):
6
8
  hw: float = None
@@ -8,6 +10,7 @@ class LSection(GeneralSection):
8
10
  wf: float = None
9
11
  tf: float = None
10
12
  rc: float = None
13
+
11
14
  def __init__(self, hw: float, tw: float, wf: float, tf: float,
12
15
  rc: float=0.0, label: str=None) -> None:
13
16
  self.hw = hw
@@ -19,6 +22,7 @@ class LSection(GeneralSection):
19
22
  z = [0.0, 0.0, self.tf, self.tf, self.hw, self.hw]
20
23
  r = [0.0, 0.0, 0.0, self.rc, 0.0, 0.0]
21
24
  super().__init__(y, z, r, label=label)
25
+
22
26
  def _repr_markdown_(self) -> str:
23
27
  mdstr = self.section_heading('L-Section')
24
28
  table = MDTable()
@@ -35,6 +39,7 @@ class LSection(GeneralSection):
35
39
  mdstr += table._repr_markdown_()
36
40
  mdstr += self.section_properties(outtype='md')
37
41
  return mdstr
42
+
38
43
  def __str__(self) -> str:
39
44
  outstr = self.section_heading('L-Section')
40
45
  table = MDTable()
@@ -43,9 +48,10 @@ class LSection(GeneralSection):
43
48
  table.add_column(f'w_f ({config.lunit:s})', config.l1frm, data=[self.wf])
44
49
  table.add_column(f't_f ({config.lunit:s})', config.l1frm, data=[self.tf])
45
50
  table.add_column(f'r_c ({config.lunit:s})', config.l1frm, data=[self.rc])
46
- outstr += str(table)
47
- outstr += self.section_properties(outtype='str')
51
+ outstr += table.__str__()
52
+ outstr += self.section_properties(outtype=str)
48
53
  return outstr
54
+
49
55
  def __repr__(self) -> str:
50
56
  if self.label is None:
51
57
  outstr = '<L-Section>'
@@ -1,6 +1,8 @@
1
1
  from py2md.classes import MDTable
2
- from ..general.generalsection import GeneralSection
2
+
3
3
  from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
4
6
 
5
7
  class OmegaSection(GeneralSection):
6
8
  hw: float = None # Height of web
@@ -11,6 +13,7 @@ class OmegaSection(GeneralSection):
11
13
  tlf: float = None # Thickness of lower flange
12
14
  ruf: float = None # Radius of upper flange
13
15
  rlf: float = None # Radius of lower flange
16
+
14
17
  def __init__(self, hw: float, tw: float, wuf: float, tuf: float,
15
18
  wlf: float, tlf: float, ruf: float=0.0, rlf: float=0.0,
16
19
  label: str=None) -> None:
@@ -33,6 +36,7 @@ class OmegaSection(GeneralSection):
33
36
  r = [0.0, 0.0, self.rlf, 0.0, 0.0, 0.0, self.ruf, 0.0,
34
37
  self.ruf, 0.0, 0.0, 0.0, self.rlf, 0.0]
35
38
  super().__init__(y, z, r, label=label)
39
+
36
40
  def _repr_markdown_(self) -> str:
37
41
  mdstr = self.section_heading('Omega-Section')
38
42
  table = MDTable()
@@ -55,6 +59,7 @@ class OmegaSection(GeneralSection):
55
59
  mdstr += table._repr_markdown_()
56
60
  mdstr += self.section_properties(outtype='md')
57
61
  return mdstr
62
+
58
63
  def __str__(self) -> str:
59
64
  outstr = self.section_heading('Omega-Section')
60
65
  table = MDTable()
@@ -74,9 +79,10 @@ class OmegaSection(GeneralSection):
74
79
  config.l1frm, data=[self.ruf])
75
80
  table.add_column(f'r_lf ({config.lunit:s})',
76
81
  config.l1frm, data=[self.rlf])
77
- outstr += str(table)
78
- outstr += self.section_properties(outtype='str')
82
+ outstr += table.__str__()
83
+ outstr += self.section_properties(outtype=str)
79
84
  return outstr
85
+
80
86
  def __repr__(self) -> str:
81
87
  if self.label is None:
82
88
  outstr = '<Omega-Section>'
@@ -1,6 +1,8 @@
1
1
  from py2md.classes import MDTable
2
- from ..general.generalsection import GeneralSection
2
+
3
3
  from .. import config
4
+ from ..general.generalsection import GeneralSection
5
+
4
6
 
5
7
  class TSection(GeneralSection):
6
8
  hw: float = None
@@ -8,6 +10,7 @@ class TSection(GeneralSection):
8
10
  wf: float = None
9
11
  tf: float = None
10
12
  rf: float = None
13
+
11
14
  def __init__(self, hw: float, tw: float, wf: float, tf: float,
12
15
  rf: float=0.0, label: str=None):
13
16
  self.hw = hw
@@ -21,6 +24,7 @@ class TSection(GeneralSection):
21
24
  0.0, self.hw-self.tf, self.hw-self.tf, self.hw]
22
25
  r = [0.0, 0.0, self.rf, 0.0, 0.0, self.rf, 0.0, 0.0]
23
26
  super().__init__(y, z, r, label=label)
27
+
24
28
  def _repr_markdown_(self) -> str:
25
29
  mdstr = self.section_heading('T-Section')
26
30
  table = MDTable()
@@ -37,6 +41,7 @@ class TSection(GeneralSection):
37
41
  mdstr += table._repr_markdown_()
38
42
  mdstr += self.section_properties(outtype='md')
39
43
  return mdstr
44
+
40
45
  def __str__(self) -> str:
41
46
  mdstr = self.section_heading('T-Section')
42
47
  table = MDTable()
@@ -45,9 +50,10 @@ class TSection(GeneralSection):
45
50
  table.add_column(f'w_f ({config.lunit:s})', config.l1frm, data=[self.wf])
46
51
  table.add_column(f't_f ({config.lunit:s})', config.l1frm, data=[self.tf])
47
52
  table.add_column(f'r_f ({config.lunit:s})', config.l1frm, data=[self.rf])
48
- mdstr += str(table)
49
- mdstr += self.section_properties(outtype='str')
53
+ mdstr += table.__str__()
54
+ mdstr += self.section_properties(outtype=str)
50
55
  return mdstr
56
+
51
57
  def __repr__(self) -> str:
52
58
  if self.label is None:
53
59
  outstr = '<T-Section>'
@@ -1,7 +1,9 @@
1
1
  from py2md.classes import MDTable
2
+
3
+ from .. import config
2
4
  from ..general.generalsection import GeneralSection
3
5
  from ..general.thinwalledsection import ThinWalledSection
4
- from .. import config
6
+
5
7
 
6
8
  class ZSection(GeneralSection):
7
9
  hw: float = None
@@ -12,6 +14,7 @@ class ZSection(GeneralSection):
12
14
  tuf: float = None
13
15
  rlf: float = None
14
16
  ruf: float = None
17
+
15
18
  def __init__(self, hw: float, tw: float, wlf: float, tlf: float,
16
19
  wuf: float, tuf: float, ruf: float=0.0, rlf: float=0.0,
17
20
  label: str=None) -> None:
@@ -29,11 +32,13 @@ class ZSection(GeneralSection):
29
32
  self.hw, self.hw - self.tuf, self.hw - self.tuf]
30
33
  r = [0.0, 0.0, 0.0, self.ruf, 0.0, 0.0, 0.0, self.rlf]
31
34
  super().__init__(y, z, r, label=label)
35
+
32
36
  def to_thin_walled_section(self) -> ThinWalledSection:
33
37
  y = [self.wlf, self.tw/2, self.tw/2, self.tw/2-self.wuf]
34
38
  z = [self.tlf/2, self.tlf/2, self.hw-self.tuf/2, self.hw-self.tuf/2]
35
39
  t = [self.tlf, self.tw, self.tuf]
36
40
  return ThinWalledSection(y, z, t, label=self.label)
41
+
37
42
  def _repr_markdown_(self) -> str:
38
43
  mdstr = self.section_heading('Z-Section')
39
44
  table = MDTable()
@@ -56,6 +61,7 @@ class ZSection(GeneralSection):
56
61
  mdstr += table._repr_markdown_()
57
62
  mdstr += self.section_properties(outtype='md')
58
63
  return mdstr
64
+
59
65
  def __str__(self) -> str:
60
66
  outstr = self.section_heading('Z-Section')
61
67
  table = MDTable()
@@ -67,9 +73,10 @@ class ZSection(GeneralSection):
67
73
  table.add_column(f't_lf ({config.lunit:s})', config.l1frm, data=[self.tuf])
68
74
  table.add_column(f'r_uf ({config.lunit:s})', config.l1frm, data=[self.ruf])
69
75
  table.add_column(f'r_lf ({config.lunit:s})', config.l1frm, data=[self.rlf])
70
- outstr += str(table)
71
- outstr += self.section_properties(outtype='str')
76
+ outstr += table.__str__()
77
+ outstr += self.section_properties(outtype=str)
72
78
  return outstr
79
+
73
80
  def __repr__(self) -> str:
74
81
  if self.label is None:
75
82
  outstr = '<Z-Section>'
@@ -1,7 +1,9 @@
1
1
  from py2md.classes import MDTable
2
+
3
+ from .. import config
2
4
  from ..general.generalsection import GeneralSection
3
5
  from ..general.thinwalledsection import ThinWalledSection
4
- from .. import config
6
+
5
7
 
6
8
  class CSectionFormed(GeneralSection):
7
9
  hw: float = None # Height of web
@@ -9,6 +11,7 @@ class CSectionFormed(GeneralSection):
9
11
  wlf: float = None # Width of upper flange
10
12
  ts: float = None # Thickness of section
11
13
  rm: float = None # Bend radius
14
+
12
15
  def __init__(self, hw: float, wuf: float, wlf: float, ts: float,
13
16
  rm: float, label: str=None) -> None:
14
17
  self.hw = hw
@@ -27,11 +30,13 @@ class CSectionFormed(GeneralSection):
27
30
  ro = self.rm+self.ts/2
28
31
  r = [ro, 0.0, 0.0, ri, ri, 0.0, 0.0, ro]
29
32
  super().__init__(y, z, r, label=label)
33
+
30
34
  def to_thin_walled_section(self) -> ThinWalledSection:
31
35
  y = [self.wlf, self.ts/2, self.ts/2, self.wuf]
32
36
  z = [self.ts/2, self.ts/2, self.hw-self.ts/2, self.hw-self.ts/2]
33
37
  t = [self.ts, self.ts, self.ts]
34
38
  return ThinWalledSection(y, z, t)
39
+
35
40
  def _repr_markdown_(self) -> str:
36
41
  mdstr = self.section_heading('C-Section')
37
42
  table = MDTable()
@@ -48,6 +53,7 @@ class CSectionFormed(GeneralSection):
48
53
  mdstr += table._repr_markdown_()
49
54
  mdstr += self.section_properties(outtype='md')
50
55
  return mdstr
56
+
51
57
  def __str__(self) -> str:
52
58
  mdstr = self.section_heading('C-Section')
53
59
  table = MDTable()
@@ -61,9 +67,10 @@ class CSectionFormed(GeneralSection):
61
67
  config.l1frm, data=[self.ts])
62
68
  table.add_column(f'r_m ({config.lunit:s})',
63
69
  config.l1frm, data=[self.rm])
64
- mdstr += str(table)
65
- mdstr += self.section_properties(outtype='str')
70
+ mdstr += table.__str__()
71
+ mdstr += self.section_properties(outtype=str)
66
72
  return mdstr
73
+
67
74
  def __repr__(self) -> str:
68
75
  if self.label is None:
69
76
  outstr = '<C-Section Formed>'
@@ -1,13 +1,16 @@
1
1
  from py2md.classes import MDTable
2
+
3
+ from .. import config
2
4
  from ..general.generalsection import GeneralSection
3
5
  from ..general.thinwalledsection import ThinWalledSection
4
- from .. import config
6
+
5
7
 
6
8
  class LSectionFormed(GeneralSection):
7
9
  hw: float = None # Height of web
8
10
  wf: float = None # Width of flange
9
11
  ts: float = None # Thickness of section
10
12
  rm: float = None # Bend radius
13
+
11
14
  def __init__(self, hw: float, wf: float, ts: float, rm: float,
12
15
  label: str=None) -> None:
13
16
  self.hw = hw
@@ -18,11 +21,13 @@ class LSectionFormed(GeneralSection):
18
21
  z = [0.0, 0.0, self.ts, self.ts, self.hw, self.hw]
19
22
  r = [self.rm+self.ts/2, 0.0, 0.0, self.rm-self.ts/2, 0.0, 0.0]
20
23
  super().__init__(y, z, r, label=label)
24
+
21
25
  def to_thin_walled_section(self) -> ThinWalledSection:
22
26
  y = [self.ts/2, self.ts/2, self.wf]
23
27
  z = [self.hw, self.ts/2, self.ts/2]
24
28
  t = [self.ts, self.ts]
25
29
  return ThinWalledSection(y, z, t)
30
+
26
31
  def _repr_markdown_(self) -> str:
27
32
  mdstr = self.section_heading('L-Section')
28
33
  table = MDTable()
@@ -37,6 +42,7 @@ class LSectionFormed(GeneralSection):
37
42
  mdstr += table._repr_markdown_()
38
43
  mdstr += self.section_properties(outtype='md')
39
44
  return mdstr
45
+
40
46
  def __str__(self) -> str:
41
47
  outstr = self.section_heading('L-Section')
42
48
  table = MDTable()
@@ -48,9 +54,10 @@ class LSectionFormed(GeneralSection):
48
54
  config.l1frm, data=[self.ts])
49
55
  table.add_column(f'r_m ({config.lunit:s})',
50
56
  config.l1frm, data=[self.rm])
51
- outstr += str(table)
52
- outstr += self.section_properties(outtype='str')
57
+ outstr += table.__str__()
58
+ outstr += self.section_properties(outtype=str)
53
59
  return outstr
60
+
54
61
  def __repr__(self) -> str:
55
62
  if self.label is None:
56
63
  outstr = '<L-Section>'
@@ -1,7 +1,9 @@
1
1
  from py2md.classes import MDTable
2
+
3
+ from .. import config
2
4
  from ..general.generalsection import GeneralSection
3
5
  from ..general.thinwalledsection import ThinWalledSection
4
- from .. import config
6
+
5
7
 
6
8
  class OmegaSectionFormed(GeneralSection):
7
9
  hw: float = None # Height of web
@@ -9,6 +11,7 @@ class OmegaSectionFormed(GeneralSection):
9
11
  wlf: float = None # Width of upper flange
10
12
  ts: float = None # Thickness of section
11
13
  rm: float = None # Bend radius
14
+
12
15
  def __init__(self, hw: float, wlf: float, wuf: float, ts: float,
13
16
  rm: float, label: str=None) -> None:
14
17
  self.hw = hw
@@ -27,6 +30,7 @@ class OmegaSectionFormed(GeneralSection):
27
30
  self.rm+self.ts/2, 0.0, 0.0, self.rm-self.ts/2, self.rm+self.ts/2,
28
31
  self.rm+self.ts/2, self.rm-self.ts/2, 0.0]
29
32
  super().__init__(y, z, r, label=label)
33
+
30
34
  def to_thin_walled_section(self) -> ThinWalledSection:
31
35
  y = [-self.wlf-self.wuf/2+self.ts, -self.wuf/2+self.ts/2, -self.wuf/2+self.ts/2,
32
36
  self.wuf/2-self.ts/2, self.wuf/2-self.ts/2, self.wlf+self.wuf/2-self.ts]
@@ -34,6 +38,7 @@ class OmegaSectionFormed(GeneralSection):
34
38
  self.ts/2, self.ts/2]
35
39
  t = [self.ts, self.ts, self.ts, self.ts, self.ts]
36
40
  return ThinWalledSection(y, z, t)
41
+
37
42
  def _repr_markdown_(self) -> str:
38
43
  mdstr = self.section_heading('Omega-Section Formed')
39
44
  table = MDTable()
@@ -50,22 +55,24 @@ class OmegaSectionFormed(GeneralSection):
50
55
  mdstr += table._repr_markdown_()
51
56
  mdstr += self.section_properties(outtype='md')
52
57
  return mdstr
58
+
53
59
  def __str__(self) -> str:
54
60
  outstr = self.section_heading('Omega-Section Formed')
55
61
  table = MDTable()
56
- table.add_column(f'h<sub>w</sub> ({config.lunit:s})',
62
+ table.add_column(f'h_w ({config.lunit:s})',
57
63
  config.l1frm, data=[self.hw])
58
- table.add_column(f'w<sub>lf</sub> ({config.lunit:s})',
64
+ table.add_column(f'w_lf ({config.lunit:s})',
59
65
  config.l1frm, data=[self.wlf])
60
- table.add_column(f'w<sub>uf</sub> ({config.lunit:s})',
66
+ table.add_column(f'w_uf ({config.lunit:s})',
61
67
  config.l1frm, data=[self.wuf])
62
- table.add_column(f't<sub>s</sub> ({config.lunit:s})',
68
+ table.add_column(f't_s ({config.lunit:s})',
63
69
  config.l1frm, data=[self.ts])
64
- table.add_column(f'r<sub>m</sub> ({config.lunit:s})',
70
+ table.add_column(f'r_m ({config.lunit:s})',
65
71
  config.l1frm, data=[self.rm])
66
- outstr += str(table)
67
- outstr += self.section_properties(outtype='str')
72
+ outstr += table.__str__()
73
+ outstr += self.section_properties(outtype=str)
68
74
  return outstr
75
+
69
76
  def __repr__(self) -> str:
70
77
  if self.label is None:
71
78
  outstr = '<Omega-Section Formed>'
@@ -1,7 +1,9 @@
1
1
  from py2md.classes import MDTable
2
+
3
+ from .. import config
2
4
  from ..general.generalsection import GeneralSection
3
5
  from ..general.thinwalledsection import ThinWalledSection
4
- from .. import config
6
+
5
7
 
6
8
  class ZSectionFormed(GeneralSection):
7
9
  hw: float = None # Height of web
@@ -9,6 +11,7 @@ class ZSectionFormed(GeneralSection):
9
11
  wlf: float = None # Width of upper flange
10
12
  ts: float = None # Thickness of section
11
13
  rm: float = None # Bend radius
14
+
12
15
  def __init__(self, hw: float, wlf: float, wuf: float, ts: float,
13
16
  rm: float, label: str=None) -> None:
14
17
  self.hw = hw
@@ -23,11 +26,13 @@ class ZSectionFormed(GeneralSection):
23
26
  r = [self.rm+self.ts/2, 0.0, 0.0, self.rm-self.ts/2, self.rm+self.ts/2,
24
27
  0.0, 0.0, self.rm-self.ts/2]
25
28
  super().__init__(y, z, r, label=label)
29
+
26
30
  def to_thin_walled_section(self) -> ThinWalledSection:
27
31
  y = [self.wlf, self.ts/2, self.ts/2, self.ts/2-self.wuf]
28
32
  z = [self.ts/2, self.ts/2, self.hw-self.ts/2, self.hw-self.ts/2]
29
33
  t = [self.ts, self.ts, self.ts]
30
34
  return ThinWalledSection(y, z, t)
35
+
31
36
  def _repr_markdown_(self) -> str:
32
37
  mdstr = self.section_heading('Z-Section')
33
38
  table = MDTable()
@@ -44,22 +49,24 @@ class ZSectionFormed(GeneralSection):
44
49
  mdstr += table._repr_markdown_()
45
50
  mdstr += self.section_properties(outtype='md')
46
51
  return mdstr
52
+
47
53
  def __str__(self) -> str:
48
54
  outstr = self.section_heading('Z-Section')
49
55
  table = MDTable()
50
- table.add_column(f'h<sub>w</sub> ({config.lunit:s})',
56
+ table.add_column(f'h_w ({config.lunit:s})',
51
57
  config.l1frm, data=[self.hw])
52
- table.add_column(f'w<sub>lf</sub> ({config.lunit:s})',
58
+ table.add_column(f'w_lf ({config.lunit:s})',
53
59
  config.l1frm, data=[self.wlf])
54
- table.add_column(f'w<sub>uf</sub> ({config.lunit:s})',
60
+ table.add_column(f'w_uf ({config.lunit:s})',
55
61
  config.l1frm, data=[self.wuf])
56
- table.add_column(f't<sub>s</sub> ({config.lunit:s})',
62
+ table.add_column(f't_s ({config.lunit:s})',
57
63
  config.l1frm, data=[self.ts])
58
- table.add_column(f'r<sub>m</sub> ({config.lunit:s})',
64
+ table.add_column(f'r_m ({config.lunit:s})',
59
65
  config.l1frm, data=[self.rm])
60
- outstr += str(table)
61
- outstr += self.section_properties(outtype='str')
66
+ outstr += table.__str__()
67
+ outstr += self.section_properties(outtype=str)
62
68
  return outstr
69
+
63
70
  def __repr__(self) -> str:
64
71
  if self.label is None:
65
72
  outstr = '<Z-Section>'
@@ -1,6 +1,10 @@
1
- from .generalsection import GeneralSection as GeneralSection
2
- from .materialsection import MaterialSection as MaterialSection
3
1
  from .compositesection import CompositeSection as CompositeSection
4
2
  from .cripplingsection import CripplingSection as CripplingSection
5
- from .thinwalledsection import ThinWalledSection as ThinWalledSection
3
+ from .generalsection import GeneralSection as GeneralSection
4
+ from .hollowsection import Hole as Hole
5
+ from .hollowsection import HollowSection as HollowSection
6
6
  from .material import Material as Material
7
+ from .materialsection import MaterialSection as MaterialSection
8
+ from .mould import Mould as Mould
9
+ from .numericalsection import NumericalSection as NumericalSection
10
+ from .thinwalledsection import ThinWalledSection as ThinWalledSection