fabex.joinery.finger#

Functions#

finger(diameter[, stem])

Create a joint shape based on the specified diameter and stem.

fingers(diameter, inside[, amount, stem])

Create a specified number of fingers for a joint tool.

finger_amount(space, size)

Calculates the amount of fingers needed from the available space vs the size of the finger

finger_pair(name[, dx, dy])

Creates a duplicate set of fingers.

horizontal_finger(length, thickness, finger_play, amount)

Generates an interlocking horizontal finger pair _wfa and _wfb.

vertical_finger(length, thickness, finger_play, amount)

Generates an interlocking horizontal finger pair _vfa and _vfb.

fixed_finger(loop, loop_length, finger_size, ...[, base])

distributes mortises of a fixed distance. Dynamically changes the finger tolerance with the angle differences

variable_finger(loop, loop_length, min_finger, ...[, ...])

Distributes mortises of a fixed distance. Dynamically changes the finger tolerance with the angle differences

Module Contents#

finger(diameter, stem=2)[source]#

Create a joint shape based on the specified diameter and stem.

This function generates a 3D joint shape using Blender’s curve operations. It calculates the dimensions of a rectangle and an ellipse based on the provided diameter and stem parameters. The function then creates these shapes, duplicates and mirrors them, and performs boolean operations to form the final joint shape. The resulting object is named and cleaned up to ensure no overlapping vertices remain.

Parameters:
  • diameter (float) – The diameter of the tool for joint creation.

  • stem (float?) – The amount of radius the stem or neck of the joint will have. Defaults to 2.

Returns:

This function does not return any value.

Return type:

None

fingers(diameter, inside, amount=1, stem=1)[source]#

Create a specified number of fingers for a joint tool.

This function generates a set of fingers based on the provided diameter and tolerance values. It calculates the necessary translations for positioning the fingers and duplicates them if more than one is required. Additionally, it creates a receptacle using a silhouette offset from the fingers, allowing for precise joint creation.

Parameters:
  • diameter (float) – The diameter of the tool used for joint creation.

  • inside (float) – The tolerance in the joint receptacle.

  • amount (int?) – The number of fingers to create. Defaults to 1.

  • stem (float?) – The amount of radius the stem or neck of the joint will have. Defaults to 1.

finger_amount(space, size)[source]#

Calculates the amount of fingers needed from the available space vs the size of the finger

Parameters:
  • space (float) – available distance to cover

  • size (float) – size of the finger

finger_pair(name, dx=0, dy=0)[source]#

Creates a duplicate set of fingers.

Parameters:
  • name (str) – name of original finger

  • dx (float) – x offset

  • dy (float) – y offset

horizontal_finger(length, thickness, finger_play, amount, center=True)[source]#

Generates an interlocking horizontal finger pair _wfa and _wfb.

_wfa is centered at 0,0 _wfb is _wfa offset by one length

Parameters:
  • length (float) – Length of mortise

  • thickness (float) – thickness of material

  • amount (int) – quantity of fingers

  • finger_play (float) – tolerance for proper fit

  • center (bool) – centered of not

vertical_finger(length, thickness, finger_play, amount)[source]#

Generates an interlocking horizontal finger pair _vfa and _vfb.

_vfa is starts at 0,0 _vfb is _vfa offset by one length

Parameters:
  • length (float) – Length of mortise

  • thickness (float) – thickness of material

  • amount (int) – quantity of fingers

  • finger_play (float) – tolerance for proper fit

fixed_finger(loop, loop_length, finger_size, finger_thick, finger_tolerance, base=False)[source]#

distributes mortises of a fixed distance. Dynamically changes the finger tolerance with the angle differences

Parameters:
  • loop (list of tuples) – takes in a shapely shape

  • loop_length (float) – length of loop

  • finger_size (float) – size of the mortise

  • finger_thick (float) – thickness of the material

  • finger_tolerance (float) – minimum finger tolerance

  • base (bool) – if base exists, it will join with it

variable_finger(loop, loop_length, min_finger, finger_size, finger_thick, finger_tolerance, adaptive, base=False, double_adaptive=False)[source]#

Distributes mortises of a fixed distance. Dynamically changes the finger tolerance with the angle differences

Parameters:
  • loop (list of tuples) – takes in a shapely shape

  • loop_length (float) – length of loop

  • finger_size (float) – size of the mortise

  • finger_thick (float) – thickness of the material

  • min_finger (float) – minimum finger size

  • finger_tolerance (float) – minimum finger tolerance

  • adaptive (float) – angle threshold to reduce finger size

  • base (bool) – join with base if true

  • double_adaptive (bool) – uses double adaptive algorithm if true