compas-timber 2.1.0.dev0__tar.gz → 2.1.1.dev0__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.
- {compas_timber-2.1.0.dev0/src/compas_timber.egg-info → compas_timber-2.1.1.dev0}/PKG-INFO +2 -19
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/pyproject.toml +2 -21
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/__init__.py +1 -1
- {compas_timber-2.1.0.dev0/src/compas_timber/connections → compas_timber-2.1.1.dev0/src/compas_timber}/analyzers.py +2 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/__init__.py +0 -14
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/joint.py +44 -5
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/joint_candidate.py +2 -2
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/plate_joint.py +13 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/free_contour.py +1 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0/src/compas_timber.egg-info}/PKG-INFO +2 -19
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/SOURCES.txt +1 -1
- compas_timber-2.1.1.dev0/src/compas_timber.egg-info/requires.txt +24 -0
- compas_timber-2.1.0.dev0/src/compas_timber.egg-info/requires.txt +0 -44
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/LICENSE +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/README.md +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/setup.cfg +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/base.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/ball_node.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/butt_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_butt.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_french_ridge_lap.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_lap.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_miter.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_tenon_mortise.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/lap_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/mortise_tenon.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/oligina.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/panel_butt_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/panel_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/panel_miter_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/plate_butt_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/plate_miter_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/solver.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_birdsmouth.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_butt.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_dovetail.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_lap.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_step_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_tenon_mortise.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/utilities.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/x_lap.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/x_notch.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/y_butt.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/beam.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/fastener.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/fasteners/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/fasteners/ball_node_fastener.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/fasteners/plate_fastener.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/features.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/panel.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/plate.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/plate_geometry.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/errors.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/btlx.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/double_cut.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/dovetail_mortise.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/dovetail_tenon.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/drilling.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/french_ridge_lap.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/jack_cut.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/lap.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/longitudinal_cut.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/mortise.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/pocket.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/slot.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/step_joint.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/step_joint_notch.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/tenon.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/text.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/geometry.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/model.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/panel_features/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/panel_features/panel_connection_interface.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/panel_features/panel_features.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/planning/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/planning/nesting.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/planning/sequencer.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/rhino/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/rhino/install.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/structural.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/utils/__init__.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/utils/r_tree.py +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/dependency_links.txt +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/not-zip-safe +0 -0
- {compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: compas_timber
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1.dev0
|
|
4
4
|
Summary: COMPAS package for modeling, designing and fabricating timber assemblies.
|
|
5
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
|
|
@@ -22,7 +22,7 @@ Requires-Dist: compas_model==0.9.1
|
|
|
22
22
|
Requires-Dist: scipy>=1.1
|
|
23
23
|
Provides-Extra: dev
|
|
24
24
|
Requires-Dist: bump-my-version; extra == "dev"
|
|
25
|
-
Requires-Dist: compas_invocations2; extra == "dev"
|
|
25
|
+
Requires-Dist: compas_invocations2[mkdocs]>=1.0.2; extra == "dev"
|
|
26
26
|
Requires-Dist: invoke>=0.14; extra == "dev"
|
|
27
27
|
Requires-Dist: ruff; extra == "dev"
|
|
28
28
|
Requires-Dist: twine; extra == "dev"
|
|
@@ -38,23 +38,6 @@ Provides-Extra: gh
|
|
|
38
38
|
Requires-Dist: compas_invocations2; extra == "gh"
|
|
39
39
|
Requires-Dist: tomlkit; extra == "gh"
|
|
40
40
|
Requires-Dist: pythonnet; extra == "gh"
|
|
41
|
-
Provides-Extra: docs
|
|
42
|
-
Requires-Dist: markdown-callouts>=0.4; extra == "docs"
|
|
43
|
-
Requires-Dist: markdown-exec>=1.8; extra == "docs"
|
|
44
|
-
Requires-Dist: mike; extra == "docs"
|
|
45
|
-
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
46
|
-
Requires-Dist: mkdocs-autorefs>=1.4; extra == "docs"
|
|
47
|
-
Requires-Dist: mkdocs-coverage>=1.0; extra == "docs"
|
|
48
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2; extra == "docs"
|
|
49
|
-
Requires-Dist: mkdocs-llmstxt>=0.2; extra == "docs"
|
|
50
|
-
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
51
|
-
Requires-Dist: mkdocs-minify-plugin>=0.8; extra == "docs"
|
|
52
|
-
Requires-Dist: mkdocs-redirects>=1.2; extra == "docs"
|
|
53
|
-
Requires-Dist: mkdocs-section-index>=0.3; extra == "docs"
|
|
54
|
-
Requires-Dist: mkdocs-mermaid2-plugin; extra == "docs"
|
|
55
|
-
Requires-Dist: mkdocstrings[python]; extra == "docs"
|
|
56
|
-
Requires-Dist: pydantic>=2.10; extra == "docs"
|
|
57
|
-
Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "docs"
|
|
58
41
|
Dynamic: license-file
|
|
59
42
|
|
|
60
43
|
<h1>
|
|
@@ -45,7 +45,7 @@ dependencies = [
|
|
|
45
45
|
[project.optional-dependencies]
|
|
46
46
|
dev = [
|
|
47
47
|
"bump-my-version",
|
|
48
|
-
"compas_invocations2",
|
|
48
|
+
"compas_invocations2[mkdocs]>=1.0.2",
|
|
49
49
|
"invoke >=0.14",
|
|
50
50
|
"ruff",
|
|
51
51
|
"twine",
|
|
@@ -65,25 +65,6 @@ gh = [
|
|
|
65
65
|
"pythonnet",
|
|
66
66
|
]
|
|
67
67
|
|
|
68
|
-
docs = [
|
|
69
|
-
"markdown-callouts >=0.4",
|
|
70
|
-
"markdown-exec >=1.8",
|
|
71
|
-
"mike",
|
|
72
|
-
"mkdocs >=1.6",
|
|
73
|
-
"mkdocs-autorefs >=1.4",
|
|
74
|
-
"mkdocs-coverage >=1.0",
|
|
75
|
-
"mkdocs-git-revision-date-localized-plugin >=1.2",
|
|
76
|
-
"mkdocs-llmstxt >=0.2",
|
|
77
|
-
"mkdocs-material >=9.5",
|
|
78
|
-
"mkdocs-minify-plugin >=0.8",
|
|
79
|
-
"mkdocs-redirects >=1.2",
|
|
80
|
-
"mkdocs-section-index >=0.3",
|
|
81
|
-
"mkdocs-mermaid2-plugin",
|
|
82
|
-
"mkdocstrings[python]",
|
|
83
|
-
"pydantic >=2.10",
|
|
84
|
-
"tomli >=2.0; python_version < '3.11'",
|
|
85
|
-
]
|
|
86
|
-
|
|
87
68
|
[project.urls]
|
|
88
69
|
Homepage = "https://gramaziokohler.github.io/compas_timber/latest/"
|
|
89
70
|
Repository = "https://github.com/gramaziokohler/compas_timber"
|
|
@@ -115,7 +96,7 @@ where = ["src"]
|
|
|
115
96
|
# ============================================================================
|
|
116
97
|
|
|
117
98
|
[tool.bumpversion]
|
|
118
|
-
current_version = "2.1.
|
|
99
|
+
current_version = "2.1.1-dev0"
|
|
119
100
|
message = "Bump version to {new_version}"
|
|
120
101
|
commit = true
|
|
121
102
|
tag = true
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/__init__.py
RENAMED
|
@@ -36,13 +36,6 @@ from .plate_miter_joint import PlateMiterJoint
|
|
|
36
36
|
from .panel_butt_joint import PanelLButtJoint
|
|
37
37
|
from .panel_butt_joint import PanelTButtJoint
|
|
38
38
|
from .panel_miter_joint import PanelMiterJoint
|
|
39
|
-
from .analyzers import NBeamKDTreeAnalyzer
|
|
40
|
-
from .analyzers import TripletAnalyzer
|
|
41
|
-
from .analyzers import QuadAnalyzer
|
|
42
|
-
from .analyzers import CompositeAnalyzer
|
|
43
|
-
from .analyzers import Cluster
|
|
44
|
-
from .analyzers import BeamGroupAnalyzer
|
|
45
|
-
from .analyzers import MaxNCompositeAnalyzer
|
|
46
39
|
|
|
47
40
|
__all__ = [
|
|
48
41
|
"Joint",
|
|
@@ -84,11 +77,4 @@ __all__ = [
|
|
|
84
77
|
"PanelLButtJoint",
|
|
85
78
|
"PanelTButtJoint",
|
|
86
79
|
"PanelMiterJoint",
|
|
87
|
-
"NBeamKDTreeAnalyzer",
|
|
88
|
-
"TripletAnalyzer",
|
|
89
|
-
"QuadAnalyzer",
|
|
90
|
-
"CompositeAnalyzer",
|
|
91
|
-
"Cluster",
|
|
92
|
-
"BeamGroupAnalyzer",
|
|
93
|
-
"MaxNCompositeAnalyzer",
|
|
94
80
|
]
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/joint.py
RENAMED
|
@@ -3,12 +3,43 @@ from itertools import combinations
|
|
|
3
3
|
from compas.data import Data
|
|
4
4
|
from compas.geometry import Point
|
|
5
5
|
from compas.geometry import distance_point_line
|
|
6
|
+
from compas.tolerance import TOL
|
|
6
7
|
|
|
7
8
|
from compas_timber.errors import BeamJoiningError
|
|
9
|
+
from compas_timber.utils import distance_segment_segment_points
|
|
8
10
|
|
|
9
11
|
from .solver import JointTopology
|
|
10
12
|
|
|
11
13
|
|
|
14
|
+
def location_from_centerlines(beams):
|
|
15
|
+
"""Compute the approximate joint location from two beam centerlines.
|
|
16
|
+
|
|
17
|
+
Returns the closest point between the two centerlines, or the midpoint
|
|
18
|
+
between them when the beams are skew (non-intersecting).
|
|
19
|
+
|
|
20
|
+
Parameters
|
|
21
|
+
----------
|
|
22
|
+
beams : list(:class:`~compas_timber.elements.Beam`)
|
|
23
|
+
A list of two beams for which to calculate the joint location.
|
|
24
|
+
|
|
25
|
+
Returns
|
|
26
|
+
-------
|
|
27
|
+
:class:`~compas.geometry.Point`
|
|
28
|
+
|
|
29
|
+
"""
|
|
30
|
+
if len(beams) != 2:
|
|
31
|
+
raise ValueError(
|
|
32
|
+
"Automatic location calculation only works for joints connecting 2 elements. "
|
|
33
|
+
"Please set the location manually or implement a custom location calculation for your joint type."
|
|
34
|
+
)
|
|
35
|
+
beam_a, beam_b = beams
|
|
36
|
+
distance, point_a, point_b = distance_segment_segment_points(beam_a.centerline, beam_b.centerline)
|
|
37
|
+
point_a, point_b = Point(*point_a), Point(*point_b)
|
|
38
|
+
if not TOL.is_zero(distance):
|
|
39
|
+
return (point_a + point_b) / 2.0
|
|
40
|
+
return point_a
|
|
41
|
+
|
|
42
|
+
|
|
12
43
|
class Joint(Data):
|
|
13
44
|
"""Base class for a joint connecting two beams.
|
|
14
45
|
|
|
@@ -48,13 +79,16 @@ class Joint(Data):
|
|
|
48
79
|
|
|
49
80
|
def __init__(self, topology=None, location=None, name=None, **kwargs):
|
|
50
81
|
super().__init__(name=name)
|
|
51
|
-
self._topology =
|
|
52
|
-
self._location =
|
|
82
|
+
self._topology = None
|
|
83
|
+
self._location = None
|
|
84
|
+
self.topology = topology
|
|
85
|
+
if location:
|
|
86
|
+
self.location = location
|
|
53
87
|
|
|
54
88
|
@property
|
|
55
89
|
def __data__(self):
|
|
56
90
|
# type: () -> dict
|
|
57
|
-
return {"name": self.name}
|
|
91
|
+
return {"name": self.name, "topology": self.topology, "location": self._location}
|
|
58
92
|
|
|
59
93
|
def __repr__(self):
|
|
60
94
|
return '{}(name="{}")'.format(self.__class__.__name__, self.name)
|
|
@@ -65,11 +99,16 @@ class Joint(Data):
|
|
|
65
99
|
|
|
66
100
|
@topology.setter
|
|
67
101
|
def topology(self, value):
|
|
68
|
-
|
|
69
|
-
self._topology = value
|
|
102
|
+
self._topology = value or JointTopology.TOPO_UNKNOWN
|
|
70
103
|
|
|
71
104
|
@property
|
|
72
105
|
def location(self):
|
|
106
|
+
if self._location is None and all(self.elements):
|
|
107
|
+
self._location = location_from_centerlines(self.elements)
|
|
108
|
+
|
|
109
|
+
if self._location is None:
|
|
110
|
+
raise ValueError("Location of the joint could not be determined. Please set it manually.")
|
|
111
|
+
|
|
73
112
|
return self._location
|
|
74
113
|
|
|
75
114
|
@location.setter
|
|
@@ -5,7 +5,7 @@ from .plate_joint import PlateJoint
|
|
|
5
5
|
class JointCandidate(Joint):
|
|
6
6
|
"""A JointCandidate is an information-only joint, which does not add any features to the elements it connects.
|
|
7
7
|
|
|
8
|
-
It is used to create a first-pass joinery information which can be later used to perform analysis using :class:`~compas_timber.
|
|
8
|
+
It is used to create a first-pass joinery information which can be later used to perform analysis using :class:`~compas_timber.analyzers.BeamGroupAnalyzer`.
|
|
9
9
|
|
|
10
10
|
Please use `JointCandidate.create()` to properly create an instance of this class and associate it with an model.
|
|
11
11
|
|
|
@@ -70,7 +70,7 @@ class JointCandidate(Joint):
|
|
|
70
70
|
class PlateJointCandidate(PlateJoint, JointCandidate):
|
|
71
71
|
"""A PlateJointCandidate is an information-only joint for plate connections.
|
|
72
72
|
|
|
73
|
-
It is used to create a first-pass joinery information which can be later used to perform analysis using :class:`~compas_timber.
|
|
73
|
+
It is used to create a first-pass joinery information which can be later used to perform analysis using :class:`~compas_timber.analyzers.BeamGroupAnalyzer`.
|
|
74
74
|
|
|
75
75
|
Parameters
|
|
76
76
|
----------
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/plate_joint.py
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from abc import ABC
|
|
2
2
|
from abc import abstractmethod
|
|
3
3
|
|
|
4
|
+
from compas.geometry import Point
|
|
4
5
|
from compas.geometry import dot_vectors
|
|
5
6
|
|
|
6
7
|
from compas_timber.errors import BeamJoiningError
|
|
@@ -26,6 +27,8 @@ class PlateJoint(Joint, ABC):
|
|
|
26
27
|
The index of the segment in plate_a's outline where the plates are connected.
|
|
27
28
|
b_segment_index : int
|
|
28
29
|
The index of the segment in plate_b's outline where the plates are connected.
|
|
30
|
+
location : :class:`compas.geometry.Point`, optional
|
|
31
|
+
The location of the joint. If not provided, defaults to the origin.
|
|
29
32
|
**kwargs : dict, optional
|
|
30
33
|
Additional keyword arguments to pass to the parent class.
|
|
31
34
|
|
|
@@ -101,6 +104,16 @@ class PlateJoint(Joint, ABC):
|
|
|
101
104
|
return (self.plate_b.outlines[1], self.plate_b.outlines[0])
|
|
102
105
|
return (self.plate_b.outlines[0], self.plate_b.outlines[1])
|
|
103
106
|
|
|
107
|
+
@property
|
|
108
|
+
def location(self):
|
|
109
|
+
if self._location is None:
|
|
110
|
+
self._location = Point(0, 0, 0)
|
|
111
|
+
return self._location
|
|
112
|
+
|
|
113
|
+
@location.setter
|
|
114
|
+
def location(self, value):
|
|
115
|
+
self._location = value
|
|
116
|
+
|
|
104
117
|
def calculate_topology(self, allow_reordering=False):
|
|
105
118
|
"""Calculate the topology of the joint based on the plates."""
|
|
106
119
|
topo_results = PlateConnectionSolver().find_topology(self.plate_a, self.plate_b)
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/free_contour.py
RENAMED
|
@@ -47,6 +47,7 @@ class FreeContour(BTLxProcessing):
|
|
|
47
47
|
|
|
48
48
|
def __init__(self, contour_param_object, tool_id=0, counter_sink=False, tool_position=AlignmentType.LEFT, depth_bounded=True, **kwargs):
|
|
49
49
|
super(FreeContour, self).__init__(tool_id=tool_id, counter_sink=counter_sink, tool_position=tool_position, **kwargs)
|
|
50
|
+
self._process_id = 1
|
|
50
51
|
self.contour_param_object = contour_param_object
|
|
51
52
|
self.depth_bounded = depth_bounded
|
|
52
53
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: compas_timber
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1.dev0
|
|
4
4
|
Summary: COMPAS package for modeling, designing and fabricating timber assemblies.
|
|
5
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
|
|
@@ -22,7 +22,7 @@ Requires-Dist: compas_model==0.9.1
|
|
|
22
22
|
Requires-Dist: scipy>=1.1
|
|
23
23
|
Provides-Extra: dev
|
|
24
24
|
Requires-Dist: bump-my-version; extra == "dev"
|
|
25
|
-
Requires-Dist: compas_invocations2; extra == "dev"
|
|
25
|
+
Requires-Dist: compas_invocations2[mkdocs]>=1.0.2; extra == "dev"
|
|
26
26
|
Requires-Dist: invoke>=0.14; extra == "dev"
|
|
27
27
|
Requires-Dist: ruff; extra == "dev"
|
|
28
28
|
Requires-Dist: twine; extra == "dev"
|
|
@@ -38,23 +38,6 @@ Provides-Extra: gh
|
|
|
38
38
|
Requires-Dist: compas_invocations2; extra == "gh"
|
|
39
39
|
Requires-Dist: tomlkit; extra == "gh"
|
|
40
40
|
Requires-Dist: pythonnet; extra == "gh"
|
|
41
|
-
Provides-Extra: docs
|
|
42
|
-
Requires-Dist: markdown-callouts>=0.4; extra == "docs"
|
|
43
|
-
Requires-Dist: markdown-exec>=1.8; extra == "docs"
|
|
44
|
-
Requires-Dist: mike; extra == "docs"
|
|
45
|
-
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
46
|
-
Requires-Dist: mkdocs-autorefs>=1.4; extra == "docs"
|
|
47
|
-
Requires-Dist: mkdocs-coverage>=1.0; extra == "docs"
|
|
48
|
-
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2; extra == "docs"
|
|
49
|
-
Requires-Dist: mkdocs-llmstxt>=0.2; extra == "docs"
|
|
50
|
-
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
51
|
-
Requires-Dist: mkdocs-minify-plugin>=0.8; extra == "docs"
|
|
52
|
-
Requires-Dist: mkdocs-redirects>=1.2; extra == "docs"
|
|
53
|
-
Requires-Dist: mkdocs-section-index>=0.3; extra == "docs"
|
|
54
|
-
Requires-Dist: mkdocs-mermaid2-plugin; extra == "docs"
|
|
55
|
-
Requires-Dist: mkdocstrings[python]; extra == "docs"
|
|
56
|
-
Requires-Dist: pydantic>=2.10; extra == "docs"
|
|
57
|
-
Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "docs"
|
|
58
41
|
Dynamic: license-file
|
|
59
42
|
|
|
60
43
|
<h1>
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/SOURCES.txt
RENAMED
|
@@ -2,6 +2,7 @@ LICENSE
|
|
|
2
2
|
README.md
|
|
3
3
|
pyproject.toml
|
|
4
4
|
src/compas_timber/__init__.py
|
|
5
|
+
src/compas_timber/analyzers.py
|
|
5
6
|
src/compas_timber/base.py
|
|
6
7
|
src/compas_timber/errors.py
|
|
7
8
|
src/compas_timber/geometry.py
|
|
@@ -14,7 +15,6 @@ src/compas_timber.egg-info/not-zip-safe
|
|
|
14
15
|
src/compas_timber.egg-info/requires.txt
|
|
15
16
|
src/compas_timber.egg-info/top_level.txt
|
|
16
17
|
src/compas_timber/connections/__init__.py
|
|
17
|
-
src/compas_timber/connections/analyzers.py
|
|
18
18
|
src/compas_timber/connections/ball_node.py
|
|
19
19
|
src/compas_timber/connections/butt_joint.py
|
|
20
20
|
src/compas_timber/connections/joint.py
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
rtree
|
|
2
|
+
compas<3.0,>=2.0
|
|
3
|
+
compas_model==0.9.1
|
|
4
|
+
scipy>=1.1
|
|
5
|
+
|
|
6
|
+
[dev]
|
|
7
|
+
bump-my-version
|
|
8
|
+
compas_invocations2[mkdocs]>=1.0.2
|
|
9
|
+
invoke>=0.14
|
|
10
|
+
ruff
|
|
11
|
+
twine
|
|
12
|
+
wheel
|
|
13
|
+
pytest-mock
|
|
14
|
+
pytest>=8.0
|
|
15
|
+
build
|
|
16
|
+
tomlkit
|
|
17
|
+
pytest-cov
|
|
18
|
+
pytest-randomly
|
|
19
|
+
pre-commit
|
|
20
|
+
|
|
21
|
+
[gh]
|
|
22
|
+
compas_invocations2
|
|
23
|
+
tomlkit
|
|
24
|
+
pythonnet
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
rtree
|
|
2
|
-
compas<3.0,>=2.0
|
|
3
|
-
compas_model==0.9.1
|
|
4
|
-
scipy>=1.1
|
|
5
|
-
|
|
6
|
-
[dev]
|
|
7
|
-
bump-my-version
|
|
8
|
-
compas_invocations2
|
|
9
|
-
invoke>=0.14
|
|
10
|
-
ruff
|
|
11
|
-
twine
|
|
12
|
-
wheel
|
|
13
|
-
pytest-mock
|
|
14
|
-
pytest>=8.0
|
|
15
|
-
build
|
|
16
|
-
tomlkit
|
|
17
|
-
pytest-cov
|
|
18
|
-
pytest-randomly
|
|
19
|
-
pre-commit
|
|
20
|
-
|
|
21
|
-
[docs]
|
|
22
|
-
markdown-callouts>=0.4
|
|
23
|
-
markdown-exec>=1.8
|
|
24
|
-
mike
|
|
25
|
-
mkdocs>=1.6
|
|
26
|
-
mkdocs-autorefs>=1.4
|
|
27
|
-
mkdocs-coverage>=1.0
|
|
28
|
-
mkdocs-git-revision-date-localized-plugin>=1.2
|
|
29
|
-
mkdocs-llmstxt>=0.2
|
|
30
|
-
mkdocs-material>=9.5
|
|
31
|
-
mkdocs-minify-plugin>=0.8
|
|
32
|
-
mkdocs-redirects>=1.2
|
|
33
|
-
mkdocs-section-index>=0.3
|
|
34
|
-
mkdocs-mermaid2-plugin
|
|
35
|
-
mkdocstrings[python]
|
|
36
|
-
pydantic>=2.10
|
|
37
|
-
|
|
38
|
-
[docs:python_version < "3.11"]
|
|
39
|
-
tomli>=2.0
|
|
40
|
-
|
|
41
|
-
[gh]
|
|
42
|
-
compas_invocations2
|
|
43
|
-
tomlkit
|
|
44
|
-
pythonnet
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/ball_node.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/butt_joint.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_butt.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_lap.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/l_miter.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/lap_joint.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/mortise_tenon.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/oligina.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/panel_joint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/solver.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_birdsmouth.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_butt.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_dovetail.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_lap.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/t_step_joint.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/utilities.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/x_lap.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/x_notch.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/connections/y_butt.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/fastener.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/features.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/elements/plate_geometry.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/double_cut.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/drilling.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/jack_cut.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/mortise.py
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/pocket.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/step_joint.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/fabrication/tenon.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/panel_features/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/planning/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber/planning/sequencer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{compas_timber-2.1.0.dev0 → compas_timber-2.1.1.dev0}/src/compas_timber.egg-info/top_level.txt
RENAMED
|
File without changes
|