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:SSin 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, andlabel, 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
symbolisnone,crossorinsulation; any other word refuses the file. - Every other value is free. A key left out takes its default,
nullcounts 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_idpoints at. Occlusia writeslayer_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.#FFFFFFby default.- line_weight
default, or a lineweight in hundredths of a millimetre:25is 0.25 mm.defaultby default.- line_type
solidby 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,falseandtrueby 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
noneorcustom. 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 afterhatch_, a hyphen written_— ANSI31 ishatch_ansi31, AR-CONC ishatch_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-hairlineby 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-thinandstroke-hairlineby default.- cut_line_type · surf_line_type
solidby default;nonedraws 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
#000000by 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'sid. - fill_pattern · surface_hatch
- The cut fill and the surface fill:
noneby default,hatch_solidor 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),crossorinsulation— 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_0by 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:
truehidden,falseshown. 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
truehides the view's marker in every other view.- marker_style
default(a disc with the symbol and the name),closed_arroworopen_arrow.- marker_color · marker_number_color · marker_name_color
- The heads, the symbol and the name:
#0000FFby default. - section_line_type · section_line_color
- The cut line:
dash-dotand#000000by default. - marker_endpoints
both(the default),start,endornone.- marker_show_number · marker_show_name
- Draw the symbol and the name:
true. - marker_size_mode · marker_scale
autofits the marker to the drawing;manualkeeps the sizemarker_scale(1).- marker_number_font_family · marker_number_font_size
- The symbol's font (
Arial) and size factor (1). The same keys withnamestyle the name. - marker_layer_id
- The marker's DXF layer:
layer_0. - object_visibility
- This view's own choices, by object name:
trueshown here,falsehidden here. They win over the objects'hidden. - spot_elevations
- The same for spot elevations, by name.
- shadow
enabled(false),sun_mode(manual),azimuthin degrees clockwise from north (135),altitude(45),interiors(true),pattern—defaultor a preset'sid— andlayer_id.formatfromA4toA0(A4),orientationauto,portraitorlandscape(auto),scale_modefitorcustomat 1:scale_denominator(fit, 50),margins_mm(10), andcenter, 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
truehides the note in every view.- font_family · font_size · font_style
Arial; the height of a capital letter, in drawing units (12);regular,bold,italicorbold-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 ofbackground_color,#FFFFFF— ordrawing, 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
truehides it in every view; a view'sspot_elevationschoice wins.- marker_style · marker_side
triangle(the default),triangle_half,triangle_openortarget; the texts on theright(the default) or on theleft.- marker_color · marker_line_weight
- The marker's fill (
#000000) and the one weight of its lines (stroke-hairline). - size_mode · scale
auto, ormanualatscale, 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), orabsolute, that height plusspot_elevation_datum'soffset_m, followed by itslabel. - 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.
- 01
Give it the format
This page and the JSON Schema above: every key, its type, its default and its rules.
- 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.
- 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.
- 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_layersis 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 idlayer_0or by the name0. Remove it: the default layer is never written. - OC200
- An object's
symbolis notnone,crossorinsulation. - OC300
hatch_presetsis 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
noneorcustom, which belong to Occlusia. - OC400
line_weightsis not a list.- OC401
- A line weight is not an object.
- OC402
- A line weight's
idis missing, or is notstroke-custom-followed by letters, digits,_or-. - OC403
- Two line weights share an
id. - OC500
line_typesis not a list.- OC501
- A line type is not an object.
- OC502
- A line type's
idis missing, or is notcustom-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.