Skip to documentation

Reference

The configuration file, key by key

A configuration (.occc) is a JSON file: a project's layers, presets and line styles, and every setting it gives the objects, views, notes and spot elevations of a model. Its structure, each key and its default, the rules a file must respect and the errors that refuse one — to read a configuration, or to write one by hand, with a script or with an AI.

What a configuration holds

A configuration holds a project's settings without its model: one JSON object, in UTF-8. Export › Configuration (.occc) writes it and Import › Configuration (.occc) reads it back; a project (.occp) carries the same object beside its model, and your default configuration is one too.

  • Settings are stored by name: an object's settings sit under its name, as the model browser shows it, and apply to every object of that name in every view. Views, notes and spot elevations are stored by name too.
  • A configuration states what differs from the defaults: a key left out takes the default given for it below.
  • Layers, pattern presets and the project's own line weights and line types are defined once, in lists, and the settings point at them by their id.

The structure

The file is one object. Occlusia writes its keys in this order, every list and every group of settings included, even when empty:

{
  "author": "Occlusia",
  "app_version": "0.1.0",
  "app_build": "gbc7dba5",
  "snapshot_plugin_version": "0.1.0+gbc7dba5",
  "created_at": "2026-10-23 08:00:00",
  "saved_at": "2026-10-23 16:54:49",
  "project_layers": [ … ],
  "hatch_presets": [ … ],
  "line_weights": [ … ],
  "line_types": [ … ],
  "objects_settings": { "Facing brick": { … }, … },
  "sections_settings": { "Section A-A": { … }, … },
  "annotations_settings": { "Wall build-up": { … }, … },
  "spot_elevations_settings": { "Ground floor": { … }, … },
  "spot_elevation_datum": { "offset_m": 152.35, "label": "TAW" }
}
author · app_version · app_build
Who wrote the file: Occlusia, its version and its build. Informational: never read.
snapshot_plugin_version
What captured the model the settings were made on. Informational.
created_at · saved_at
When the document was created and when this file was written, YYYY-MM-DD HH:MM:SS in local time. Informational.
project_layers
The project's DXF layers: a list. See Layers.
hatch_presets
The pattern presets: a list. See Pattern presets.
line_weights · line_types
The project's own line weights and line types, beside the standard ones: two lists. See Line weights and line types.
objects_settings
The objects' settings, by object name. See Objects.
sections_settings
The views' settings, by view name. See Views.
annotations_settings
The notes' settings, by note name. See Notes.
spot_elevations_settings
The spot elevations' settings, by name. See Spot elevations.
spot_elevation_datum
The altitude of the model's origin in the project's reference: offset_m, in metres, and label, written after an absolute value (NGF, TAW). 0 and empty by default.

What a file must respect

A configuration is a file Occlusia writes. One written or edited elsewhere — by hand, by a script, by an AI — is checked when it is opened, and refused whole if it breaks a rule: nothing is half applied, the current settings stay, and the dialog lists every problem with its code (see Errors).

  • Ids are strict. Every entry of the four lists needs an id, unique in its list. Layer and line type names must be unique too, ignoring case: a DXF knows a layer and a line type by its name.
  • The cut symbol is a closed word. An object's symbol is none, cross or insulation; any other word refuses the file.
  • Every other value is free. A key left out takes its default, null counts as left out, a value of the wrong type reads as the default, and a key Occlusia does not know is kept as it is and written back.
  • References fall back. A setting that points at a layer the file does not define draws on layer 0; one that points at a missing preset or line style takes the setting's default.
  • Names must match exactly. Settings reach an object only if their key is its name, as the model browser shows it, capitals and spaces included. Settings for a name the model does not have are kept, unused.

Layers

project_layers lists the project's own layers. The default layer, 0, belongs to Occlusia: it is always there, never written, and no entry may claim it, by its id layer_0 or by the name 0.

{
  "id": "layer_1761134408",
  "name": "A-WALL",
  "description": "Masonry",
  "color": "#D9483B",
  "line_weight": "50",
  "line_type": "solid",
  "transparency": 0,
  "active": true,
  "frozen": false,
  "locked": false,
  "plot": true
}
id
Required. Text, unique in the list: what every …_layer_id points at. Occlusia writes layer_ and a number.
name
Required. The layer's name in the DXF: not blank, without spaces around it, unique ignoring case, never 0.
description
Free text. Empty by default.
color
#RRGGBB. #FFFFFF by default.
line_weight
default, or a lineweight in hundredths of a millimetre: 25 is 0.25 mm. default by default.
line_type
solid by default, or another line type (see Line weights and line types).
transparency
0 to 100 %. 0 by default.
active · frozen · locked · plot
On, frozen, locked, plotted: true, false, false and true by default.

Pattern presets

hatch_presets lists the project's presets; none and custom are Occlusia's own and are never written. An object that uses a preset names it — template for its cut fill, surface_template for its surface fill — and keeps its own copy of the preset's values.

{
  "id": "concrete",
  "label": "Concrete",
  "fill_pattern": "hatch_ar_conc",
  "color": "#000000",
  "color_bylayer": true,
  "bg": "#BBBBBB",
  "line_weight": "stroke-medium",
  "scale": 0.15,
  "angle": 0,
  "transparency": 0
}
id
Required. Text, unique, never none or custom. Occlusia writes the name in lower case, _ for spaces: concrete_block.
label
The name the lists show.
fill_pattern
none, hatch_solid, or a pattern: its name in the Fill Type list, in lower case after hatch_, a hyphen written _ — ANSI31 is hatch_ansi31, AR-CONC is hatch_ar_conc.
color · color_bylayer
The colour of the hatch lines or of the solid fill (#000000), and whether the DXF takes the layer's colour instead (true).
bg
A solid colour behind the hatch, or none (the default).
line_weight
The weight of the hatch lines: stroke-hairline by default.
scale · angle · transparency
Size factor (1), rotation in degrees, counter-clockwise (0), transparency from 0 to 100 (0).

Line weights and line types

Wherever a setting takes a line weight or a line type, it names a standard one or one of the project's own. The standard weights are stroke-hairline (0.13 mm), stroke-thin (0.25), stroke-medium (0.35), stroke-bold (0.50), stroke-heavy (0.70) and stroke-ultra (1.00); the standard types are solid, dashed, dotted, dash-dot and long_dash. An object's lines also take none: no line at all.

"line_weights": [
  { "id": "stroke-custom-fine", "name": "Fine", "width": 0.18 }
],
"line_types": [
  { "id": "custom-hidden_edge", "name": "Hidden edge", "pattern": [3.0, -1.5] }
]
line_weights · id
stroke-custom- followed by letters, digits, _ or -; unique.
line_weights · name · width
The name the lists show, and the width in millimetres, from 0.05 to 2.11 (AutoCAD's range). The DXF writes the nearest AutoCAD lineweight.
line_types · id
custom- followed by letters, digits, _ or -; unique.
line_types · name
The line type's name in the DXF: unique ignoring case, without spaces around it, at most 255 bytes, with no character a DXF table refuses (< > / \ " : ; ? * | , = and the quotes), and not a name the DXF or Occlusia keeps: Continuous, ByLayer, ByBlock, a standard type's name, NONE.
line_types · pattern
The dashes, in millimetres on the printed sheet, as AutoCAD writes them: a positive length is a dash, a negative one a gap, 0 a dot, twelve at most. [3, -1.5] is a 3 mm dash and a 1.5 mm gap.

Objects

objects_settings holds one entry per object name, a group's included. Each object is drawn with its own entry: the interface writes a change made on a group into the entry of every object inside it, and a file written by hand does the same. Every key is optional. The demo model's Facing brick:

"Facing brick": {
  "template": "custom",
  "fill_pattern": "hatch_ansi31",
  "cut_pattern_color": "#000000",
  "cut_pattern_color_bylayer": false,
  "cut_pattern_bg_color": "#f2d4a6",
  "cut_pattern_line_weight": "stroke-hairline",
  "cut_pattern_scale": 1.0,
  "cut_pattern_angle": 0,
  "cut_pattern_transparency": 0,
  "surface_template": "custom",
  "surface_hatch": "hatch_ar_brstd",
  "surf_pattern_color": "#000000",
  "surf_pattern_color_bylayer": false,
  "surf_pattern_bg_color": "#F2D4A6",
  "surf_pattern_line_weight": "stroke-hairline",
  "surf_pattern_scale": 0.11,
  "surf_pattern_angle": 0,
  "surf_pattern_transparency": 0,
  "cut_line_weight": "stroke-bold",
  "cut_layer_id": "layer_1761134408",
  "surf_layer_id": "layer_1761134408",
  "hatch_layer_id": "layer_1761134404"
}

Lines. The cut_ keys style the outline where the view cuts the object, the surf_ keys its edges seen beyond the plane.

cut_line_weight · surf_line_weight
stroke-thin and stroke-hairline by default.
cut_line_type · surf_line_type
solid by default; none draws no line.
cut_line_type_scale · surf_line_type_scale
A factor on the type's dash lengths: 1 by default.
cut_line_color · surf_line_color
#000000 by default.
cut_line_transparency · surf_line_transparency
0 to 100: 0 by default.
…_bylayer
Beside each colour, weight and type of lines, patterns and symbol: true, the default, lets the DXF take the layer's value. The SVG and the PDF always draw the object's.

Fills. The cut_pattern_ keys fill the cut faces, the surf_pattern_ keys the faces seen beyond the plane.

template · surface_template
The preset of the cut fill and of the surface fill: none (the default), custom — the values below, bound to no preset — or a preset's id.
fill_pattern · surface_hatch
The cut fill and the surface fill: none by default, hatch_solid or a pattern (see Pattern presets).
cut_pattern_color · surf_pattern_color
The colour of the hatch lines or of the solid fill: #000000.
cut_pattern_bg_color · surf_pattern_bg_color
A solid colour behind the hatch, or none (the default).
cut_pattern_line_weight · surf_pattern_line_weight
The weight of the hatch lines: stroke-hairline.
cut_pattern_scale · surf_pattern_scale
Size factor: 1.
cut_pattern_angle · surf_pattern_angle
Rotation in degrees, counter-clockwise: 0.
cut_pattern_transparency · surf_pattern_transparency
0 to 100: 0.

Symbol, layers and rendering.

symbol
none (the default), cross or insulation — nothing else: another word refuses the file.
symbol_line_weight · symbol_line_type · symbol_line_color · symbol_line_transparency
The symbol's lines: stroke-hairline, solid, #000000, 0.
cut_layer_id · surf_layer_id · hatch_layer_id · cut_symbol_layer_id
The DXF layers of the cut lines, the surface lines, the hatches and the symbol: a layer's id, layer_0 by default.
draw_order
Higher is drawn above: 0 by default.
export_block · block_name · block_layer_id
Exports the object and what it contains as one block (false), its name — empty: the object's — and the layer of its insert (layer_0).
exclude_from_shadows
No Shadows: casts none, receives none (false).
wireframe
Drawn by its lines only (false).
hidden
In every view: true hidden, false shown. Left out, the object is as the model shows it.

Views

sections_settings holds one entry per view name: its marker, drawn in the other views, the visibility choices made in this view, its shadows and its PDF page.

"South elevation": {
  "marker_style": "default",
  "marker_color": "#000000",
  "marker_number_color": "#000000",
  "marker_name_color": "#000000",
  "section_line_color": "#000000",
  "marker_layer_id": "layer_1761134400",
  "shadow": {
    "enabled": true,
    "sun_mode": "manual",
    "azimuth": 225,
    "altitude": 40,
    "interiors": false,
    "pattern": "default",
    "layer_id": "layer_1761134400"
  },
  "spot_elevations": { "Ground level": false, "Ceiling": false }
}
hidden
true hides the view's marker in every other view.
marker_style
default (a disc with the symbol and the name), closed_arrow or open_arrow.
marker_color · marker_number_color · marker_name_color
The heads, the symbol and the name: #0000FF by default.
section_line_type · section_line_color
The cut line: dash-dot and #000000 by default.
marker_endpoints
both (the default), start, end or none.
marker_show_number · marker_show_name
Draw the symbol and the name: true.
marker_size_mode · marker_scale
auto fits the marker to the drawing; manual keeps the size marker_scale (1).
marker_number_font_family · marker_number_font_size
The symbol's font (Arial) and size factor (1). The same keys with name style the name.
marker_layer_id
The marker's DXF layer: layer_0.
object_visibility
This view's own choices, by object name: true shown here, false hidden here. They win over the objects' hidden.
spot_elevations
The same for spot elevations, by name.
shadow
enabled (false), sun_mode (manual), azimuth in degrees clockwise from north (135), altitude (45), interiors (true), pattern — default or a preset's id — and layer_id.
pdf
format from A4 to A0 (A4), orientation auto, portrait or landscape (auto), scale_mode fit or custom at 1:scale_denominator (fit, 50), margins_mm (10), and center, the model point at the sheet's centre once the drawing has been moved on it.

Notes

annotations_settings holds one entry per note name — the name the model gives the note (OCCTAG#Name), not the text it writes.

"Wall build-up": {
  "font_family": "Arial",
  "font_size": 4.2,
  "font_style": "regular",
  "background": "drawing",
  "layer_id": "layer_1761134400"
}
hidden
true hides the note in every view.
font_family · font_size · font_style
Arial; the height of a capital letter, in drawing units (12); regular, bold, italic or bold-italic.
color · color_bylayer · transparency
#000000, true, 0.
multiline · max_width
Wrap the text at a width in drawing units: false, 0.
show_leader
Draw the leader when the model gives the note one: true.
background · background_color
none (the default), solid — a box of background_color, #FFFFFF — or drawing, the drawing's own background.
layer_id
The note's DXF layer: layer_0.

Spot elevations

spot_elevations_settings holds one entry per spot elevation name (OCCLEVEL#Name).

"Ground level": {
  "marker_style": "triangle_half",
  "value_font_size": 4.6,
  "name_font_size": 4.2,
  "layer_id": "layer_1761134400",
  "marker_side": "left",
  "size_mode": "manual",
  "scale": 2.0
}
hidden
true hides it in every view; a view's spot_elevations choice wins.
marker_style · marker_side
triangle (the default), triangle_half, triangle_open or target; the texts on the right (the default) or on the left.
marker_color · marker_line_weight
The marker's fill (#000000) and the one weight of its lines (stroke-hairline).
size_mode · scale
auto, or manual at scale, from 0.05 to 50 (1).
show_line · line_type · line_weight · line_color · line_length
The elevation line: off (false), dashed, stroke-hairline, #000000, 20 drawing units long — 0 draws none.
show_value · value_display
Write the altitude (true): relative, the model's own height (+2.90), or absolute, that height plus spot_elevation_datum's offset_m, followed by its label.
show_name
Write the label: true.
value_font_family · value_font_size · value_font_style
The altitude's text: Arial, 12, bold.
name_font_family · name_font_size · name_font_style
The label's text: Arial, 12, regular.
value_color · name_color
#000000.
marker_color_bylayer · line_color_bylayer · value_color_bylayer · name_color_bylayer
One ByLayer decision per colour: true.
layer_id
The DXF layer: layer_0.

Writing a configuration with an AI

An AI can write a configuration — an office standard, another software's styles carried over, a variant of an existing file — once it knows the rules above and the names in your model.

  1. 01

    Give it the format

    This page and the JSON Schema above: every key, its type, its default and its rules.

  2. 02

    Give it your names

    The names of your objects, views, notes and spot elevations exactly as the model browser shows them — or a configuration exported from the model.

  3. 03

    Ask for what differs

    The keys that differ from the defaults, the layers and presets they use, and no entry for a name the model does not have.

  4. 04

    Import it and read the answer

    Import › Configuration (.occc). A file that breaks a rule changes nothing, and the dialog lists each problem with its code: give the list back to the AI. ⌘Z (Ctrl+Z) takes back an import.

Errors

A refused file brings up Cannot import this configuration. — Cannot open this project. for a project, Your default configuration was not loaded. for the default one. Its details list each problem: the code, the entry, and why. A code never changes meaning.

OC001
The file is not a configuration: its content is not a JSON object, or not readable JSON.
OC100
project_layers is not a list.
OC101
A layer is not an object.
OC102
A layer has no id, or a blank one.
OC103
Two layers share an id.
OC104
A layer has no name, or a blank one.
OC105
Two layers have the same name, ignoring case: in a DXF they would be one layer.
OC106
A layer's name has spaces around it.
OC107
An entry claims the default layer 0, by the id layer_0 or by the name 0. Remove it: the default layer is never written.
OC200
An object's symbol is not none, cross or insulation.
OC300
hatch_presets is not a list.
OC301
A preset is not an object.
OC302
A preset has no id, or a blank one.
OC303
Two presets share an id.
OC304
A preset takes the id none or custom, which belong to Occlusia.
OC400
line_weights is not a list.
OC401
A line weight is not an object.
OC402
A line weight's id is missing, or is not stroke-custom- followed by letters, digits, _ or -.
OC403
Two line weights share an id.
OC500
line_types is not a list.
OC501
A line type is not an object.
OC502
A line type's id is missing, or is not custom- followed by letters, digits, _ or -.
OC503
Two line types share an id.
OC504
A line type has no name, or a blank one.
OC505
Two line types have the same name, ignoring case.
OC506
A line type's name has spaces around it.
OC507
A line type takes a name the DXF or Occlusia keeps: Continuous, ByLayer, ByBlock, a standard type's name, NONE.
OC508
A line type's name holds a character a DXF table refuses, or is longer than 255 bytes.