Settings

KCL Settings

There are three levels of settings available in Zoo Design Studio:

  1. User Settings: Global settings that apply to all projects, stored in user.toml
  2. Project Settings: Settings specific to a project, stored in project.toml
  3. Per-file Settings: Settings that apply to a single KCL file, specified using the @settings attribute

Configuration Files

Zoo Design Studio uses TOML files for configuration:

Per-file settings

Settings which affect a single file are configured using the settings attribute. This must be at the top of the KCL file (comments before the attribute are permitted). For example:

The settings attribute may contain multiple properties separated by commas. Valid properties are:

  • defaultLengthUnit: the default length unit to use for numbers declared in this file.
    • Accepted values: mm, cm, m, in (inches), ft (feet), yd (yards).
  • experimentalFeatures: how experimental features are handled within this file.
    • Accepted values: allow (experimental features can be used freely), warn (experimental features cause a warning), deny (the default, experimental features cause an error).
  • kclVersion: the version of the KCL language and standard library to execute with.
    • 1.0: the original language version, for existing programs.
    • 2.0: the previous language version, for existing programs.
    • 3.0: the current language version, for new programs.
    • See Migrating to KCL 3.0 for how to update a program to the newest version.
    • Point-and-click modeling commands only offer arguments supported by this version. Arguments already present in the code are left alone.

defaultAngleUnit is not accepted in KCL 3.0. Use explicit angle suffixes, such as 180deg or 3.14rad, instead.

The entry point's kclVersion selects the language version for the whole program, including imported KCL files. For imported files:

  • An explicit kclVersion must match the entry point's version.
  • A file without kclVersion inherits the entry point's version.

These settings override any project-wide settings (configured in project.toml or via the UI).