Skip to content

Definition Files Explained

Remco Burema edited this page Dec 11, 2024 · 5 revisions

This page describes how to create and modify definition files.

Definition File Types and the Base Definition Files

There are two types of definition files:

  1. Machine Definition
  2. Extruder Definition

A machine definition file contains the majority of settings for a machine, while an extruder definition file contains some extruder-specific settings.

You can find the complete set of settings in the following two files. Those two files are the base definition files for machines and extruders, respectively.

  1. resources/definitions/fdmprinter.def.json
  2. resources/definitions/fdmextruder.def.json

Create Definition Files for a New Machine

To create a new machine, you need to create one machine definition files and at least one extruder definition files (depends on your machine). For example, you can create the files in the following way:

  • resources/definitions/my-machine.def.json
  • resources/extruders/my-machine-extruder-0.def.json
  • resources/extruders/my-machine-extruder-1.def.json (optional)
  • ...

You can take the existing files as examples for creating your own.

Information in a Machine Definition File

Here we use Ultimaker 3 as an example. In a machine definition file, you will typically have the following content:

{
    "version": 2,

    # human-readable machine name
    "name": "Ultimaker 3",

    # this machine definition file is based on "ultimaker.def.json". In your case,
    # you probably need "fdmprinter" instead.
    "inherits": "ultimaker",   
 
    "metadata": {
        "author": "Ultimaker",
        "manufacturer": "UltiMaker",

        # Whether this machine is visible in the machine selection list
        "visible": true,

        # The gcode file formats this machine supports in the order of preferences. In your case,
        # you probably just need "text/x-gcode"
        "file_formats": "application/gzip;text/x-gcode",

        # This is 3D model for your machine platform. Put your model file in "resources/meshes/" folder 
        "platform": "ultimaker3_platform.obj",

        # The texture image file of your machine platform. It's usually the logo of your machine.
        "platform_texture": "Ultimaker3backplate.png",

        # The offset of your platform model for rendering
        "platform_offset": [0, 0, 0],

        # Whether your machine has the possibility to choose different material profiles.
        # If this is set to "true", you will see the materials selection menu in Cura for your machine.
        "has_materials": true,

        # Whether your machine has the possibility to choose different variants.
        # If this is set to "true", you will see the variant selection menu in Cura for your machine.
        # By variants, we meant nozzles. You can have some specific variant profiles defined in folder
        # "resources/variants". See files there as examples.
        "has_variants": true,

        # The human-readable label for variants.
        "variants_name": "Print core",

        # The preferred variant name for your machine.
        # This is used as the default variant for your machine.
        "preferred_variant_name": "AA 0.4",

        # If there are machine-specific settings in material profiles for your machine.
        # Open one material file and you can see that there are overall settings and there are specific settings
        # for certain types of machines such as Ultimaker 3 and even more specific settings for a machine with
        # a variant/nozzle such as "Ultimaker 3 AA 0.4". This field indicates whether you have machine-specific
        # settings in materials in that regard.
        "has_machine_materials": true,

        # Similar to "has_machine_materials", but this says if there is variant-specific settings in materials,
        # such as for "Ultimaker 3 AA 0.4".
        "has_variant_materials": true,

        # The preferred quality type for your machine.
        # This is used as the default quality type for your machine.
        # For quality types that are available, please check the "quality_type" field in files in
        # "resources/quality" folder
        "preferred_quality_type": "normal",

        # This field indicates whether your machine has specific quality profiles which you have created.
        # Normally, we will just use the default profiles for your machine in "resources/quality" folder
        # and NOT in its sub-folders. But you can also create your set of quality profiles for your machine.
        # Those profiles can be places in "resources/quality/<my-machine>" folder. Please check the other
        # folders for examples.
        # In this case, you need to set this field to "true" so Cura knows to look for your specific qualities
        # instead of using the default ones.
        "has_machine_quality": true,

        # Whether the 3d-model of the machine has a(n elaborately) textured build-plate,
        # that should be at least somewhat visible to the user.
        # Note that not all textured 3d-models would need this,
        # several printers have textured decals _above_ the build-plate.
        "has_textured_buildplate": false,

        # The extruder definitions this machine has.
        # The names are the file names of your extruder definition files without (.def.json) file extensions.
        "machine_extruder_trains":
        {
            "0": "ultimaker3_extruder_left",
            "1": "ultimaker3_extruder_right"
        },
    },

    "overrides": {
         ...
         settings and values
         ...
    }
}
Clone this wiki locally