Plan templates¶
A plan template is a JSON file that sets everything around the model on a storey plan:
- the title, the level note and the dimension unit;
- what is shown and what is hidden;
- the legend's words;
- the title block.
Every key is optional: a template lists only what differs from the built-in template below. Unknown keys are errors, so a typo is reported instead of being ignored.
bimble plan-template # print the built-in template
bimble plan-template mine.json # check a template and print it in full
bimble plan model.ifc plan.pdf --storey N01 --template mine.json --field phase="Tender"
Keys¶
| Key | Default | Meaning |
|---|---|---|
title |
"Plan {storey}, {scale}" |
Title under the drawing, bold and underlined. Ceiling plans and sections use "{view}, {scale}" instead |
level_note |
"{storey}: {level} m" |
Note above the title block, at the right. "": none |
dimension_unit |
"cm" |
"mm", "cm" or "m". cm are whole when they can be, else one decimal (12.5) |
hidden_classes |
reinforcement, spaces, openings, annotations, terrain | IFC classes left out of the plan (any letter case) |
seen_fills |
true |
Fill what is seen below the cut, lighter than what is cut |
axes |
"model-or-columns" |
Grid axes: "off", "model" (the IFC grid only) or "model-or-columns" (else through the cut columns) |
dimensions |
true |
Dimension chains, top and left |
slab_levels |
true |
Top-of-slab levels on the slabs seen below the cut |
opening_crosses |
true |
A cross in the rectangular openings of slabs seen below the cut |
opening_dimensions |
true |
Size of rectangular slab openings ("100x200", cm) and their distance to the nearest grid axes |
element_labels |
true |
Section labels: "30/30" beside cut columns, beams, members and piles, along beams above the cut; "GL24h 24x46" for timber |
section_markers |
true |
Marks of the section views crossing a plan: line, arrows, tag |
legend |
see below | The legend's words |
title_block |
see below | The title block's columns |
fields |
{} |
Your own values for placeholders, e.g. {"phase": "Tender"} |
legend¶
| Key | Default | Meaning |
|---|---|---|
show |
true |
Draw the legend |
title |
"Legend" |
Its title |
cut, seen |
"{family}, cut", "{family}, seen" |
Label of each material's cut and seen swatch |
above |
"Above the cut" |
Label of the dashed lines. "": not listed |
families |
{} |
Material family names in your language: keys Concrete, Steel, Timber, Masonry, Insulation, Earth, Glass, Other |
title_block¶
A band across the bottom of the frame, divided into columns. Each column holds one or more entries stacked on top of each other.
| Key | Meaning |
|---|---|
height_mm |
Height of the band, 10 to 120 mm (default 28) |
columns |
The columns, left to right |
columns[].width_mm |
Width in mm. Leave it out and the columns without a width share what is left |
columns[].entries[].label |
Caption, in bold |
columns[].entries[].value |
Text under it. \n starts a new line |
columns[].entries[].color |
Colour of the value, e.g. "#d22020". Default: the ink colour |
columns[].entries[].size |
Text size relative to the normal size, 0.2 to 5 (default 1) |
Placeholders¶
Any text can contain placeholders, replaced when the plan is drawn:
| Placeholder | Becomes |
|---|---|
{project} |
The project name: --project, else the file name |
{storey} |
The storey's name |
{view} |
The view drawn (bimble plan --view, or Draw in the viewer); empty for a storey plan |
{drawing} |
The view's name, else "Plan storey" |
{level} |
The storey's level in m, signed: +3.00 |
{scale} |
1:100 |
{n} |
100 |
{paper} |
A2, or A2 portrait |
{date} |
Today, YYYY-MM-DD |
{bimble} |
Bimble's version |
{client}, {project_number}… |
The project information's values |
{revision}, {drawn}, {checked}, {phase} |
A sheet's own fields |
{anything} |
The value of anything: a sheet's field or --field anything=…, else the project information, else the template's fields |
A known key with no value yet writes nothing; an unknown key stays as written, so a typo shows on the sheet.
An unknown placeholder is left as it is, so a typo shows on the sheet.
Example: a French office template¶
docs/templates/plan-fr.json
in the source is a complete example. It has:
- French words: Plan N01, éch 1 : 100, Béton coupé, Béton vu;
- a title block with the office, project, phase in red, client, architect, revision, drawn/checked, format/scale and date/plan number;
fieldsto fill in per project.
A shorter one:
{
"title": "Plan {storey}, éch 1 : {n}",
"legend": {
"title": "Légende :",
"cut": "{family} coupé",
"seen": "{family} vu",
"families": { "Concrete": "Béton", "Timber": "Charpente bois" }
},
"title_block": {
"columns": [
{ "entries": [{ "label": "PROJET", "value": "{project}" }] },
{ "width_mm": 45, "entries": [{ "label": "PHASE", "value": "{phase}", "color": "#d22020" }] },
{ "width_mm": 30, "entries": [{ "label": "ÉCHELLE", "value": "1 : {n}" }, { "label": "DATE", "value": "{date}" }] }
]
},
"fields": { "phase": "Avant-projet" }
}
The built-in template¶
{
"title": "Plan {storey}, {scale}",
"level_note": "{storey}: {level} m",
"dimension_unit": "cm",
"hidden_classes": [
"IfcReinforcingBar",
"IfcReinforcingMesh",
"IfcTendon",
"IfcTendonAnchor",
"IfcSpace",
"IfcOpeningElement",
"IfcAnnotation",
"IfcGeographicElement"
],
"seen_fills": true,
"axes": "model-or-columns",
"dimensions": true,
"slab_levels": true,
"opening_crosses": true,
"opening_dimensions": true,
"element_labels": true,
"section_markers": true,
"legend": {
"show": true,
"title": "Legend",
"cut": "{family}, cut",
"seen": "{family}, seen",
"above": "Above the cut",
"families": {}
},
"title_block": {
"height_mm": 28.0,
"columns": [
{
"width_mm": null,
"entries": [
{
"label": "PROJECT",
"value": "{project} {project_number}",
"color": null
},
{
"label": "CLIENT",
"value": "{client}",
"color": null
}
]
},
{
"width_mm": 60.0,
"entries": [
{
"label": "DRAWING",
"value": "{drawing}",
"color": null
}
]
},
{
"width_mm": 30.0,
"entries": [
{
"label": "SCALE",
"value": "{scale}",
"color": null
},
{
"label": "FORMAT",
"value": "{paper}",
"color": null
}
]
},
{
"width_mm": 30.0,
"entries": [
{
"label": "DATE",
"value": "{date}",
"color": null
},
{
"label": "REVISION",
"value": "{revision}",
"color": null
}
]
},
{
"width_mm": 24.0,
"entries": [
{
"label": "DRAWN",
"value": "{drawn}",
"color": null
},
{
"label": "CHECKED",
"value": "{checked}",
"color": null
}
]
},
{
"width_mm": 40.0,
"entries": [
{
"label": "DRAWING N°",
"value": "{drawing_no}",
"color": null
}
]
}
]
},
"fields": {}
}