Skip to content

Commit

Permalink
Merge branch 'main' into slot
Browse files Browse the repository at this point in the history
  • Loading branch information
chenkasirer committed Oct 14, 2024
2 parents b8092e1 + f1eb423 commit 09b0f78
Show file tree
Hide file tree
Showing 152 changed files with 2,390 additions and 875 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.9.1
current_version = 0.11.0
message = Bump version to {new_version}
commit = True
tag = True
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,5 @@ docs/api/generated/

conda.recipe/
tests/temp/

*.btlx
80 changes: 79 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,88 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

* Added new base class for timber elements `TimberElement`.
* Added property `is_beam` to `Beam` class.
* Added property `is_plate` to `Plate` class.
* Added property `is_wall` to `Wall` class.
* Added `side_as_surface` to `compas_timber.elements.Beam`.
* Added `opposing_side_index` to `compas_timber.elements.Beam`.
* Added `Plate` element.
* Added attribute `plates` to `TimberModel`.
* Added new temporary package `_fabrication`.
* Added new `compas_timber._fabrication.JackRafterCut`.
* Added `side_as_surface` to `compas_timber.elements.Beam`.
* Added new `compas_timber._fabrication.JackRafterCutParams`.
* Added new `compas_timber._fabrication.Drilling`.
* Added new `compas_timber._fabrication.DrillingParams`.

### Changed

### Removed


## [0.11.0] 2024-09-17

### Added

* Added bake component for `Plate` elements.
* Added default paramteters for `Surface Model` in the GH Component

### Changed

* Fixed wrong image file paths in the Documentation.
* Changed `TimberModel.beams` to return generator of `Beam` elements.
* Changed `TimberModel.walls` to return generator of `Wall` elements.
* Changed `TimberModel.plates` to return generator of `Plate` elements.
* Changed `TimberModel.joints` to return generator of `Joint` elements.
* Fixed polyline analysis for generating `SurfaceModel`
* Fixed errors in debug info components.

### Removed


## [0.10.1] 2024-09-11

### Added

### Changed

* Implemented a workaround for https://github.com/gramaziokohler/compas_timber/issues/280.

### Removed


## [0.10.0] 2024-09-11

### Added

* Added `SurfaceModelJointOverride` GH Component.
* Added `Plate` element.
* Added attribute `plates` to `TimberModel`.
* Added `SurfaceModelJointOverride` GH Component
* Added `ShowSurfaceModelBeamType` GH Component
* Re-introduced attribute `key` in `Beam`.
* Added attribute `key` to `Plate`.
* Added generation of `plate` elements to the `SurfaceModel`

### Changed

* Updated documentation for Grasshopper components.
* Fixed missing input parameter in `SurfaceModelOptions` GH Component.
* Fixed error with tolerances for `SurfaceModel`s modeled in meters.
* Renamed `beam` to `element` in different locations to make it more generic.
* Fixed `AttributeError` in `SurfaceModel`.
* Updated example scripts.
* Calling `process_joinery` in `SurfaceModel`.
* Changed how `BeamDefinition` and `Plate` types are handled in `SurfaceModel`
* Changed the `get_interior_segment_indices` function to work when there are multiple openings.
* Renamed `ShowSurfaceModelBeamType` to `ShowBeamsByCategory`.
* Changed `SurfaceModel` component input handling to give warnings instead of errors.

### Removed

* Removed `add_beam` from `TimberModel`, use `add_element` instead.
* Removed `add_plate` from `TimberModel`, use `add_element` instead.
* Removed `add_wall` from `TimberModel`, use `add_element` instead.

## [0.9.1] 2024-07-05

Expand All @@ -29,6 +103,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed

* Fixed error in BakeWithBoxMap component.
* Added `add_extensions` to `Joint` interface.
* Added `process_joinery` to `TimberModel`.
* Features are not automatically added when creating a joint using `Joint.create()`.
* Features are not automatically added when de-serializing.

### Removed

Expand Down
20 changes: 10 additions & 10 deletions docs/tutorials.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,21 @@ Grasshopper plugin
******************


**COMPAS TIMBER for Grasshopper** is an easy-to-use tool to design timber frame structures from simple centerline input.
**COMPAS Timber for Grasshopper** is an easy-to-use tool to design timber frame structures from simple centerline input.
It provides tools to automate the process of creating timber frame structures with simple joints,
*bake* the geometry with fibre-aligned box-mapping for texturing/rendering,
add boolean-style features like planar cuts or holes,
and some more.

The plugin is built on top of the COMPAS TIMBER python library and provides additional functionalities that might be useful for design in Grasshopper.
The plugin is built on top of the COMPAS Timber python library and provides additional functionalities that might be useful for design in Grasshopper.

.. image:: tutorials/images/gh_ct_toolbar.png
.. image:: tutorials/images/gh_toolbar.png
:width: 100%


.. note::
You can also use the COMPAS TIMBER python library in Grasshopper using the
`ghPython componenent <https://developer.rhino3d.com/guides/rhinopython/ghpython-component/>`__.
See COMPAS TIMBER :doc:`api` and :doc:`examples` for more details.
You can also use the COMPAS Timber python library in Grasshopper using the ghPython componenent.
See COMPAS Timber :doc:`api` and :doc:`examples` for more details.

To get an overall idea how to use it, start with :doc:`tutorials/grasshopper/workflow`.
Then, the following sections explain in detail the concepts and tools:
Expand All @@ -29,12 +28,13 @@ Then, the following sections explain in detail the concepts and tools:
:titlesonly:

tutorials/grasshopper/workflow
tutorials/grasshopper/beam
tutorials/grasshopper/attributes
tutorials/grasshopper/joints
tutorials/grasshopper/rules
tutorials/grasshopper/beams
tutorials/grasshopper/design
tutorials/grasshopper/fabrication
tutorials/grasshopper/features
tutorials/grasshopper/assembly
tutorials/grasshopper/joint_rules
tutorials/grasshopper/model
tutorials/grasshopper/show
tutorials/grasshopper/utils
tutorials/grasshopper/examples
Expand Down
40 changes: 0 additions & 40 deletions docs/tutorials/grasshopper/assembly.rst

This file was deleted.

49 changes: 39 additions & 10 deletions docs/tutorials/grasshopper/attributes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,49 @@ and an underscore (:code:`\_`)
to separate entries (for example: *attr1name:attr1value_attr2name:attr2value*)


There are four *standard* attributes, corresponding to the inputs in the **Beam** components: `Width`, `Height`, `Category` or `ZVector`.
There are four *standard* attributes, corresponding to the inputs in the :doc:`beams` components: `Width`, `Height`, `Category` or `ZVector`.

* **SetStandardAttributes** - sets the standard attributes' values, e.g. writes them to the source object.
* **ReadStandardAttributes** - reads the standard attributes from the source object. *Group* attribute refers to indices of groups if source objects were grouped.
* **CheckStandardAttributes** - checks if the standard attributes are set and/or correctly formatted, and displays errors or missing values.
Standard Attributes
^^^^^^^^^^^^^^^^^^^

**SetStandardAttributes** - sets the standard attributes' values, e.g. writes them to the source object.
**GetStandardAttributes** - gets the standard attributes from the source object. *Group* attribute refers to indices of groups if source objects were grouped.

.. image:: ../images/gh_attributes_standard.png
:width: 100%

|
Custom Attributes
^^^^^^^^^^^^^^^^^

It is also possible to set and retrieve custom, user-defined attributes. This may be useful if later the source objects need to be filtered according to additional criteria.
These attributes are only set to source objects, not the beams created from them.

* **DeleteAttributes** - removes the given attribute and its value from the source object.
* **SetCustomAttributes** - sets a custom attribute and its value to the source object.
* **ReadAllAttributes** - reads all attributes from the source object.
**SetCustomAttributes** - sets a custom attribute and its value to the source object.
**GetCustomAttributes** - gets all attributes from the source object.

.. image:: ../images/gh_attributes_custom.png
:width: 100%

|
.. image:: ../images/Attributes_components.png
:width: 80%
Check Attributes
^^^^^^^^^^^^^^^^

**CheckStandardAttributes** - checks if the standard attributes are set and/or correctly formatted, and displays errors or missing values.

.. image:: ../images/gh_attributes_check.png
:width: 100%

|
Delete Attributes
^^^^^^^^^^^^^^^^^

**DeleteAttributes** - removes the given attribute and its value from the source object.

.. image:: ../images/gh_attributes_delete.png
:width: 100%

|
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
****
Beam
****
*****
Beams
*****

A :class:`~compas_timber.parts.Beam` object represents a linear (straight) timber part with a rectangular cross-section - for example as a stud, rafter, beam, joist etc.
It has a local coordinate system, where the X-axis corresponds with the *centerline*,
Y-axis with the *width* of the cross-section and Z-axis with the *height* of the cross-section.
The *origin* is located at the start of the centerline.

.. image:: ../images/beam_01png.png
:width: 40%
.. image:: ../images/gh_beam.png
:width: 50%

Beams are created with the component :code:`Beam` - to create a beam from a Grasshopper `Line` or `LineCurve`, or from a `Guid` of a `Line` object referenced from an active Rhino document.
The latter is intended for a design workflow, where the input geometry (centerlines, etc.) is drawn or stored in a Rhino document instead of generated within the Grasshopper environment.
Expand All @@ -34,17 +34,26 @@ Outputs:
* `Beam` : the resulting beam(s).
* `Blank`: the corresponding blank beam. The blank represents the raw material from which the beam is cut and without :doc:`features`. It is used to define the stock size for the beam.

.. image:: ../images/gh_beam.png
.. image:: ../images/gh_beam_beam.png
:width: 40%

Once a :code:`Beam` is created, it can be used as an input for the :doc:`assembly` component or the following components:
Once a :code:`Beam` is created, it can be used as an input for the :doc:`model` component or the following components:

DecomposeBeam
^^^^^^^^^^^^^

* **DecomposeBeam** : extracts the frame, centreline, box, width and height from a beam.
* **FindBeamByRhinoGeometry** : finds the beam corresponding to a referenced Rhino curve or line.
Extracts the frame, centreline, box, width and height from a Beam.

.. image:: ../images/gh_beamDecompose.png
.. image:: ../images/gh_beam_decompose.png
:width: 40%

.. image:: ../images/gh_beamGUID.png
|
FindBeamByRhinoGuid
^^^^^^^^^^^^^^^^^^^

Finds a specific Beam corresponding to a referenced Rhino curve or line.

.. image:: ../images/gh_beam_guid.png
:width: 40%

70 changes: 70 additions & 0 deletions docs/tutorials/grasshopper/design.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
******
Design
******

Design Components help to generate standard Wall structures from Surfaces, using different Options.

.. image:: ../images/gh_design_workflow.png
:width: 80%

|
A bit of timber construction vocabulary will help you work with these components:

.. image:: ../images/gh_design_modeldiagram.png
:width: 90%


Surface Model
^^^^^^^^^^^^^

Creates a Model from a Surface

Inputs:

* `surface` - Referenced planar :code:`Surface` from which to generate beams and joint rules.
* `stud_spacing` - :code:`Number`: Spacing between the Studs.
* `beam_width` - :code:`Number`: Width of the cross-section.
* `frame_depth` - :code:`Number`: Thickness of the frame section of the resulting model. Used to set Beam height.
* `stud_direction` - :code:`Vector` or :code:`Line`: Optional, Vector defining the direction of stud in the model. Default is World-Z.
* `options` - Optional, **Surface Model Options** Component
* `CreateGeometry` - :code:`Boolean`: Set to True to generate Joint and Feature geometry.

|
Outputs:

* `Model` : the resulting COMPAS Timber Model.
* `Geometry` : Model geometry.
* `DebugInfo` : Debug information object in the case of feature or joining errors.

Surface Model Options
^^^^^^^^^^^^^^^^^^^^^
Creates the Options for the Surface Model

Inputs:

* `sheeting_outside` - :code:`Number`: Optional, thickness of sheeting on the side of assembly closest to input surface. If zero, no sheeting will be added.
* `sheeting_inside` - :code:`Number`: Optional, thickness of sheeting on the side of assembly furthest from input surface. If zero, no sheeting will be added.
* `lintel_posts` - :code:`Boolean`: Optional, if False, jack studs will not be generated and headers will butt directly onto king studs.
* `edge_stud_offset` - :code:`Number`: Optional, distance to offset the studs at the edge of the assembly. If zero, the studs will be flush with the edge of the assembly.
* `custom_dimensions` - Optional, from **Custom Dimensions** Component. Beam dimensions must either be defined here or in with beam_width and frame_depth inputs.
* `joint_overrides` - Optional, from **Joint Overrides** Component. Allows user to specify joints between specific beam types in surface model.

Outputs:

* `Options` : the resulting Beam Model Options.

Custom Beam Dimensions
^^^^^^^^^^^^^^^^^^^^^^

This is a dynamic component. Sets Beam Dimensions for a selected Beam Type in the Surface Model.

Inputs:

* `width` - :code:`Number`: Width of all studs, king_studs, jack_studs, edge_studs, plates, headers or sills.
* `height` - :code:`Number`: Height of all studs, king_studs, jack_studs, edge_studs, plates, headers or sills.

Outputs:

* `Beam Type` : stud, king_stud, jack_stud, edge_stud, plate, header or sill.
Loading

0 comments on commit 09b0f78

Please sign in to comment.