Skip to content

How it works or should work

Chen Kasirer edited this page Jan 11, 2023 · 22 revisions
  • Test edit

Assembly

  • copy(): features / trimmed geometries are not copied!?
  • rainbows should manifest from longer edges of the beams

TimberAssembly

  • assembly.parts, assembly.beams

Beam

  • Geometry:
    beam.geometry → returns <class 'compas_rhino.geometry.brep.brep.RhinoBrep'>
    beam._part_geometry → returns <class 'compas.datastructures.assembly.part.BrepGeometry'>
    beam.shape → returns None
    beam.geometry.native_brep → returns RhinoBrep

Part

  • part.shape:
    base shape
    → still working??
    type: BrepGeometry or MeshGeometry (inherit from PartGeometry from Geometry)
  • part.geometry:
    including applied features

Joint

Features

General stuff from compas Part class [source]:

  • types: MeshFeature, BrepFeature, ParametricFeature(?)
  • know their feature shape and operation
  • store a deepcopy of previous part geometry after applying
  • hold reference to Part
  • parts and joints hold list of references to features
  • do not know where they come from (don't hold reference to e.g. joint)
  • apply themselves
  • do they know if already applied?

What part.add_geometry_feature() does:

  • creates a feature instance
  • adds it to part.features() list
  • optionally calls feature.apply()

What feature.apply() does:

  • performs feature operation
  • stores new geometry of the part (transformed) in part._part_geometry

from joints

Each joint type has specific features to apply to the parts, beams etc. For example: trim with a plane, extend length on one side, boolean subtract a notch geometry.

What joint.add_features() does:

  • using part.add_feature() :
    • creates joint-specific features
    • adds them to part.features() list
  • adds them to joint.features() list
  • optionally calls feature.apply()

TODO:

  • prevent duplicates of features from the same joint
  • a failed operation (e.g. trimming) throws an error --> warning / ignore instead?

Example: apply T-butt joint:

creates features:

  • parametric feature: extend main beam (esp. if the cutting plane is not perp to main beam's centerline)
  • geometric feature: trim main beam

whole action stack, for the main beam:

  • unroll all features
  • consolidate parametric features (e.g. extend by 1cm and extend by 2cm will only extend by 2cm)
  • (re)apply parametric features
  • restore (reapply) geometric features
  • apply the new geometric features

Example: remove a T-butt joint:

action stack, for the main beam:

  • find the features (extend + trim)
  • unroll all features
  • remove joint's features from feature list
  • reapply all remaining features

Example: change joint type from e.g. L-Butt to L-Miter

  • find joint features for both beams (extend+trim)
  • remove (L-butt's) features (from feature lists?)
  • add new (L-miter's) features
  • unroll all features
  • apply all features according to the new instructions/lists
Clone this wiki locally