compas-timber 2.0.0.dev0__tar.gz → 2.1.1__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 (93) hide show
  1. {compas_timber-2.0.0.dev0/src/compas_timber.egg-info → compas_timber-2.1.1}/PKG-INFO +6 -8
  2. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/pyproject.toml +10 -8
  3. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/__init__.py +1 -1
  4. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/base.py +20 -5
  5. compas_timber-2.1.1/src/compas_timber/btlx/__init__.py +5 -0
  6. compas_timber-2.1.1/src/compas_timber/btlx/reader.py +554 -0
  7. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/__init__.py +15 -17
  8. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/ball_node.py +1 -9
  9. compas_timber-2.1.1/src/compas_timber/connections/butt_joint.py +234 -0
  10. compas_timber-2.1.1/src/compas_timber/connections/cluster.py +129 -0
  11. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/joint.py +117 -11
  12. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/joint_candidate.py +5 -34
  13. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/l_butt.py +34 -18
  14. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/l_french_ridge_lap.py +1 -0
  15. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/l_lap.py +2 -12
  16. compas_timber-2.1.1/src/compas_timber/connections/l_miter.py +282 -0
  17. compas_timber-2.1.1/src/compas_timber/connections/l_tenon_mortise.py +143 -0
  18. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/lap_joint.py +11 -17
  19. compas_timber-2.0.0.dev0/src/compas_timber/connections/t_tenon_mortise.py → compas_timber-2.1.1/src/compas_timber/connections/mortise_tenon.py +55 -112
  20. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/oligina.py +41 -6
  21. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/plate_butt_joint.py +0 -10
  22. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/plate_joint.py +21 -22
  23. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/solver.py +4 -6
  24. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/t_birdsmouth.py +8 -15
  25. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/t_butt.py +21 -7
  26. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/t_dovetail.py +53 -64
  27. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/t_lap.py +1 -8
  28. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/t_step_joint.py +67 -51
  29. compas_timber-2.1.1/src/compas_timber/connections/t_tenon_mortise.py +109 -0
  30. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/utilities.py +34 -0
  31. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/x_lap.py +0 -10
  32. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/x_notch.py +12 -24
  33. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/y_butt.py +20 -19
  34. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/beam.py +29 -5
  35. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/fastener.py +13 -5
  36. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/fasteners/ball_node_fastener.py +9 -4
  37. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/fasteners/plate_fastener.py +14 -11
  38. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/features.py +2 -2
  39. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/panel.py +212 -88
  40. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/plate.py +76 -51
  41. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/plate_geometry.py +98 -71
  42. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/errors.py +34 -1
  43. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/btlx.py +193 -24
  44. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/double_cut.py +10 -40
  45. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/dovetail_mortise.py +19 -49
  46. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/dovetail_tenon.py +27 -50
  47. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/drilling.py +12 -25
  48. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/free_contour.py +122 -30
  49. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/french_ridge_lap.py +9 -38
  50. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/jack_cut.py +9 -38
  51. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/lap.py +17 -52
  52. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/longitudinal_cut.py +14 -56
  53. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/mortise.py +16 -50
  54. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/pocket.py +43 -66
  55. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/slot.py +16 -47
  56. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/step_joint.py +12 -42
  57. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/step_joint_notch.py +16 -46
  58. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/tenon.py +18 -48
  59. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/text.py +15 -27
  60. compas_timber-2.1.1/src/compas_timber/geometry.py +157 -0
  61. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/model.py +246 -44
  62. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/panel_features/__init__.py +4 -0
  63. compas_timber-2.1.1/src/compas_timber/panel_features/opening.py +149 -0
  64. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/panel_features/panel_connection_interface.py +4 -0
  65. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/panel_features/panel_features.py +14 -7
  66. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/rhino/__init__.py +2 -2
  67. compas_timber-2.1.1/src/compas_timber/structural.py +529 -0
  68. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/utils/__init__.py +273 -10
  69. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1/src/compas_timber.egg-info}/PKG-INFO +6 -8
  70. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber.egg-info/SOURCES.txt +7 -1
  71. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber.egg-info/requires.txt +4 -6
  72. compas_timber-2.0.0.dev0/src/compas_timber/connections/analyzers.py +0 -244
  73. compas_timber-2.0.0.dev0/src/compas_timber/connections/butt_joint.py +0 -277
  74. compas_timber-2.0.0.dev0/src/compas_timber/connections/l_miter.py +0 -181
  75. compas_timber-2.0.0.dev0/src/compas_timber/structural.py +0 -115
  76. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/LICENSE +0 -0
  77. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/README.md +0 -0
  78. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/setup.cfg +0 -0
  79. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/panel_butt_joint.py +0 -0
  80. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/panel_joint.py +0 -0
  81. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/panel_miter_joint.py +0 -0
  82. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/connections/plate_miter_joint.py +0 -0
  83. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/__init__.py +0 -0
  84. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/elements/fasteners/__init__.py +0 -0
  85. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/fabrication/__init__.py +0 -0
  86. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/planning/__init__.py +0 -0
  87. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/planning/nesting.py +0 -0
  88. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/planning/sequencer.py +0 -0
  89. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/rhino/install.py +0 -0
  90. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber/utils/r_tree.py +0 -0
  91. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber.egg-info/dependency_links.txt +0 -0
  92. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber.egg-info/not-zip-safe +0 -0
  93. {compas_timber-2.0.0.dev0 → compas_timber-2.1.1}/src/compas_timber.egg-info/top_level.txt +0 -0
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: compas_timber
3
- Version: 2.0.0.dev0
3
+ Version: 2.1.1
4
4
  Summary: COMPAS package for modeling, designing and fabricating timber assemblies.
5
- Author-email: Aleksandra Anna Apolinarska <apolinarska@arch.ethz.ch>, Chen Kasirer <kasirer@arch.ethz.ch>, Gonzalo Casas <casas@arch.ethz.ch>, Jonas Haldemann <haldemann@arch.ethz.ch>, Oliver Appling Bucklin <bucklin@arch.ethz.ch>, "Aurèle L. Gheyselinck" <gheyselinck@arch.ethz.ch>, Panayiotis Papacharalambous <papacharalambous@arch.ethz.ch>, Anastasiia Stryzhevska <astryzhevska@arch.ethz.ch>, Jelle Feringa <jelleferinga@gmail.com>, Joseph Kenny <jk6372@princeton.edu>, Beverly Lytle <lytle@arch.ethz.ch>, Eric Gozzi <eric.gozzi@arch.ethz.ch>, Rodrigo Arca Zimmermann <rodrigo.arca@gmail.com>
5
+ Author-email: Aleksandra Anna Apolinarska <apolinarska@arch.ethz.ch>, Chen Kasirer <kasirer@arch.ethz.ch>, Gonzalo Casas <casas@arch.ethz.ch>, Jonas Haldemann <haldemann@arch.ethz.ch>, Oliver Appling Bucklin <bucklin@arch.ethz.ch>, "Aurèle L. Gheyselinck" <gheyselinck@arch.ethz.ch>, Panayiotis Papacharalambous <papacharalambous@arch.ethz.ch>, Anastasiia Stryzhevska <astryzhevska@arch.ethz.ch>, Jelle Feringa <jelleferinga@gmail.com>, Joseph Kenny <jk6372@princeton.edu>, Beverly Lytle <lytle@arch.ethz.ch>, Eric Gozzi <eric.gozzi@arch.ethz.ch>, Rodrigo Arca Zimmermann <rodrigo.arca@gmail.com>, Nicolas Benjamin Boscoboinik <boscoboinik@arch.ethz.ch>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://gramaziokohler.github.io/compas_timber/latest/
8
8
  Project-URL: Repository, https://github.com/gramaziokohler/compas_timber
@@ -17,22 +17,20 @@ Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
19
  Requires-Dist: rtree
20
- Requires-Dist: compas<3.0,>=2.0
21
- Requires-Dist: compas_model==0.9.1
20
+ Requires-Dist: compas<3.0,>=2.15.1
21
+ Requires-Dist: compas_model==0.9.2
22
+ Requires-Dist: scipy>=1.1
22
23
  Provides-Extra: dev
23
24
  Requires-Dist: bump-my-version; extra == "dev"
24
- Requires-Dist: compas_invocations2; extra == "dev"
25
+ Requires-Dist: compas_invocations2[mkdocs]>=1.0.2; extra == "dev"
25
26
  Requires-Dist: invoke>=0.14; extra == "dev"
26
27
  Requires-Dist: ruff; extra == "dev"
27
- Requires-Dist: sphinx_compas2_theme; extra == "dev"
28
- Requires-Dist: sphinxcontrib-mermaid; extra == "dev"
29
28
  Requires-Dist: twine; extra == "dev"
30
29
  Requires-Dist: wheel; extra == "dev"
31
30
  Requires-Dist: pytest-mock; extra == "dev"
32
31
  Requires-Dist: pytest>=8.0; extra == "dev"
33
32
  Requires-Dist: build; extra == "dev"
34
33
  Requires-Dist: tomlkit; extra == "dev"
35
- Requires-Dist: compas_viewer; extra == "dev"
36
34
  Requires-Dist: pytest-cov; extra == "dev"
37
35
  Requires-Dist: pytest-randomly; extra == "dev"
38
36
  Requires-Dist: pre-commit; extra == "dev"
@@ -18,7 +18,8 @@ authors = [
18
18
  { name = "Joseph Kenny", email = "jk6372@princeton.edu" },
19
19
  { name = "Beverly Lytle", email = "lytle@arch.ethz.ch" },
20
20
  { name = "Eric Gozzi", email = "eric.gozzi@arch.ethz.ch" },
21
- { name = "Rodrigo Arca Zimmermann", email = "rodrigo.arca@gmail.com" }
21
+ { name = "Rodrigo Arca Zimmermann", email = "rodrigo.arca@gmail.com" },
22
+ { name = "Nicolas Benjamin Boscoboinik", email = "boscoboinik@arch.ethz.ch" }
22
23
  ]
23
24
  license = "MIT"
24
25
  readme = "README.md"
@@ -36,25 +37,23 @@ classifiers = [
36
37
 
37
38
  dependencies = [
38
39
  "rtree",
39
- "compas >=2.0, <3.0",
40
- "compas_model == 0.9.1", # pin until first release
40
+ "compas >=2.15.1, <3.0",
41
+ "compas_model == 0.9.2", # pin until first release
42
+ "scipy >= 1.1"
41
43
  ]
42
44
 
43
45
  [project.optional-dependencies]
44
46
  dev = [
45
47
  "bump-my-version",
46
- "compas_invocations2",
48
+ "compas_invocations2[mkdocs]>=1.0.2",
47
49
  "invoke >=0.14",
48
50
  "ruff",
49
- "sphinx_compas2_theme",
50
- "sphinxcontrib-mermaid",
51
51
  "twine",
52
52
  "wheel",
53
53
  "pytest-mock",
54
54
  "pytest>=8.0",
55
55
  "build",
56
56
  "tomlkit",
57
- "compas_viewer",
58
57
  "pytest-cov",
59
58
  "pytest-randomly",
60
59
  "pre-commit",
@@ -73,6 +72,9 @@ Repository = "https://github.com/gramaziokohler/compas_timber"
73
72
  # ============================================================================
74
73
  # Setup and build
75
74
  # ============================================================================
75
+ [build-system]
76
+ requires = ["setuptools>=68", "wheel"]
77
+ build-backend = "setuptools.build_meta"
76
78
 
77
79
  [tool.setuptools]
78
80
  package-dir = { "" = "src" }
@@ -94,7 +96,7 @@ where = ["src"]
94
96
  # ============================================================================
95
97
 
96
98
  [tool.bumpversion]
97
- current_version = "2.0.0-dev0"
99
+ current_version = "2.1.1"
98
100
  message = "Bump version to {new_version}"
99
101
  commit = true
100
102
  tag = true
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import compas
3
3
 
4
- __version__ = "2.0.0-dev0"
4
+ __version__ = "2.1.1"
5
5
 
6
6
  HERE = os.path.dirname(__file__)
7
7
  HOME = os.path.abspath(os.path.join(HERE, "..", ".."))
@@ -95,6 +95,21 @@ class TimberElement(Element, abc.ABC):
95
95
  """Reset all computed/cached properties."""
96
96
  self._reset_computed_dummy()
97
97
 
98
+ def clear_model_dependent_cache(self):
99
+ """Clear cached attributes that depend on the element's position in the model hierarchy.
100
+
101
+ Preserves model-independent caches such as ``_elementgeometry``, features,
102
+ and blank extensions.
103
+ """
104
+ self._modeltransformation = None
105
+ self._modelgeometry = None
106
+ self._aabb = None
107
+ self._obb = None
108
+ self._collision_mesh = None
109
+ self._blank = None
110
+ self._ref_frame = None
111
+ self._geometry = None
112
+
98
113
  @property
99
114
  def is_beam(self):
100
115
  return False
@@ -201,7 +216,7 @@ class TimberElement(Element, abc.ABC):
201
216
 
202
217
  Parameters
203
218
  ----------
204
- feature : :class:`~compas_timber.fabrication.BTLxProcessing` | list(:class:`~compas_timber.fabrication.BTLxProcessing`) | None
219
+ features : :class:`~compas_timber.fabrication.BTLxProcessing` | list(:class:`~compas_timber.fabrication.BTLxProcessing`) | None
205
220
  The feature or features to be removed described as a BTLxProcessing or a list of BTLxProcessings.
206
221
  If None, all features will be removed.
207
222
 
@@ -351,7 +366,7 @@ class TimberElement(Element, abc.ABC):
351
366
 
352
367
  def get_dimensions_relative_to_side(self, ref_side_index):
353
368
  # type: (int) -> tuple[float, float]
354
- """Returns the perpendicular and parallel dimensions of the beam to the given reference side.
369
+ """Returns the dimensions of a timber element with respect to the Y- axis and Normal of the given reference side.
355
370
 
356
371
  Parameters
357
372
  ----------
@@ -361,9 +376,9 @@ class TimberElement(Element, abc.ABC):
361
376
  Returns
362
377
  -------
363
378
  tuple(float, float)
364
- The perpendicular and parallel dimensions of the beam to the reference side.
365
- - Perpendicular dimension: The measurement normal to the reference side.
366
- - Parallel dimension: The measurement along y-axis of reference side.
379
+ Y-axis dimension, Normal direction dimension.
380
+ - Y-axis dimension: The element dimension along y-axis of reference side.
381
+ - Normal dimension: The element dimension normal to the reference side.
367
382
  """
368
383
  if ref_side_index in [1, 3]:
369
384
  return self.height, self.width
@@ -0,0 +1,5 @@
1
+ from .reader import BTLxReader
2
+
3
+ __all__ = [
4
+ "BTLxReader",
5
+ ]