BTLx Contribution Guide

Processes are BTLx machining steps. Each Joint type generates one or more different processes.

To add a new joint including BTLx process or processes:

1. create the joint module
    -inherits from Joint class.
    -This does not requre generating a geometrical representation.

2. create necessary processes
    -if the process or processes do not exist, generate new modules in the btlx_processes package.
    -new processes should follow the BTLx documentation found here: https://design2machine.com/btlx/btlx_2_1_0.pdf
    -processes are instantiated as generic BTLxProcess instance in a joint_factory method that appends the process to the input BTLxPart.processes list.
    -BTLxProcess is instantiated with BTLxProcess(PROCESS_TYPE, header_attributes, process_params) where:
        -PROCESS_TYPE a class attribute which matches the btlx process name
        -self.header_attributes which matches as a dict,
        -self.process_params which describe the geometric parameters of the process

3. create a joint factory
    -takes a Joint and BTLxParts as input.
    -the factory module should call the BTLxJoint.register_joint(joint type, joint factory) function so that the BTLxJoint class can call specific factory types.
    -the factory can apply multiple processes to a single part
    -the factory will typically derive the needed parameters from the Joint instance and related BTLxParts
    -the factory will instantiate the generic BTLxProcess or processes and append them to the BTLxPart.processes list

4. create import and dependencies
    -add import to this __init__.py file

Mind the reference surfaces used in the BTLx definition