All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added
BTLx_From_Params
GH component which contains the definiton for classDeferredBTLxProcessing
to allow directly defining BTLx parameters and passing them to the model. - Added
Shape
to BTLx output, showing finished element geometry in BTLx Viewer instead of just blank.
- Added missing arguments in configuration set component.
- Added
FlipDirection
flag to flip stud direction of a slab.
- Fixed rotating stud direction in slab causes breaks plates and connections.
- Restructured some Gh Toolboxes & added Icons for Walls & Slabs
- Added
distance_segment_segment
tocompas_timber.utils
- Added
BTLxFromGeometryDefinition
class to replace the depricatedFeatureDefinition
. This allows deferred calculation of BTLx processings. - Added
from_shapes_and_element
class method toDrilling
,JackRafterCut
, andDoubleCut
as a wrapper for their geometry based constructors for use withBTLxFromGeometryDefinition
. - Added
YButtJoint
which joins the ends of three joints where thecross_beams
get a miter cut and themain_beam
gets a double cut. - Added
JackRafterCutProxy
to allow for deferred calculation of theJackRafterCut
geometry thus improving visualization performance. - Added class "WallPopulator" to
compas_timber.design
. - Added class "WallPopulatorConfigurationSet" to
compas_timber.design
. - Added class "WallSelector" to
compas_timber.design
. - Added class "AnyWallSelector" to
compas_timber.design
. - Added class "LConnectionDetailA" to
compas_timber.design
. - Added class "LConnectionDetailB" to
compas_timber.design
. - Added class "TConnectionDetailA" to
compas_timber.design
. - Added
from_brep
to `compas_timber.elements.Wall. - Added
from_polyline
to `compas_timber.elements.Wall. - Added
WallJoint
tocompas_timber.connections
. - Added error handling when BTLx processing from geometry fails in GH.
- Added new
Slab
class tocompas_timber.elements
. - Added
Slab
GH component.
- Updated Grasshopper Toolbox and Icons
- Fixed
ValueErrorException
inas_dict()
method ofBTLxProcessingParams
class by ensuring precision specifiers are used with floats. - Removed model argument from
BTLxWriter
in the GH component and updated it to always return the BTLx string. - Fixed a bug in
compas_timber.Fabrication.StepJointNotch
related to theorientation
andstrut_inclination
parameters. - Fixed the error message when beam endpoints coincide, e.g. when a closed polyline is used as input.
- Changed
index
input ofShowFeatureErrors
andShowJoiningErrors
do have default value of 0. - Fixed spelling of
BeamJoinningError
toBeamJoiningError
. - Changed
process_joinery()
method to handleBeamJoiningError
exceptions and return them. Also updatedModel
GH component. - Updated
add_joint_error()
method inDebugInformation
class to handle lists. - Changed
compas_timber.fabrication.Lap
so that the volume is generated fully from the relevant BTLx params. - Refactored
compas_timber.connections.LapJoint
to comply with the new system. - Changed
THalfLapJoint
,LHalfLapJoint
,XHalfLapJoint
fromcompas_timber.connections
so that they use theLap
BTLx processing. - Renamed all
X/T/LHalfLapJoint
classes toX/T/LLapJoint
. - Enhanced lap behavior for optimal beam orientation in
LapJoint
class. - Fixed
restore_beams_from_keys
inLMiterJoint
to use the correct variable names. - Reworked
DoubleCut
to more reliably produce the feature and geometry with thefrom_planes_and_element
class method. - Renamed
intersection_box_line()
tointersection_beam_line_param()
, which now take a beam input and outputs the intersecting ref_face_index. - Added
max_distance
argument toJointRule
subclasses and GH components so that max_distance can be set for each joint rule individually. - Changed referenced to
beam
inDrilling
toelement
. - Changed
Drill Hole
andTrim Feature
GH components to generate the relevantBTLxProcessing
type rather than the deprecatedFeatureDefinition
type. - Changed
Show_beam_faces
gh component toShow_ref_sides
, which now takes anint
index and shows the corresponding face including origin corner. - Bug fixes after adding
max_distance
to joint defs. - Using new
JackRafterCutProxy
in LMiterJoint, LButtJoint and TButtJoint. - Changed input type from
Element
toBeam
in components that currently only support beams. - Fixed drilling GH component not taking diameter as a string.
- Reworked
Wall
class to be defined with a standard polyline, frame and thickness. - Changed labels in
Show_ref_sides
GH component to be 1-based to match the spec.
- Added API documentation for
design
anderror
packages. - Added
guess_joint_topology_2beams
andset_default_joints
functions todesign.__init__.py
. - Added
list_input_valid
,item_input_valid
,get_leaf_subclasses
,rename_gh_input
functions toghpython.__init__.py
. - Added
Instruction
,Model3d
,Text3d
,LinearDimension
,BuildingPlanParser
classes toplanning.__init__.py
. - Added
subprocessings
property toBTLxProcessing
to allow nesting of processings.
- Fixed comma incompatible with py27 in
Slot
module. - Updated the API documentation for
connections
,elements
,fabrication
,ghpython
,planning
packages. - Refactored all btlx
process
references toprocessing
, including base classes, properties, variables, and docstrings. - Refactored
BTLx
toBTLxWriter
in thecompas_timber.Fabrication
package.
- Removed
BeamJoiningError
fromconnections.__init__.py
. - Removed duplicate entries from the
__all__
list in theelements.__init__.py
module. - Removed package
compas_timber._fabrication
. - Removed
btlx_processes
anfjoint_factories
fromcompas_timber.fabrication
package. - Removed
.btlx
files from.gitignore
.
- Added new base class for timber elements
TimberElement
. - Added property
is_beam
toBeam
class. - Added property
is_plate
toPlate
class. - Added property
is_wall
toWall
class. - Added
side_as_surface
tocompas_timber.elements.Beam
. - Added
opposing_side_index
tocompas_timber.elements.Beam
. - Added
Plate
element. - Added attribute
plates
toTimberModel
. - Added new temporary package
_fabrication
. - Added new
compas_timber._fabrication.JackRafterCut
. - Added new
compas_timber._fabrication.JackRafterCutParams
. - Added new
compas_timber._fabrication.Drilling
. - Added new
compas_timber._fabrication.DrillingParams
. - Added new
compas_timber._fabrication.StepJoint
. - Added new
compas_timber._fabrication.StepJointNotch
. - Added new
compas_timber._fabrication.DovetailTenon
. - Added new
compas_timber._fabrication.DovetailMortise
. - Added new
compas_timber.connections.TStepJoint
. - Added new
compas_timber.connections.TDovetailJoint
. - Added new
utilities
module inconnections
package. - Added new
compas_timber._fabrication.DoubleCut
. - Added new
compas_timber.connections.TBirdsmouthJoint
. - Added new method
add_group_element
toTimberModel
. - Added new method
has_group
toTimberModel
. - Added new method
get_elements_in_group
toTimberModel
. - Added attribute
is_group_element
toTimberElement
. - Added
JointRule.joints_from_beams_and_rules()
static method - Added
Element.reset()
method. - Added new
fasteners.py
module with newFastener
element type. - Added new
compas_timber._fabrication.Lap
. - Added
Joint_Rule_From_List
GH Component that takes lists of beams to create joints. - Added
MIN_ELEMENT_COUNT
andMAX_ELEMENT_COUNT
class attributes toJoint
. - Added
element_count_complies
class method toJoint
. - Added
compas_timber.fasteners.FastenerTimberInterface
. - Added
compas_timber.connections.BallNodeJoint
. - Added
compas_timber.elements.BallNodeFastener
. - Added
transform()
method toFeature
types. - Added
FastenerInterfaceComponent
GH component. - Added
ShowElementsByType
GH Component. - Added
fasteners
property toTimberModel
. - Added
BTLx_Feature
GH component. - Added
CT_Beams_From_Mesh
GH component. - Added new
compas_timber._fabrication.FrenchRidgeLap
. - Added new
compas_timber.connections.LFrenchRidgeLapJoint
. - Added new
compas_timber._fabrication.Tenon
andcompas_timber._fabrication.Mortise
. - Added new
compas_timber.connections.TTenonMortiseJoint
. - Added
create
override toBallNodeJoint
. - Added
PlateFastener
class. - Added
errors
directory and__init__.py
module. - Added new
compas_timber._fabrication.Slot
. - Added new
compas_timber._fabrication.SlotParams
.
- Changed incorrect import of
compas.geometry.intersection_line_plane()
tocompas_timber.utils.intersection_line_plane()
- Renamed
intersection_line_plane
tointersection_line_plane_param
. - Renamed
intersection_line_line_3D
tointersection_line_line_param
. - Adjusted functions in
compas_timber._fabrication.DovetailMortise
andcompas_timber.connections.TDovetailJoint
. - Added
conda-forge
channel to installation instructions. - Fixed
**kwargs
inheritance in__init__
for joint modules:LMiterJoint
,TStepJoint
,TDovetailJoint
,TBirdsmouthJoint
. - Fixed GUID assignment logic from
**kwargs
to ensure correct fallback behavior for joint modules:LMiterJoint
,TStepJoint
,TDovetailJoint
,TBirdsmouthJoint
. - Changed
model.element_by_guid()
instead of directelementsdict[]
access for beam retrieval in joint modules:LMiterJoint
,TStepJoint
,TDovetailJoint
,TBirdsmouthJoint
. - Reworked the model generation pipeline.
- Reworked
comply
methods forJointRule
s. - Fixed error with angle and inclination calculation in
compas_timber._fabrication.JackRafterCut
- Changed
compas_timber.connections.TButtJoint
andcompas_timber.connections.LButtJoint
by using the new implemented BTLx Processes to define the Joints - Changed
DirectJointRule
to allow for more than 2 elements per joint. - Changed
beam
objects get added toJoint.elements
inJoint.create()
. - Fixed bug in vizualization of tenon/mortise in
compas_timber._fabrication.StepJoint
andcompas_timber._fabrication.StepJointNotch
. - Changed
model.process_joinery()
so that it callsjoint.check_elements_compatibility()
before adding extensions and features. - Fixed incorrect data keys for
beam_guid
in the__data__
property for joint modules:LMiterJoint
,TStepJoint
,TDovetailJoint
,TBirdsmouthJoint
,LFrenchRidgeLapJoint
. - Fixed
JointRuleFromList
GH component. - Changed
TButtJoint
to take an optionalPlateFastener
. - Moved
FeatureApplicationError
,BeamJoiningError
, andFastenerApplicationError
toerrors.__init__.py
. - Fixed a bug that occured when parallel beams are joined in the BallNodeJoint.
- Fixed
L_TopoJointRule
,T_TopoJointRule
andX_TopoJointRule
for cases whereJoint.SUPPORTED_TOPOLOGY
is a single value or a list. - Fixed bug in
JointRule.joints_from_beams_and_rules()
that caused failures when topology was not recognized. - Implemented
max_distance
parameter inJointRule.joints_from_beams_and_rules()
andJointRule.comply
methods. - Bux fixes from extra comma argument and
max_distance
not implemented inDirectRule.comply
.
- Removed module
compas_timber.utils.compas_extra
. - Removed a bunch of spaghetti from
CT_model
GH component. - Removed module
compas_timber.fabrication.joint_factories.t_butt_factory
. - Removed module
compas_timber.fabrication.joint_factories.l_butt_factory
. - Removed module
compas_timber.connections.butt_joint
. - Removed module
compas_timber.connections.french_ridge_lap
. - Removed module
compas_timber.fabrication.joint_factories.french_ridge_factory
. - Removed module
compas_timber.fabrication.btlx_processes.btlx_french_ridge_lap
.
- Added bake component for
Plate
elements. - Added default paramteters for
Surface Model
in the GH Component
- Fixed wrong image file paths in the Documentation.
- Changed
TimberModel.beams
to return generator ofBeam
elements. - Changed
TimberModel.walls
to return generator ofWall
elements. - Changed
TimberModel.plates
to return generator ofPlate
elements. - Changed
TimberModel.joints
to return generator ofJoint
elements. - Fixed polyline analysis for generating
SurfaceModel
- Fixed errors in debug info components.
- Implemented a workaround for #280.
- Added
SurfaceModelJointOverride
GH Component. - Added
Plate
element. - Added attribute
plates
toTimberModel
. - Added
SurfaceModelJointOverride
GH Component - Added
ShowSurfaceModelBeamType
GH Component - Re-introduced attribute
key
inBeam
. - Added attribute
key
toPlate
. - Added generation of
plate
elements to theSurfaceModel
- 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
toelement
in different locations to make it more generic. - Fixed
AttributeError
inSurfaceModel
. - Updated example scripts.
- Calling
process_joinery
inSurfaceModel
. - Changed how
BeamDefinition
andPlate
types are handled inSurfaceModel
- Changed the
get_interior_segment_indices
function to work when there are multiple openings. - Renamed
ShowSurfaceModelBeamType
toShowBeamsByCategory
. - Changed
SurfaceModel
component input handling to give warnings instead of errors.
- Removed
add_beam
fromTimberModel
, useadd_element
instead. - Removed
add_plate
fromTimberModel
, useadd_element
instead. - Removed
add_wall
fromTimberModel
, useadd_element
instead.
- Added
ref_frame
attribute toBeam
. - Added
ref_sides
attribute toBeam
. - Added
ref_edges
attribute toBeam
.
- Fixed error in BakeWithBoxMap component.
- Added
add_extensions
toJoint
interface. - Added
process_joinery
toTimberModel
. - Features are not automatically added when creating a joint using
Joint.create()
. - Features are not automatically added when de-serializing.
- Added
birdsmouth
parameter tobutt_joint
which applies abtlx_double_cut
process to the part. - Added
BTLxDoubleCut
BTLx Processing class. - Added BTLx support for
TButtJoint
andLButtJoint
- Added
BTLxLap
process class.
- Moved module
workflow
from packageghpython
to new packagedesign
. - Moved
compas_timber.ghpython.CategoryRule
tocompas_timber.design
. - Moved
compas_timber.ghpython.DirectRule
tocompas_timber.design
. - Moved
compas_timber.ghpython.JointRule
tocompas_timber.design
. - Moved
compas_timber.ghpython.TopologyRule
tocompas_timber.design
. - Moved
compas_timber.ghpython.JointDefinition
tocompas_timber.design
. - Moved
compas_timber.ghpython.FeatureDefinition
tocompas_timber.design
. - Moved
compas_timber.ghpython.DebugInfomation
tocompas_timber.design
.
- Fixed import errors in GH components.
- Updated GH example file.
- Added attribute
geometry
toBeam
. - Added
center_of_mass
property to Assembly class. - Added
volume
property to Assembly class. - Added new element type
Wall
.
- Reduced some boilerplate code in
Joint
subclasses. - Added argument
beams
toJoint.__init__()
which expects tuple containing beams from implementing class instance. - Renamed
TimberAssembly
toTimberModel
. - Renamed
compas_timber.assembly
tocompas_timber.model
. - Renamed
compas_timber.parts
tocompas_timber.elements
. - Based
Beam
on newcompas_model.elements.Element
. - Based
TimberModel
on newcompas_model.model.Model
. - Based
Joint
on newcompas_model.interactions.Interaction
. - Removed support for Python
3.8
.
- Removed
joint_type
attributes from allJoint
classes. - Removed argument
cutoff
fromLMiterJoint
as it was not used anywhere. - Removed argument
gap
fromTButtJoint
as it was not used anywhere. - Removed argument
gap
fromFrenchRidgeLap
as it was not used anywhere. - Removed class
JointOptions
as not used anymore. - Removed module
compas_timber.consumers
. - Removed unused method
TButtJoint.get_cutting_plane()
.
- Added
debug_geometries
attribute toBeamJoiningError
. - (Re)added
BooleanSubtraction
feature. - Added flag
modify_cross
toL-Butt
joint. - Added flag
reject_i
toL-Butt
joint. - Added new
NullJoint
. - Added
mill_depth
argument to butt joints, with geometric representation of milled recess in cross beam. - Added
ButtJoint
class with methods common toLButtJoint
andTButtJoint
- Added new
L_TopologyJointRule
,T_TopologyJointRule
,X_TopologyJointRule
GH components - Added GH component param support functions in
compas_timber.ghpython.ghcomponent_helpers.py
- Added
topos
attribute toCategoryRule
to filter when joints get applied - Added new
SurfaceAssembly
class - Added GH component
SurfaceAssembly
which directly generates aTimberAssembly
with standard wall framing from a planar surface. - Added GH component
SurfaceAssemblyOptions
- Added GH component
CustomBeamDimensions
forSurfaceAssembly
BeamFromCurve
GH component accepts now referenced Rhino curves, referenced Rhino object IDs and internalized lines.BeamFromCurve
GH component accepts now referenced Rhino curves, referenced Rhino object IDs and internalized lines.- Fixed
FeatureError
when L-Butt applies the cutting plane. - Fixed T-Butt doesn't get extended to cross beam's plane.
SimpleSequenceGenerator
updated to work withcompas.datastructures.assembly
and generates building plan acording to type.- Changed GH Categories for joint rules.
- Made
beam_side_incident
astaticmethod
ofJoint
and reworked it. - Extended
DecomposeBeam
component to optionally show beam frame and faces. - Changed
CategoryJointRule
andDirectJointRule
to a dynamic interface where joint type is selected with right click menu - Changed
Assembly
GH component to apply category joints if the detected topology is inCategoryRule.topos
- Changed
TopologyJoints
GH component toDefaultJoints
Component, which applies default joints based on topology.
- Removed component
ShowBeamFrame
. - Changed GH Categories for joint rules
BrepGeometryConsumer
continues to apply features even after the first error.DrillHole
component calculates length from input line.DrillHole
has default diameter proportional to beam cross-section.- Removed input
Length
fromDrillHole
component. - Fixed broken
TrimmingFeature
component. - Removed all
JointOption
components. these are accessed in context menu of joint rules.
- Updated COMPAS dependency to
2.0.0
!
- Added missing documentation for module
ghpython.workflow.py
. - Added missing documentation for package
connections
. compas_timber.__version__
now returns current version.
- Added class
DebugInformation
toworkflow.py
. - Added new component
ShowFeatureErrors
. - Added new component
ShowJoiningErrors
. - Added
FeatureApplicator
classes which report errors during feature application. - Added
L-HalfLapJoint
. - Added
T-HalfLapJoint
. - Added
ShowTopologyTypes
GH Component.
- Feature application now fails more gracefully (un-processed geometry is returned).
- Attempting to join beams which are already joined raises
BeamJoiningError
instead ofAssemblyError
Joint.add_features
which fails to calculate anything raisesBeamJoiningError
.- Changed COMPAS dependency to
compas==2.0.0beta.4
. - Assembly component shows blanks when
CeateGeometry
flag is set toFalse
.
- Removed
JointDef
GH components. - Removed
AutomaticJoint
GH Component. Joint rules are now input directly intoTimberAssembly
.
- Added
fabrication
package - Added
BTLx
as a wrapper forTimberAssembly
to generate .btlx files for machining timber beams - Added
BTLxPart
as wrapper forBeam
- Added
joint_factories
folder and factories for existing joints exceptX-HalfLap
- Added
btlx_processes
folder and processesJackCut
andFrenchRidgeHalfLap
- Added
BTLx
Grasshopper component - Added
FrenchRidgeHalfLap
joint - Added
DrillHole
Feature. - Added
DrillHoleFeature
Grasshopper component. - added
JointOptions
GH Components for all current joint types. This allows joint parameter definition in GH - added
DirectJointRules
GH Component - added
TopologyJointRules
GH Component - added
BTLx
as a wrapper forTimberAssembly
to generate .btlx files for machining timber beams - added
BTLxPart
as wrapper forBeam
- added
joint_factories
folder and factories for existing joints exceptX-HalfLap
- added
btlx_processes
folder and processesJackCut
andFrenchRidgeHalfLap
- added
BTLx
Grasshopper component - added
FrenchRidgeHalfLap
joint
- Changed
Beam
definition to includeblank_frame
andblank_length
attributes - Replaced
Artist
with the newScene
. - Changed type hint for argument
Centerline
of GH componentBeamFromCurve
toGuid
. - Curve ID of beam curves are now always stored in
Beam.attributes["rhino_guid"]
. - Fixed
FindBeamByGuid
component. - Bumped required COMPAS version to
2.0.0beta.2
. - Changed docs theme to the new
sphinx_compas2_theme
. - Re-worked component
BakeBoxMap
to advanced mode. - Removed call to
rs.Redraw()
inBakeBoxMap
which was causing GH document to lock (cannot drag).
- Added now released COMPAS
2.0.0a1
to requirements.
- Explicitly added attribute
key
to (de)serialization ofBeam
.
- Added new joint type: Half-lap joint.
- Beam transformed geometry with features is available using property
geometry
. - Adapted the
Data
interface ofBeam
andAssembly
according to the changes in COMPAS core. - Beam geometry is created on demand.
- Adapted the
Data
interface ofJoint
and its implementations according to the changes in COMPAS core. - Explicitly choosing
Grasshopper
context for theArtist
inShowAssembly
component.
- Removed method
Beam.get_geometry
.
- Integrated RTree search for neighboring beams using Rhino and CPython plugins.