Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 8 additions & 19 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

* Added `Envelope` base class for masonry structure boundaries with intrados, extrados, and middle meshes
* Added especialized `MeshEnvelope`, `ParametricEnvelope`, and `BrepEnvelope` to deal with different evelope inputs.
* Added direct parametric envelope creation methods inheriting from `ParametricEnvelope` class:
* `CrossVaultEnvelope` - Creates cross vault envelopes with configurable spans and thickness
* `DomeEnvelope` - Creates dome envelopes with configurable radius, center, and oculus
* `PavillionVaultEnvelope` - Creates pavillion vault envelopes with spring angle support
* `PointedVaultEnvelope` - Creates pointed vault envelopes with height control parameters
* The infrastructure around these classes has been updated to enable assigning constraints to the form diagrams.
* Added comprehensive form diagram creation methods to `FormDiagram` class:
* `create_cross()` - Creates cross discretisation with orthogonal arrangement and quad diagonals
* `create_fan()` - Creates fan discretisation with straight lines to corners
Expand All @@ -25,30 +33,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Added corner detection functionality:
* `corner_vertices()` - Identifies corner vertices on boundary with configurable angle threshold
* Added comprehensive mesh creation functions in `diagram_rectangular.py`:
* `create_cross_mesh()` - Creates cross pattern meshes
* `create_fan_mesh()` - Creates fan pattern meshes
* `create_parametric_fan_mesh()` - Creates parametric fan meshes with lambda interpolation
* `create_cross_with_diagonal_mesh()` - Creates cross meshes with diagonals
* `create_ortho_mesh()` - Creates orthogonal grid meshes
* Added circular mesh creation functions in `diagram_circular.py`:
* `create_circular_radial_mesh()` - Creates circular radial meshes
* `create_circular_radial_spaced_mesh()` - Creates hemispherically spaced circular meshes
* `create_circular_spiral_mesh()` - Creates circular spiral meshes
* Added arch mesh creation functions in `diagram_arch.py`:
* `create_arch_linear_mesh()` - Creates arch meshes with semicircular projection
* `create_arch_linear_equally_spaced_mesh()` - Creates arch meshes with equally spaced nodes

### Changed

* Refactored parameter passing from `xy_span=[[x0, x1], [y0, y1]]` to `x_span=(x0, x1), y_span=(y0, y1)` for better API consistency
* Changed `center` parameter from list to tuple in circular diagram functions for immutability and consistency
* Updated function signatures to use single-line format for Black compatibility
* Improved code formatting and linting across all diagram generation files
* Fixed various spelling errors and documentation formatting issues
* Renamed `create_delta_form()` to `create_cross_with_diagonal()` for better clarity
* Updated support assignment to use `is_support` attribute instead of deprecated `is_fixed`
* Removed deprecated `form.parameters` usage from all form creation methods

### Removed


Expand Down
20 changes: 20 additions & 0 deletions src/compas_tna/envelope/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from .envelope import Envelope
from .brepenvelope import BrepEnvelope
from .meshenvelope import MeshEnvelope
from .parametricenvelope import ParametricEnvelope

from .crossvault import CrossVaultEnvelope
from .dome import DomeEnvelope
from .pavillionvault import PavillionVaultEnvelope
from .pointedvault import PointedVaultEnvelope

__all__ = [
"Envelope",
"BrepEnvelope",
"MeshEnvelope",
"ParametricEnvelope",
"PavillionVaultEnvelope",
"PointedVaultEnvelope",
"DomeEnvelope",
"CrossVaultEnvelope",
]
12 changes: 12 additions & 0 deletions src/compas_tna/envelope/brepenvelope.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from compas.geometry import Brep
from compas_tna.envelope import Envelope


class BrepEnvelope(Envelope):
"""An Envelope defined by a BRep at intrados, extrados, and middle."""

def __init__(self, intrados: Brep = None, extrados: Brep = None, middle: Brep = None, **kwargs):
super().__init__(**kwargs)
self.intrados = intrados
self.extrados = extrados
self.middle = middle
Loading
Loading