Fabricator Descriptors are XML descriptions of fabrication targets. A fabrication target can be a physical device, a job queue, a file target, or even a simulator. Essentially, anything a fabrication program can "print" to is considered a fabrication target.

Descriptors serve three primary functions:

  • They describe to the fabrication coordinator how to launch the backend for the given target;
  • They describe to the user what the target is and its capabilities; and
  • They describe to the target itself any additional data that needs to be encapsulated at setup time.

Where to install descriptors

The coordinator loads its descriptors by searching for .xml files in the directory ~/.fabman/machines. Each file may contain one or more descriptors.

Often a client program may wish to install missing descriptors. It may do so through the FabManager API.

What a descriptor file looks like

Descriptor files contain an XML header and a machines tag, which contains one or more descriptors. Here's an example:

<?xml version="1.1" encoding="utf-8"?>
  <!-- First descriptor -->
  <machine name="Descriptor 1">
    <!-- descriptor contents... -->

  <!-- Second descriptor -->
  <machine name="Descriptor 2">
    <!-- descriptor contents... -->

What a descriptor looks like

Descriptors are represented by machine XML tags. Each machine tag represents one fabrication target. Each machine tag must contain:

  • A name attribute on the machine tag which gives the name representing the fabrication target.
  • A backend tag which explains how to launch the fabricator backend.

Descriptors may contain additional information about the fabrication target. Some of this information may be required by some backends; check the documentation for the backend for details.

  • One or more parameter tags describing parameters that the target may need before launching the backend. (For an already launched backend, these tags will already be filled.)
  • A geometry tag may describe the geometry of the build area.
  • A tools tag may describe various toolheads available to the fabrication target.

Here is a sample descriptor:

  <!-- Machine driver -->
  <machine name="Cupcake CNC">
    <geometry type="cartesian">
      <axis id="x" length="300" maxfeedrate="5000" scale="11.767463"/> 
      <axis id="y" length="300" maxfeedrate="5000" scale="11.767463"/>
      <axis id="z" length="300" maxfeedrate="150" scale="320"/>
      <tool name="Pinch Wheel Extruder v1.1" type="extruder" material="abs" motor="true" floodcoolant="false" mistcoolant="false" fan="true" valve="false" collet="false" heater="true"/>
    <backend driver="fabman.driver.sanguino3g.Sanguino3GDriver">
    <parameter name="port" type="serial"/>
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.