ConstructCraft

Command reference

Every command runs the same way from the desktop app, ccad run / ccad script and MCP (see the automation guide). Lengths are in meters, angles in degrees, points [x, y] in plan (in a view’s drawing coordinates for dimensions). id or name parameters accept a numeric id or the name of a level, type, view or material. Kinds: query reads the model, edit changes it (one undo step, refused if it would leave the model invalid), file works with files or replaces the project.

Contents

Project and files

project_new

file — Start a new project from the template (unsaved changes are discarded).

No parameters.

project_open

file — Open a ConstructCraft project (.ccad), replacing the session’s project. Damaged files are repaired and the number of repairs reported.

Parameter Type   Description
path string required Path of the .ccad file.

project_save

file — Save the project to its file, or to path (which becomes its file).

Parameter Type   Description
path string optional Where to save; required when the project has no file yet.

project_info

query — Project information, file, unsaved state and counts.

No parameters.

project_info_set

edit — Change the project information (title block fields).

Parameter Type   Description
address string optional Project address.
author string optional Author of the drawings.
client string optional Client name.
fields object optional Project fields by name: a text sets the field (adding it; a new name holds no braces and at most 192 bytes), null removes it.
name string optional Project name.
number string optional Project number.

undo

edit — Undo the last edit.

No parameters.

redo

edit — Redo the last undone edit.

No parameters.

units_get

query — The project units (length, area, volume, angle, slope, currency, number format).

No parameters.

units_set

edit — Change the project units: values is merged into the object units_get returns (only the fields given change), after preset when given. Length units are Millimeter, Centimeter, Meter, Foot, Inch, FeetInches (12'-6 1/2") and FractionalInch; for the last two, decimals is the precision, 1/2^decimals of an inch.

Parameter Type   Description
preset string optional Start from metric (the defaults) or imperial (feet and inches to 1/16”, square and cubic feet).
values JSON optional Fields to change, shaped like the result of units_get.

language_set

edit — Language of default names, messages and sheet labels (en, pt-BR, es, fr, de, it, lo, pl, uk-UA, zh-TW, zh-CN or ja).

Parameter Type   Description
language string required Language code: en, pt-BR, es, fr, de, it, lo, pl, uk-UA, zh-TW, zh-CN or ja.

ifc_import

file — Import an IFC file (IFC2X3 or IFC4), replacing the session’s project. The result has no file yet; save it with project_save and a path.

Parameter Type   Description
path string required Path of the .ifc file.

skp_import

edit — Import a SketchUp model (.skp) into the project. Each placed component or group becomes a component element on level, of a component type holding its faces as fixed mesh pieces (one per material): placements that differ only by a move or a plan rotation share a type, anything else in their transform (tilt, scale, mirror) is built into the type. Faces outside any component make one more element at the file’s origin. Missing materials are added by name and color; hidden objects and those on hidden layers are left out.

Parameter Type   Description
path string required Path of the .skp file.
level id or name optional Level id or name (default: the lowest level); the file’s ground is at its elevation.
position [x, y] optional Where the file’s origin goes, in plan (default [0, 0]).
rotation number optional Rotation of the whole model in plan, degrees counter-clockwise (default 0).

skp_component_load

edit — Load a SketchUp model (.skp) as one component type, named after the file, to place like any component: its faces become fixed mesh pieces (one per material) with the file’s origin as the insertion point. Missing materials are added by name and color.

Parameter Type   Description
path string required Path of the .skp file.

ifc_export

file — Export the project as IFC4.

Parameter Type   Description
path string required Path of the .ifc file to write.

sheet_export

file — Export a sheet as vector PDF or SVG, or as DXF in paper millimeters (by format, else by the file extension).

Parameter Type   Description
path string required Path of the file to write (.pdf, .svg or .dxf).
sheet id or name required Sheet id or name.
format string optional pdf, svg or dxf.

view_export

file — Export any view with a drawing (plan, elevation, section, 3D view as a hidden-line axonometric, legend, drafting view, diagram or sheet) as a PNG image, as vector SVG or PDF, or as DXF for other CAD programs (by format, else by the file extension). The view is drawn at its scale as printed, without temporary hiding, on a page that fits it; sheets keep their paper size. A DXF holds the view at full size in millimeters (a sheet in paper millimeters), each element on the layer of its category (detail lines, and regions with a boundary, on the layer named after their line style; region fills as SOLID triangles, their patterns as lines), colors as the nearest color index and line patterns as line types.

Parameter Type   Description
path string required Path of the file to write (.png, .svg, .pdf or .dxf).
view id or name required View id or name.
dpi number optional Resolution of a PNG, in dots per inch (default 150).
format string optional png, svg, pdf or dxf.

schedule_export_csv

file — Export a schedule view as CSV (UTF-8; semicolons when the decimal comma is used).

Parameter Type   Description
path string required Path of the .csv file to write.
view id or name required Schedule view id or name.

component_load

edit — Load a component file (.ccomp): its types and missing materials join the project.

Parameter Type   Description
path string required Path of the .ccomp file.

component_library_list

file — List the component library: the component files (.ccomp) in folders and their subfolders, each with its component, kind, category (doors and windows have their own), types, parameters and connectors; search keeps those whose component, type names or descriptions contain it. Files that do not load are listed with the reason.

Parameter Type   Description
folders [string, …] required Folders to look in.
search string optional Text to look for (any case).

component_save

file — Save a component (all its types and the materials they use) to a .ccomp file.

Parameter Type   Description
component string required Component name (as in a component type’s params.component).
path string required Path of the .ccomp file to write.

cad_import

edit — Import a DWG or DXF file into a 2D view (plan, ceiling plan, elevation, section, legend or drafting view) as a drawing to trace over, in one undo step. DXF (ASCII or binary, any version) is read entirely by ConstructCraft; DWG (R12 to 2018 and later) through the acadrust library. Blocks are inserted, curves kept as arcs, texts kept; entities that are not drawn (3D solids, images, infinite lines…) are counted in skipped. The element starts pinned, with the layers that are off or frozen in the file hidden, and in the view’s level. It is drawn in the view only, under the model, and is left out of 3D views and IFC export.

Parameter Type   Description
path string required Path of the .dwg or .dxf file.
view id or name required View id or name.
align string optional origin (the drawing’s origin at position), center, or auto: the origin, unless that leaves the drawing more than 1 km from what the view shows (a drawing in survey coordinates), then the center.
blocks boolean optional Bring the file’s blocks in as detail components (DWG and DXF): each block inserted by a move, turn, uniform scale or mirror becomes a detail component type named after it (its nested blocks as nested pieces), and each such insert a detail component placed in the view; everything else stays in the imported drawing (default false: blocks are flattened into it).
color_mode string optional grey (default), layers (the file’s colors) or black.
halftone boolean optional Draw it faded (default false).
position [x, y] optional Where the drawing goes, view coordinates in meters: its origin (align “origin”, the default; [0, 0] if not given) or the center of its extents (align “center”; the center of what the view shows if not given).
rotation number optional Rotation in degrees counter-clockwise.
scale number optional Extra scale on top of the units (default 1).
units string optional Drawing units, overriding the file’s: mm, cm, dm, m, km, in, ft, yd or mi. Unitless files are read as meters when small (up to 1500 units across), else as millimeters.

image_import

edit — Import a picture (PNG, JPEG, GIF, BMP or WebP) or an SVG drawing into a 2D view (plan, ceiling plan, elevation, section, legend or drafting view), in one undo step, as an imported drawing under the model: placed, scaled, rotated, pinned, hidden and printed like an imported DWG or DXF. A picture is as large as its resolution makes it on paper (96 dpi when the file declares none), times scale, unless width sets its width in the view; the file’s bytes are kept in the project. An SVG keeps its paths (curves as polylines), fills and embedded pictures in their own colors; its texts are not read.

Parameter Type   Description
path string required Path of the picture or .svg file.
view id or name required View id or name.
align string optional center (default) or origin.
halftone boolean optional Draw it faded (default false).
position [x, y] optional Where it goes, view coordinates in meters: the center of the picture (align “center”, the default; the center of what the view shows if not given) or its bottom-left corner for pictures and the page’s for SVG (align “origin”; [0, 0] if not given).
rotation number optional Rotation in degrees counter-clockwise.
scale number optional Scale on top of its size on paper (default 1; 100 for a plan drawn at 1:100).
width number optional Width in the view, meters (overrides scale).

cad_layers

query — The layers of an imported drawing: name, color, whether the view shows it, whether it was on in the file, and how many primitives it holds.

Parameter Type   Description
id integer required Imported drawing element id.

cad_layers_set

edit — Show or hide layers of an imported drawing (by name; all of them when layers is empty).

Parameter Type   Description
id integer required Imported drawing element id.
visible boolean required Show (true) or hide (false) them.
layers [string, …] optional Layer names (case-insensitive); empty for every layer.

cad_explode

edit — Explode an imported DWG, DXF or SVG drawing into native elements of its view, in one undo step: its lines, polylines, arcs and circles become detail lines (one element per segment, bulged segments as arcs; ellipses and splines are stored as polylines and come out as their segments), its fills filled regions (no boundary, a solid filled region type of the fill’s color, reused when the project has one), and its texts text notes (same place, height, rotation and alignment; a text type of that size on paper at the view’s scale, reused when one exists). Each layer becomes a project line style of its name and color (light colors darkened for paper), reused when a style of that name exists. Layers hidden in the element (which starts with the layers off or frozen in the file) are left out; the placement (units, scale, position, rotation, mirror) is applied. Pictures stay in an imported drawing in the same view with the same placement; without them the element is removed. The color mode and halftone are not carried over. Refused above 100,000 elements.

Parameter Type   Description
id integer required Imported drawing element id.

Queries

categories_list

query — Element categories with their display names and how many elements and types each has.

No parameters.

levels_list

query — Levels from the lowest, with their elevations (meters).

No parameters.

types_list

query — Types, optionally of one category.

Parameter Type   Description
category string optional Category name (wall, door, component…).

type_get

query — A type with all its parameters (params, editable with type_set) and identity data (info). A title block’s pictures show as format, width, height (pixels) and bytes, not their bytes; component_sheet_piece_set replaces them.

Parameter Type   Description
type id or name required Type id or name.

elements_list

query — Elements, optionally of one category, level and/or type, or only those shown in a view (all the instances of a type visible in it, for example), with a short summary each.

Parameter Type   Description
category string optional Category name (wall, door, component…); see categories_list.
level id or name optional Level id or name.
type id or name optional Type id or name: only its instances.
view id or name optional View id or name: only the elements the view shows.

element_get

query — An element with all its parameters (params, editable with element_set) and derived values (length, height, thickness, volume, room area and perimeter; for beams the length after joins and what each end is framed into).

Parameter Type   Description
id integer required Element id.

groups_list

query — The project’s groups with their members.

No parameters.

measure

query — Measure between two points of a view (meters on its plane: plan coordinates in plans): the distance, its horizontal and vertical parts and its angle. When both points lie on lines (line_a, line_b, each two points) that are parallel, the distance between the lines is given too. Nothing is created.

Parameter Type   Description
a [x, y] required First point [x, y].
b [x, y] required Second point [x, y].
line_a [[x, y], [x, y]] optional The line the first point was taken on, as two points.
line_b [[x, y], [x, y]] optional The line the second point was taken on, as two points.

views_list

query — Views (plans, ceiling plans, elevations, sections, 3D, legends, drafting views, schedules, sheets), optionally of one category.

Parameter Type   Description
category string optional floor_plan, ceiling_plan, three_d, elevation, section, legend, drafting, schedule, diagram or sheet.

view_get

query — A view with all its parameters (params, editable with view_set).

Parameter Type   Description
view id or name required View id or name.

materials_list

query — Materials with their colors and how many types use each.

No parameters.

material_get

query — A material with all its fields (editable with material_set).

Parameter Type   Description
material id or name required Material name (or index in materials_list).

schedule_table

query — The table of a schedule view: headers, one row per element (with its id) and totals, formatted with the project units.

Parameter Type   Description
view id or name required Schedule view id or name.

Creating elements

wall_create

edit — Create a wall from start to end on a level: straight, or an arc through mid (or with a bulge or a radius). Its top is height above its base, or attached to top_level (plus top_offset).

Parameter Type   Description
end [x, y] required End point of the wall line.
start [x, y] required Start point of the wall line.
base_offset number optional Base offset from the level, meters.
bulge number optional Arc walls: tan(sweep / 4), positive when the arc turns counter-clockwise from start to end (1 is a half circle; at most 10 either way). Ignored when mid is given.
height number optional Unconnected height in meters (default 3).
level id or name optional Level id or name (default: the lowest level).
location_line string optional Which line of the wall start-end is: Centerline (default), CoreCenter, FinishExterior, FinishInterior, CoreExterior or CoreInterior.
major_arc boolean optional With radius: take the longer of the two arcs (default: the shorter).
mid [x, y] optional A point on the arc between the ends: makes an arc wall through the three points.
radius number optional Arc walls: the radius in meters, positive when the arc turns counter-clockwise from start to end, negative clockwise; at least half the distance between the ends. Ignored when mid or bulge is given.
top_level id or name optional Level the top is attached to, instead of a height.
top_offset number optional Offset of the top from top_level, meters.
type id or name optional Wall type id or name (default: the default wall type).

curtain_type_create

edit — Create a curtain wall type: walls of it are a grid of panels and mullions. curtain changes the defaults (vertical and horizontal lines every 1.5 m, glass panels, 5 x 15 cm mullions inside and around) and is shaped like params.curtain in type_get: vertical and horizontal {layout: None, FixedDistance, FixedNumber or MaxSpacing, spacing, count, justification: Start, Center or End}, panel {kind: Glass or Solid, thickness, material} or {kind: Empty} or {kind: Component, component: type id}, and vertical_mullion, horizontal_mullion, border_mullion {width, depth, material} or null for none. Place walls of it with wall_create.

Parameter Type   Description
name string required Type name (unique among wall types).
curtain JSON optional Changes to the default grid, panel and mullions.

curtain_get

query — Show a curtain wall’s grid: its interior lines (vertical: distances along the wall from its start; horizontal: heights above its base), the panels by column and row (from the start and from the base; merged cells give their lowest) with their extent, kind and whether they are swapped, and its panel count, glazed area and mullion length.

Parameter Type   Description
element integer required The curtain wall’s id.

curtain_grid_set

edit — Adjust one curtain wall’s grid on one axis. Lines are numbered from 0 in the order curtain_get lists them (vertical or horizontal); positions are distances along the wall from its start for vertical lines and heights above the base for horizontal ones. In order: reset goes back to the type’s lines; lines gives all of them; move moves lines [index, to]; remove takes lines out; add puts lines in. Any of these gives the wall its own lines (later type changes no longer move them). Segments are a line’s pieces between the lines across it ([line, segment], segment numbered from the base or from the start, as the grid was before this command): remove_segments merges the cells on both sides into one panel with no mullion between, restore_segments puts them back.

Parameter Type   Description
axis JSON required Which lines: Vertical or Horizontal.
element integer required The curtain wall’s id.
add [number, …] optional Positions of new lines.
lines [number, …] optional All the interior lines, replacing the current ones.
move [[JSON, …], …] optional Lines to move, as [index, new position].
remove [id, …] optional Indices of lines to remove.
remove_segments [[id, …], …] optional Segments to remove, as [line, segment].
reset boolean optional Go back to the type’s lines (and drop removed segments of this axis).
restore_segments [[id, …], …] optional Removed segments to put back, as [line, segment].

curtain_panel_set

edit — Swap panels of one curtain wall: the panels of cells [column, row] (numbered from the start and from the base, as curtain_get lists them; a cell of merged cells swaps all of them) become panel, or the type’s again when panel is null.

Parameter Type   Description
cells [[id, …], …] required The cells, as [column, row].
element integer required The curtain wall’s id.
panel object optional The new panel (null: the type’s).

door_create

edit — Place a door in a wall (centered on the wall unless offset or point is given).

Parameter Type   Description
flip_facing boolean optional Face the other side of the wall.
flip_hand boolean optional Hinge on the other jamb.
offset number optional Distance along the wall from its start to the opening’s center, meters.
point [x, y] optional A point near the wall: the opening is centered at its projection, on its side.
sill number optional Sill height (default: the type’s default sill for windows, 0 for doors).
type id or name optional Door or window type id or name (default: the default type).
wall integer optional Id of the host wall; omit it to use the wall nearest point.

window_create

edit — Place a window in a wall (centered on the wall unless offset or point is given).

Parameter Type   Description
flip_facing boolean optional Face the other side of the wall.
flip_hand boolean optional Hinge on the other jamb.
offset number optional Distance along the wall from its start to the opening’s center, meters.
point [x, y] optional A point near the wall: the opening is centered at its projection, on its side.
sill number optional Sill height (default: the type’s default sill for windows, 0 for doors).
type id or name optional Door or window type id or name (default: the default type).
wall integer optional Id of the host wall; omit it to use the wall nearest point.

floor_create

edit — Create a floor slab from an outline (or the loop of walls).

Parameter Type   Description
boundary [[x, y], …] optional Closed outline (at least 3 points); omit with from_walls or curves.
curves [JSON, …] optional The outline drawn with curves (lines, arcs, circles, ellipses, rectangles, polygons) instead of boundary; loops inside the outline are openings (floors and roofs). The element keeps the curves (see sketch_get).
from_walls boolean optional Follow the outer boundary of the walls of the level, leaving interior walls out (exterior faces; interior faces for ceilings).
level id or name optional Level id or name (default: the lowest level).
offset number optional Floors: top above the level (default 0). Ceilings: bottom above the level (default 2.6). Roofs: base above the level (default: top of the tallest wall).
openings [[[x, y], …], …] optional Openings through the slab (shafts, stairwells): closed outlines inside the boundary, apart from each other.
type id or name optional Type id or name (default: the category’s default type).

floor_opening_add

edit — Add an opening (a shaft, a stairwell) to a floor: a closed outline inside its boundary, apart from its other openings.

Parameter Type   Description
id integer required Floor id.
outline [[x, y], …] required Outline of the opening, at least 3 points.

floor_opening_remove

edit — Remove one opening of a floor (by its index in the floor’s openings).

Parameter Type   Description
id integer required Floor id.
index integer required Opening index, from 0.

ceiling_create

edit — Create a ceiling from an outline (or the inside of the loop of walls).

Parameter Type   Description
boundary [[x, y], …] optional Closed outline (at least 3 points); omit with from_walls or curves.
curves [JSON, …] optional The outline drawn with curves (lines, arcs, circles, ellipses, rectangles, polygons) instead of boundary; loops inside the outline are openings (floors and roofs). The element keeps the curves (see sketch_get).
from_walls boolean optional Follow the outer boundary of the walls of the level, leaving interior walls out (exterior faces; interior faces for ceilings).
level id or name optional Level id or name (default: the lowest level).
offset number optional Floors: top above the level (default 0). Ceilings: bottom above the level (default 2.6). Roofs: base above the level (default: top of the tallest wall).
type id or name optional Type id or name (default: the category’s default type).

roof_create

edit — Create a roof over an outline (or the loop of walls): flat by default; change its shape (shed, gable, hip) with element_set.

Parameter Type   Description
boundary [[x, y], …] optional Closed outline (at least 3 points); omit with from_walls or curves.
curves [JSON, …] optional The outline drawn with curves (lines, arcs, circles, ellipses, rectangles, polygons) instead of boundary; loops inside the outline are openings (floors and roofs). The element keeps the curves (see sketch_get).
from_walls boolean optional Follow the outer boundary of the walls of the level, leaving interior walls out (exterior faces; interior faces for ceilings).
holes [[[x, y], …], …] optional Openings through the roof (courtyards): closed outlines inside the boundary, apart from each other. Pitched roofs slope down to their eaves too.
level id or name optional Level id or name (default: the lowest level).
offset number optional Floors: top above the level (default 0). Ceilings: bottom above the level (default 2.6). Roofs: base above the level (default: top of the tallest wall).
overhang number optional Overhang beyond the outline, meters (default 0.5).
type id or name optional Type id or name (default: the category’s default type).

roof_edge_set

edit — Set the slope of one edge of a gable or hip roof’s outline (edge i runs from outline point i to the next): 0 makes it a gable end, a positive slope an eave rising at that slope, null returns it to the shape’s own.

Parameter Type   Description
edge integer required Edge index, from 0.
id integer required Roof id.
slope number optional Slope as rise over run (0.5 = 50 %), 0 for a gable end, or null for the roof’s slope.

roof_opening_remove

edit — Remove one opening of a roof (by its index in the roof’s holes).

Parameter Type   Description
id integer required Roof id.
index integer required Opening index, from 0.

room_create

edit — Create a room at a point enclosed by room-bounding walls (its boundary follows the walls).

Parameter Type   Description
point [x, y] required A point inside the room.
height number optional Upper limit above the level (default: the level’s height).
level id or name optional Level id or name (default: the lowest level).
name string optional Default: the room default name.
number string optional Default: the next free number.

grid_create

edit — Create a grid line. Without name it takes the next name of its series: the one after the most recently placed grid parallel to it (1 → 2, A → B, Z → AA, A1 → A2, 1.1 → 1.2); a grid across the existing ones starts a new series (letters across numbered grids, numbers otherwise). Names given this way are unique among the grids.

Parameter Type   Description
end [x, y] required End point.
start [x, y] required Start point (where the bubble is).
level id or name optional Level id or name (default: the lowest level).
name string optional Grid name (default: the next name of its series).

column_create

edit — Place a column; its top goes to the level above (or height when there is none).

Parameter Type   Description
position [x, y] required Center of the column in plan.
height number optional Unconnected height (default: the level’s height).
level id or name optional Level id or name (default: the lowest level).
rotation number optional Rotation in plan, degrees.
structural boolean optional Load-bearing (default true); an architectural column is cut by the walls it is joined with.
top_level id or name optional Level the top is attached to (default: the level above).
top_offset number optional Offset of the top from top_level, meters.
type id or name optional Type id or name (default: the category’s default type).

beam_create

edit — Create a beam from start to end; its location line is top_offset above the level (default: the level’s height), at the top of the section unless vertical says otherwise.

Parameter Type   Description
end [x, y] required End of the beam axis.
start [x, y] required Start of the beam axis.
end_offset number optional Elevation of the location line at the end, when it differs from the start (a sloped beam).
lateral string optional Line across the section the axis follows: center (default), left or right face.
level id or name optional Level id or name (default: the lowest level).
top_offset number optional Elevation of the location line above the level, meters (default: the level height).
type id or name optional Type id or name (default: the category’s default type).
vertical string optional Height of the section at the location elevation: top (default), center or bottom.

columns_at_grids

edit — Place a column at every intersection of grid lines on a level, skipping places that already have a column. Returns the new ids (created) and how many intersections were skipped.

Parameter Type   Description
grids [id, …] optional Grid ids (default: every grid).
height number optional Unconnected height (default: the level’s height).
level id or name optional Level id or name (default: the lowest level).
rotation number optional Rotation in plan, degrees.
structural boolean optional Load-bearing (default true).
top_level id or name optional Level the tops are attached to (default: the level above).
top_offset number optional Offset of the tops from top_level, meters.
type id or name optional Column type id or name (default: the category’s default type).

beams_on_grids

edit — Place beams along grid lines: on each grid, a beam between each pair of neighboring columns of the level whose centers lie on it. Spans that already have a beam are skipped.

Parameter Type   Description
grids [id, …] optional Grid ids (default: every grid).
level id or name optional Level id or name (default: the lowest level).
top_offset number optional Top of the beams above the level, meters (default: the level height).
type id or name optional Beam type id or name (default: the category’s default type).

beams_between_columns

edit — Place beams from column to column in the order given (a chain), on the level of the first column. Spans that already have a beam are skipped.

Parameter Type   Description
columns [id, …] required Column ids, at least two, in the order to connect.
top_offset number optional Top of the beams above the level, meters (default: the level height).
type id or name optional Beam type id or name (default: the category’s default type).

slab_join_supports

edit — Join each slab with the structure that carries it: beams, structural columns and structural walls whose bodies overlap it (default: every floor, or every floor of level). Beams and columns cut the slab, the slab cuts walls, and the shared volume counts once. Pairs already joined are left as they are.

Parameter Type   Description
floors [id, …] optional Floor ids (default: every floor, or those of level).
level id or name optional Level id or name, when no floors are given.

structure_number

edit — Number the marks of beams, columns and pad footings (default: all three) in reading order: horizontal beams top to bottom then left to right, the other beams left to right then top to bottom, columns and footings top to bottom then left to right. Marks are a prefix per category (V, P, S in Portuguese; B, C, F in English) and a number.

Parameter Type   Description
categories [string, …] optional Categories to number: beam, column and/or foundation (default: all three).
level id or name optional Level id or name (default: every level, numbered as one sequence per category).

brace_create

edit — Create a brace: a member between two points in space ([x, y, z], z above the level), its axis through both. Its ends must not be one above the other.

Parameter Type   Description
end [number, …] required End point [x, y, z].
start [number, …] required Start point [x, y, z].
level id or name optional Level id or name (default: the lowest level).
type id or name optional Beam type id or name (default: the category’s default type).

braces_between_columns

edit — Brace the bay between two columns: x (default) crosses two members from the base of each column to the top of the other, diagonal places one from the base of the first to the top of the second.

Parameter Type   Description
columns [id, …] required The two column ids.
pattern string optional x or diagonal.
type id or name optional Beam type id or name (default: the category’s default type).

truss_create

edit — Lay out a plane truss from start to end: a bottom and a top chord height apart, panels panels and the web of pattern (pratt, the default, howe or warren). Pratt and Howe trusses get a post at every panel point, Warren trusses only at the ends; posts are columns. The members form a group, so the truss moves as one.

Parameter Type   Description
end [x, y] required End of the truss in plan.
height number required Distance between the chord axes, meters.
start [x, y] required Start of the truss in plan.
bottom_offset number optional Elevation of the bottom chord’s axis above the level (default: the level height minus height).
chord_type id or name optional Beam type of the chords (default: the category’s default type).
level id or name optional Level id or name (default: the lowest level).
panels integer optional Number of panels (default: about one per 1.5 m).
pattern string optional pratt, howe or warren.
post_type id or name optional Column type of the posts (default: the first profile column type).
web_type id or name optional Beam type of the diagonals (default: the chord type).

rebar_create

edit — Add a set of bars to a beam or column: layout is top or bottom (beams), perimeter (columns) with count bars, or stirrups every spacing. The bars are cover inside the faces (default 2.5 cm) and follow the host.

Parameter Type   Description
host integer required Beam or column id.
layout string required top, bottom, perimeter or stirrups.
count integer optional Number of longitudinal bars (default: 2 in beams, 4 in columns).
cover number optional Concrete cover, meters (default 0.025).
spacing number optional Stirrup spacing, meters (default 0.15).
type id or name optional Bar type id or name (default: the type nearest 10 mm, or 5 mm for stirrups).

rebar_typical

edit — Give beams and columns without reinforcement a typical one: beams two (three when 20 cm wide or more) 10 mm bars at the bottom, two 8 mm at the top and 5 mm stirrups every 15 cm; columns four 10 mm bars (six in round ones) and 5 mm ties every 15 cm. Default: every beam and column of level (or of the project).

Parameter Type   Description
elements [id, …] optional Beam and column ids (default: all of level, or of the project).
level id or name optional Level id or name, when no elements are given.

analytical_model

query — The analytical model of the structure: structural columns and beams as members along their center lines between shared nodes. Beams framed into columns end on the column axis, beams ending on beams end on their line, and members are split where others connect.

No parameters.

analytical_export

file — Write the analytical model (as analytical_model returns it) to a JSON file.

Parameter Type   Description
path string required Path of the .json file to write.

footing_create

edit — Place a pad footing centered at position; its top is top_offset above the level (default 0).

Parameter Type   Description
position [x, y] required Center of the pad in plan.
level id or name optional Level id or name (default: the lowest level).
rotation number optional Rotation in plan, degrees.
top_offset number optional Top above the level, meters (default 0).
type id or name optional Pad footing type id or name (default: the first pad type).

strip_footing_create

edit — Place a strip footing (a ground beam) centered on the line start-end; its top is top_offset above the level (default 0). Strips meet at corners and tees like beams.

Parameter Type   Description
end [x, y] required End of the strip’s center line.
start [x, y] required Start of the strip’s center line.
level id or name optional Level id or name (default: the lowest level).
top_offset number optional Top above the level, meters (default 0).
type id or name optional Strip footing type id or name (default: the first strip type).

foundation_slab_create

edit — Create a foundation slab (a raft) from an outline or under the loop of walls of the level; offset is its top above the level (default 0).

Parameter Type   Description
boundary [[x, y], …] optional Closed outline (at least 3 points); omit with from_walls or curves.
curves [JSON, …] optional The outline drawn with curves (lines, arcs, circles, ellipses, rectangles, polygons) instead of boundary; loops inside the outline are openings (floors and roofs). The element keeps the curves (see sketch_get).
from_walls boolean optional Follow the outer boundary of the walls of the level, leaving interior walls out (exterior faces; interior faces for ceilings).
level id or name optional Level id or name (default: the lowest level).
offset number optional Floors: top above the level (default 0). Ceilings: bottom above the level (default 2.6). Roofs: base above the level (default: top of the tallest wall).
type id or name optional Type id or name (default: the category’s default type).

footings_under_columns

edit — Place a pad footing under each column (default: every column of the level), centered and turned with it, its top at the column’s base. Columns that already stand on a pad are skipped.

Parameter Type   Description
columns [id, …] optional Column ids (default: every column of level).
level id or name optional Level id or name, when no columns are given (default: the lowest level).
type id or name optional Pad footing type id or name (default: the first pad type).

strip_footings_under_walls

edit — Place a strip footing under each wall (default: every wall of the level), along its body’s centerline, its top at the wall’s base. Walls that already have a strip are skipped; strips meet at corners like beams.

Parameter Type   Description
level id or name optional Level id or name, when no walls are given (default: the lowest level).
type id or name optional Strip footing type id or name (default: the first strip type).
walls [id, …] optional Wall ids (default: every wall of level).

stair_create

edit — Create a stair starting at start (the middle of its first riser) and rising along direction up to the level above (or height). Risers and treads follow the type (the fewest risers within its maximum, and a fixed tread or one from Blondel’s formula 2 × riser + tread) unless risers or tread set them: the riser height is then the height over the risers. shape lays it out straight, with a landing, L- or U-shaped, in three flights round two landings, or around a center. The top floor is the last step: a stair ends with a riser, not a tread.

Parameter Type   Description
start [x, y] required Start of the run (center of the first step’s edge).
direction number optional Direction of the first flight in plan, degrees counter-clockwise from +X.
gap number optional Clear gap between the flights of a U-shaped stair, meters (default 0.1).
height number optional Height when there is no level above (default 3).
inner_radius number optional Radius of the inner edge of a spiral stair, meters (default 0.15).
landing number optional Landing depth along the first flight, meters (default: the stair width).
level id or name optional Level id or name (default: the lowest level).
number_start integer optional Number of the first tread (default 1), from -9999 to 9999: another value continues the count of a stair below, for instance.
numbers boolean optional Number the steps in plans: the treads (winders included, landings not) and the floor the stair arrives at (default false).
posts [[string, …], …] optional Posts under the landings of an assembled stair, down to its base: a list per landing (up the stair) of places round its edge, named walking onto it (front: where the stair arrives; inner: the side it turns to): front_outer, front, front_inner, inner, back_inner, back, back_outer, outer. Only places its beams reach take a post (see stair_check); none by default.
risers integer optional Riser count (default: the fewest within the type’s maximum riser).
shape string optional Plan shape: straight (default), straight_landing, l_shaped, u_shaped, three_flight (up, across and back, with a landing at each corner) or spiral.
split integer optional Risers of the first flight (default: half of them; a third on a three-flight stair).
split2 integer optional Risers of the middle flight of a three-flight stair (default: half of those left).
top_level id or name optional Level the stair rises to (default: the level above).
tread number optional Tread depth, meters (default: the type’s).
turn string optional Side the stair turns to, walking up: left (default) or right.
type id or name optional Type id or name (default: the category’s default type).
winders integer optional Winder treads in the corner of an L-shaped stair instead of a landing (2 to 6).

stair_check

query — Check a stair’s steps: riser count and height, tread on the walking line, Blondel’s step 2 × riser + tread and the rules of its type they break (riser out of range, short tread, step out of the Blondel range, short landing). landings lists each landing’s elevation and the places round its edge where a post can stand under an assembled stair (where its beams reach the edge), with their plan points and whether one stands there.

Parameter Type   Description
id integer required Stair element id.

stair_railings_add

edit — Add railings along the sides of a stair or a ramp: they follow its flights, landings and turns (at the pitch of the nosings on stairs), and go with it when it changes, moves or is deleted.

Parameter Type   Description
id integer required Stair or ramp element id.
inset number optional Distance in from the edge of the stair, meters (default 0.05).
near [x, y] optional A point [x, y] in plan: without side, the railing goes on the side nearest it (where a click picked the stair).
side string optional left, right or both (default), walking up.
type id or name optional Railing type id or name (default: the category’s default type).

railing_host_set

edit — Put a railing on a stair or ramp (host), or take it off (detach). On a host it follows the host’s side (default: the side its path runs nearest), inset in from the edge, and moves, turns and goes with it; taken off, it keeps the path it had in plan, at its level plus base_offset. A hosted railing can also change only its side or inset.

Parameter Type   Description
id integer required Railing element id.
detach boolean optional Take the railing off its host.
host integer optional Stair or ramp element id to follow.
inset number optional Distance in from the edge of the host, meters (default 0.05, or the railing’s own).
side string optional left or right, walking up.

ramp_create

edit — Create a ramp starting at start (the middle of its foot) and rising along direction up to the level above (or height). Flights follow the type’s rules: at most its steepest slope and its highest rise per flight, with landings between them; shape lays them out in line, L- or U-shaped (switchback), or as a helix. A project without a ramp type gets one.

Parameter Type   Description
start [x, y] required Foot of the ramp (middle of its lower edge).
direction number optional Direction of the first flight in plan, degrees counter-clockwise from +X.
gap number optional Clear gap between the flights of a U-shaped ramp, meters (default 0.1).
height number optional Height when there is no level above (default 3).
inner_radius number optional Radius of the inner edge of a spiral ramp, meters (default 1.5).
landing number optional Landing length, meters (default: the type’s shortest landing).
level id or name optional Level id or name (default: the lowest level).
shape string optional Plan shape: straight (default), l_shaped, u_shaped or spiral.
slope number optional Slope of the flights, percent (default: the steepest the type allows).
top_level id or name optional Level the ramp rises to (default: the level above).
turn string optional Side the ramp turns to, going up: left (default) or right.
type id or name optional Type id or name (default: the category’s default type).

ramp_check

query — Check a ramp: its slope, flights (count, rise and run of each) and the rules of its type it breaks (too steep, a flight rising too high, a short landing).

Parameter Type   Description
id integer required Ramp element id.

roof_check

query — Check a roof against its covering: the least slope its tiles take and the roof’s slopes, the area covered, the number of tiles and their weight, and its framing (purlins, rafters, battens and truss members: lengths, the number of trusses and the volume). The covering and framing are set on the roof’s type (type_set with covering and framing).

Parameter Type   Description
id integer required Roof element id.

mass_create

edit — Create a conceptual mass: outline extruded height up from its level (plus base_offset), or lofted to another outline (top, or the base outline set in by top_inset). Mass floors are taken at every level the mass spans unless floors lists them. A project without a mass type gets one.

Parameter Type   Description
base_offset number optional Offset of the base from the level elevation, meters (default 0).
curves [JSON, …] optional The base outline drawn with curves (lines, arcs, circles, ellipses, rectangles, polygons) in one loop, instead of outline; the mass keeps them.
floors [id or name, …] optional Levels (ids or names) where mass floors are taken (default: every level the mass spans).
height number optional Height above the base, meters (default: up to the level above, else 3).
level id or name optional Level id or name (default: the lowest level).
outline [[x, y], …] optional Base outline [[x, y], …] in plan, closed (at least three points); or curves.
top [[x, y], …] optional Top outline of a loft [[x, y], …] (default: the base outline, an extrusion).
top_inset number optional Loft to the base outline set in by this distance, meters (instead of top).
type id or name optional Type id or name (default: the category’s default type).

sketch_get

query — The curves an element’s outline is drawn with: its sketch, or lines along its outline and openings when it has none (floors, ceilings, roofs, masses and the other sketched elements, regions among them).

Parameter Type   Description
id integer required Element id.

sketch_set

edit — Draw an element’s outline again from curves (edit its boundary): floors, roofs and regions take the loops inside the outline as their openings; ceilings and masses take one loop. The element keeps the curves, so sketch_get gives them back. A terrain’s measured points can change in the same step (points).

Parameter Type   Description
curves [JSON, …] required The curves, closed into loops.
id integer required Element id (a floor, ceiling, roof, mass, shaft, terrain, pad, or a filled or masking region).
points [[number, …], …] optional Terrain only: measured points [[x, y, z], …] replacing the current ones (points that repeat another in plan are dropped).

mass_floors_set

edit — Choose the levels where a mass takes mass floors: levels (ids or names), or every level it spans when levels is left out; an empty list takes none.

Parameter Type   Description
id integer required Mass element id.
levels [id or name, …] optional Levels (ids or names); left out: every level the mass spans.

mass_floors

query — The mass floors of a mass: for each, its level, elevation, area and perimeter (and outline), with the gross floor area and the volume.

Parameter Type   Description
id integer required Mass element id.

mass_type_create

edit — Create a mass type, shown in material (default: the project’s first material).

Parameter Type   Description
material string optional Material name.
name string optional Type name (default: the template’s mass name).

sweep_create

edit — Create a swept profile: the profile of its type carried along path in plan, base_offset above the level, on the left of the path walking along it (flip puts it on the right); closed runs the path back to its first point (around a room). A project without a sweep type gets one (a baseboard).

Parameter Type   Description
path [[x, y], …] required Points of the path in plan (at least 2; 3 when closed).
base_offset number optional Height of the path above the level, meters (default 0).
closed boolean optional Run the path back to its first point.
flip boolean optional Put the profile on the right of the path.
level id or name optional Level id or name (default: the lowest level).
type id or name optional Type id or name (default: the category’s default type).

sweep_type_create

edit — Create a sweep type: its profile drawn as points [x, y] (x across, to the left of the path; y up from it, meters) or as curves (lines, arcs, circles, rectangles… making one closed outline), shown in material. Without a profile it is a baseboard 1.5 cm × 10 cm.

Parameter Type   Description
curves [JSON, …] optional The profile drawn with curves instead of points.
material string optional Material name (default: the project’s first material).
name string optional Type name (default: the template’s baseboard name).
profile [[x, y], …] optional The profile’s points, in order (a closed outline that does not cross itself).

sweep_profile_set

edit — Redraw the profile of a sweep type, as points [x, y] or curves; every sweep of the type follows. The type keeps the curves (type_get shows them as its sketch), so arcs stay arcs when the profile is edited again.

Parameter Type   Description
type id or name required Sweep type id or name.
curves [JSON, …] optional The profile drawn with curves instead of points.
profile [[x, y], …] optional The profile’s points, in order.

shaft_create

edit — Create a shaft: a vertical opening with outline in plan (or drawn with curves), from its level plus base_offset up to top_level (plus top_offset) or height. Every floor, ceiling and roof it passes through is cut where the outline lies inside it, clear of its own openings; the cuts follow the shaft when it moves, changes or is deleted. A project without a shaft type gets one.

Parameter Type   Description
base_offset number optional Bottom above the level, meters (default 0).
curves [JSON, …] optional The outline drawn with curves (lines, arcs, circles, rectangles…).
height number optional Height when there is no level above, meters (default 3).
level id or name optional Level id or name of the bottom (default: the lowest level).
outline [[x, y], …] optional Outline [[x, y], …] in plan, closed (at least three points); or curves.
top_level id or name optional Level the shaft rises to (default: the highest level above its own).
top_offset number optional Top above top_level, meters (default 0).
type id or name optional Type id or name (default: the category’s default type).

shaft_type_create

edit — Create a shaft type (shafts have no properties of their own; types name them).

Parameter Type   Description
name string optional Type name (default: the template’s shaft name).

topography_create

edit — Create a terrain surface (topography): measured points [x, y, z] inside a closed boundary (or one drawn with curves; with neither, the convex hull of the points). The points are triangulated with the boundary, whose vertices take the elevations the points give them; the earth closes down to a flat base base_depth below the lowest point. Points outside the boundary are kept: they give the boundary its elevations but are not vertices of the surface. A project without a terrain type gets one (and an earth material).

Parameter Type   Description
base_depth number optional Depth of the flat base below the lowest point of the surface, meters (default 2).
boundary [[x, y], …] optional Boundary [[x, y], …] in plan, closed (at least three points); or curves.
curves [JSON, …] optional The boundary drawn with curves (lines, arcs, circles, rectangles…).
level id or name optional Level id or name the elevations are measured from (default: the lowest level).
points [[number, …], …] optional Measured points [[x, y, z], …]: plan position and elevation above the level, meters.
type id or name optional Type id or name (default: the category’s default type).

topography_points_set

edit — Edit the measured points of a terrain surface: replace them all (points), or change elevations (set), remove points (remove, by index) and add new ones (add), in that order. Indices refer to the points before remove and add: the current ones, or points when it is given. Points that repeat another in plan are dropped (the first is kept); the answer says how many.

Parameter Type   Description
id integer required Terrain element id.
add [[number, …], …] optional Points [[x, y, z], …] to add.
points [[number, …], …] optional All the points [[x, y, z], …], replacing the current ones.
remove [id, …] optional Indices of points to remove.
set [object, …] optional New elevations [{index, z}, …].

topography_type_create

edit — Create a terrain type: the earth material sections cut it in, and its contour lines every contour_interval meters, every major_every-th a major (heavier) one.

Parameter Type   Description
contour_interval number optional Spacing of the contour lines, meters (default 1).
major_every integer optional Every this many contours, a major one (default 5).
material string optional Material name (default: the project’s earth material, added if missing).
name string optional Type name (default: the template’s terrain name).

pad_create

edit — Create a building pad: a flat area at elevation (meters above the terrain’s level) inside a closed outline (or one drawn with curves), graded into a terrain (host) with cut and fill slopes out to the existing ground. Slopes are the horizontal run per unit of rise (cut_slope 1 is 1:1); without them the pad uses its type’s. Pads of one terrain apply in creation order. A project without a pad type gets one.

Parameter Type   Description
elevation number required Elevation of the pad above the terrain’s level, meters.
curves [JSON, …] optional The outline drawn with curves (lines, arcs, circles, rectangles…).
cut_slope number optional Run per unit of rise of the cut slope (default: the type’s).
fill_slope number optional Run per unit of rise of the fill slope (default: the type’s).
host integer optional Terrain element id (default: the terrain on level whose boundary holds the outline’s center).
level id or name optional Level id or name where the default terrain is looked for (default: any level).
outline [[x, y], …] optional Outline [[x, y], …] in plan, closed (at least three points); or curves.
type id or name optional Type id or name (default: the category’s default type).

pad_type_create

edit — Create a building pad type: the run per unit of rise of its cut and fill slopes.

Parameter Type   Description
cut_slope number optional Run per unit of rise of the cut slope (default 1).
fill_slope number optional Run per unit of rise of the fill slope (default 1.5).
name string optional Type name (default: the template’s pad name).

mass_face_move

edit — Push or pull a face of a mass distance meters outward (inward when negative): top changes its height, bottom its base offset and height, and side (with side, the index of the base outline’s edge from that point to the next) moves that side, the sides beside it keeping their directions. A loft’s sides are not moved.

Parameter Type   Description
distance number required Distance outward, meters (negative: inward).
face string required top, bottom or side.
id integer required Mass element id.
side integer optional The side’s edge of the base outline (with face: "side").

mass_walls_create

edit — Walls by face: a wall over each side of a mass extruded straight up (sides: the base outline’s edges, by default all), its exterior face on the mass’s face, from the mass’s base up its height. Walls meeting at the mass’s corners join. A loft’s slanted sides take no walls.

Parameter Type   Description
id integer required Mass element id.
sides [id, …] optional Edges of the base outline to put walls on (default: every edge).
type id or name optional Wall type id or name (default: the category’s default type).

mass_slabs_create

edit — Floors from mass floors: a floor on each mass floor of a mass (or those at levels), its outline the mass’s at that level and its top at the level.

Parameter Type   Description
id integer required Mass element id.
levels [id or name, …] optional Levels (ids or names) of the mass floors to build (default: all of them).
type id or name optional Floor type id or name (default: the category’s default type).

mass_roof_create

edit — Roof by face: a flat roof on the top face of a mass, over its top outline, on the mass’s level at the height of its top.

Parameter Type   Description
id integer required Mass element id.
overhang number optional How far the eaves reach past the top outline, meters (default 0).
type id or name optional Roof type id or name (default: the category’s default type).

ramp_type_create

edit — Create a ramp type: a slab thickness thick and width wide, within the accessibility rules given (by default 8.33 % slope, 0.80 m rise per flight and 1.20 m landings).

Parameter Type   Description
max_flight_rise number optional Highest rise of one flight, meters (default 0.80).
max_slope number optional Steepest slope, percent (default 8.33).
min_landing number optional Shortest landing, meters (default 1.20).
name string optional Type name (default: the template’s ramp name).
thickness number optional Slab thickness, meters (default 0.15).
width number optional Width, meters (default 1.2).

railing_create

edit — Create a railing along a path (at least 2 points).

Parameter Type   Description
path [[x, y], …] required Points of the railing path (at least 2).
base_offset number optional Base above the level, meters.
level id or name optional Level id or name (default: the lowest level).
type id or name optional Type id or name (default: the category’s default type).

component_place

edit — Place a component (furniture, plumbing fixture, electrical device…) of a component type. Electrical devices default to their usual mounting height (outlets 0.30 m, switches 1.10 m, boards 1.30 m, wall lights 2.10 m, ceiling lights at the level height) and may be put on a circuit.

Parameter Type   Description
position [x, y] required Insertion point in plan.
type id or name required Component type id or name.
base_offset number optional Base above the level, meters (default 0; for devices, their mounting height).
level id or name optional Level id or name (default: the lowest level).
rotation number optional Rotation in plan, degrees.
system id or name optional Circuit or system id, name or code to connect it to.

Building services

pipe_create

edit — Create a pipe from start to end (or a vertical riser at start up or down to end_offset), in a plumbing system. Its center line starts offset above the level (default: where it starts on a pipe of its system, such as the end of a run or a riser; else 0.60 m for supply and vent pipes, -0.30 m for drains). Drains fall along the flow by slope (percent; default 2 % up to 75 mm, 1 % above); other pipes are level unless end_offset or slope says otherwise.

Parameter Type   Description
start [x, y] required Start of the center line in plan.
end [x, y] optional End in plan (default: the start, for a riser).
end_offset number optional Elevation of the end above the level, meters (overrides slope).
level id or name optional Level id or name (default: the lowest level).
offset number optional Elevation of the start above the level, meters.
slope number optional Fall from the start to the end, percent of the plan length.
system id or name optional Plumbing system id, name or code (e.g. “AF”).
type id or name optional Pipe type id or name (default: the first pipe type).

conduit_create

edit — Create a conduit from start to end (or a vertical drop at start to end_offset) carrying circuits. It runs offset above the level (default: where it starts on another conduit, such as the end of a run or a vertical drop; else in the slab above, at the level height).

Parameter Type   Description
start [x, y] required Start of the center line in plan.
circuits [id or name, …] optional Circuits it carries: ids, names or codes.
end [x, y] optional End in plan (default: the start, for a vertical drop).
end_offset number optional Elevation of the end above the level, meters (default: as the start).
level id or name optional Level id or name (default: the lowest level).
offset number optional Elevation of the start above the level, meters.
type id or name optional Conduit type id or name (default: the first conduit type).

systems_list

query — List the plumbing systems and electrical circuits with what is in them: element count, pipe or conduit length, fixture units and supply weights of plumbing fixtures, and the devices and load of circuits.

No parameters.

system_create

edit — Create a plumbing system or an electrical circuit. kind is cold_water, hot_water, sanitary, vent, rainwater, power or lighting; circuits may name the board (panel, a component element; default: the project’s only board, if it has one) feeding them and their voltage (default 127 V). A circuit’s code defaults to the next free number on its board.

Parameter Type   Description
kind string required What it carries.
code string optional Short code shown in tags (e.g. “AF”, a circuit number).
color [id, …] optional Display color [r, g, b] (default: by kind).
name string optional Name (default: the code, or the kind’s name).
panel integer optional Circuits: the distribution board feeding it (element id; default: the only board).
voltage number optional Circuits: nominal voltage, volts.

system_set

edit — Change a system or circuit: params is a merge patch over the values systems_list shows (name, code, kind, color, panel, voltage).

Parameter Type   Description
params JSON required Values to change.
system id or name required System id, name or code.

system_delete

edit — Delete a system or circuit; its pipes, conduits and devices stay, outside any system.

Parameter Type   Description
system id or name required System id, name or code.

system_assign

edit — Put elements in a system or circuit, or take them out (remove). A pipe belongs to one system (it moves); a conduit carries several circuits (one is added); a fixture or device connects to one.

Parameter Type   Description
elements [id, …] required Pipe, conduit and component ids.
system id or name required System id, name or code.
remove boolean optional Take them out instead.

circuit_loads

query — The load schedule of the circuits (of one board, or all): per circuit its devices, installed load (VA) and current at its voltage, with the total per board.

Parameter Type   Description
panel integer optional Distribution board element id (default: every circuit).

mep_fittings

query — The fittings where pipes and conduits meet, counted by category, kind, angle (elbows), diameters and system: the fittings takeoff.

Parameter Type   Description
level id or name optional Level id or name (default: every level).

mep_connect

edit — Connect plumbing fixtures and electrical devices to the nearest pipe or conduit of their level (or riser of another floor passing through it). A fixture gets a branch to the nearest sanitary drain (falling towards it, with a drop from the floor), and to the nearest cold (and, when it takes it, hot) water pipe; a device gets a conduit to the nearest conduit, with a drop from its mounting height, carrying its circuit. A component with connectors gets a branch from each connector to the nearest run of a system of the connector’s kind, from the connector’s position and of its diameter (leaving vertically or horizontally as the connector points). Branches end on the runs, which forms tees. system connects only to that system or circuit.

Parameter Type   Description
elements [id, …] required Fixture and device ids.
system id or name optional Only to this system or circuit (id, name or code).

mep_sizing

query — Size the building services from their networks (simplified tables of common Brazilian practice): drains by the fixture units upstream, water pipes by the flow from the fixtures’ weights (at most 3 m/s), circuits by their current (breaker, copper conductor) and the voltage drop to the farthest device (at most 4 %). Diameters in mm, lengths in m.

No parameters.

mep_size_apply

edit — Give each sized pipe the smallest pipe type of the project at least as wide as mep_sizing requires. Pipes already wide enough keep their type unless downsize is set.

Parameter Type   Description
downsize boolean optional Also narrow pipes wider than required.

Modifying elements

elements_delete

edit — Delete elements (doors and windows of deleted walls go too; pinned elements stay).

Parameter Type   Description
ids [id, …] required Element ids.

elements_move

edit — Move elements by delta (walls take their doors and windows; doors and windows alone slide along their wall).

Parameter Type   Description
delta [x, y] required Displacement [dx, dy] in meters.
ids [id, …] required Element ids.

elements_copy

edit — Copy elements by delta; with count > 1, a linear array of that many copies spaced by delta.

Parameter Type   Description
delta [x, y] required Displacement [dx, dy] of the first copy, meters (the next ones repeat it).
ids [id, …] required Element ids.
count integer optional Number of copies (default 1, at most 1000).

elements_rotate

edit — Rotate elements by angle degrees (counter-clockwise) about center (default: the center of their extents); with copy, rotated copies.

Parameter Type   Description
angle number required Angle in degrees, counter-clockwise.
ids [id, …] required Element ids.
center [x, y] optional Center of rotation (default: the center of the elements’ extents).
copy boolean optional Rotate copies, keeping the originals.

elements_mirror

edit — Mirror elements across an axis: two points, or the line of a wall, grid, beam or railing (axis_element). Copies by default (copy: false moves them).

Parameter Type   Description
ids [id, …] required Element ids.
axis [[x, y], [x, y]] optional Two points of the axis.
axis_element integer optional Id of an element whose line is the axis.
copy boolean optional Keep the originals and mirror copies (default true).

elements_pin

edit — Pin elements (they cannot be moved or deleted) or unpin them.

Parameter Type   Description
ids [id, …] required Element ids.
pinned boolean required true to pin, false to unpin.

element_flip

edit — Flip a door or window to the other side of its wall (facing) and/or to the other jamb (hand).

Parameter Type   Description
id integer required Id of the door or window.
facing boolean optional Flip to the other side of the wall.
hand boolean optional Flip the hinge to the other jamb.

elements_turn

edit — Turn elements a quarter: components and columns rotate 90° about their insertion point; doors and windows flip to the other side of their wall (the Space key on a selection). Others and pinned elements are left alone.

Parameter Type   Description
ids [id, …] required Element ids.

elements_export

query — The elements as a portable set for elements_paste: doors and windows of the given walls come along. The set keeps type, level and view ids, so it pastes into this project or one sharing them.

Parameter Type   Description
ids [id, …] required Element ids.

elements_paste

edit — Paste a set from elements_export moved by delta, on level when given (else on their own levels). Elements whose type, level, view or wall does not exist here are skipped. Returns the new ids.

Parameter Type   Description
elements JSON required The elements of an elements_export result.
delta [x, y] optional Displacement [dx, dy], meters (default: none).
level id or name optional Level id or name to paste on (default: each element’s own level).

wall_join

edit — Allow or disallow joining at one end of a wall or beam. A wall end joins other walls; a beam end stops at the face of a structural column it lies in, or meets other beams at the same depth (mitered corners, butt joints).

Parameter Type   Description
end string required start or end.
id integer required Wall or beam id.
joined boolean required true to allow joining at that end, false to keep it free.

wall_attach

edit — Attach the tops of walls to a roof, ceiling or floor (top), or take them off it (detach). Under the element a wall rises or drops to its underside, following its slope (a gable wall ends in a triangle); elsewhere it keeps its own top. The walls follow the element when it changes.

Parameter Type   Description
ids [id, …] required Wall ids.
detach boolean optional Take the tops off what they are attached to.
top integer optional The roof, ceiling or floor to attach the tops to.

geometry_join

edit — Join the geometry of two elements that touch or overlap (walls, floors, ceilings, roofs, columns, beams, stairs, railings, components). Where they overlap, one cuts the other: structural columns and beams cut walls, floors, ceilings and roofs; floors, ceilings and roofs cut walls; walls cut architectural columns; between equals the first cuts the second. The shared volume is counted once, and plans and sections draw two elements cut in the same material as one piece.

Parameter Type   Description
first integer required The first element.
second integer required The second element.

geometry_unjoin

edit — Unjoin the geometry of two joined elements: each keeps its whole body again.

Parameter Type   Description
first integer required The first element.
second integer required The second element.

group_create

edit — Group elements: selecting one of them selects them all, so they move, copy and rotate together. Elements already in a group leave it.

Parameter Type   Description
ids [id, …] required The elements (at least two).
name string optional Group name (default: “Group N”).

group_ungroup

edit — Ungroup: the group goes, its elements stay.

Parameter Type   Description
group integer required Group id (see groups_list, or group in element_get).

trim_corner

edit — Trim or extend two linear elements (walls, beams, grids) to meet at a corner; each pick point marks the part of its element to keep. Arc walls meet lines and other arcs where their circles cross them. Two detail lines meet where their lines, circles or ellipses cross.

Parameter Type   Description
a integer required First element id.
b integer required Second element id.
pick_a [x, y] required A point on the part of a to keep.
pick_b [x, y] required A point on the part of b to keep.

trim_extend

edit — Trim or extend a linear element to the line of a reference element (the circle of an arc wall); the pick point marks the part to keep. Arc walls trim and extend along their circle. A detail line trims or extends to another detail line (also a circle or an ellipse) or to the line of a wall, beam or grid.

Parameter Type   Description
id integer required Element to trim or extend.
pick [x, y] required A point on the part to keep.
reference integer required Id of the element whose line is the boundary.

element_split

edit — Split a linear element (wall, beam, grid) or a detail line at a point; returns the new element. A detail circle or whole ellipse splits into halves, from the point and from the one opposite.

Parameter Type   Description
id integer required Element id.
point [x, y] required Where to split (projected on the element’s line).

element_offset

edit — Copy a linear element parallel at distance (positive: to the left of its direction). Detail lines too: an arc’s or a circle’s copy is concentric (positive: towards the center of a circle); ellipses have no offset.

Parameter Type   Description
distance number required Offset distance, meters: positive to the left of start→end, negative to the right.
id integer required Element id.

element_align

edit — Align an element onto a line of a reference element, in plan: the edge picked on the element (a wall’s face, a column’s side) moves onto the line picked on the reference (a face or side, or the location line of a grid or of an element picked without a point). When the two are not parallel the element first turns about the picked point of its edge. An arc wall moves onto the circle of a concentric arc wall (its radius changes). Alignment is in plan, so the elements may be on different levels (a column above onto the face of the column below).

Parameter Type   Description
id integer required Element to move.
reference integer required Element whose line it moves onto.
pick [x, y] optional Plan point [x, y] near the edge of id that moves onto the reference line (the edge of its plan outline nearest to it). Without it a linear element moves its location line, and other elements their insertion point, onto the line.
reference_pick [x, y] optional Plan point [x, y] near the line of reference to align to (the edge of its plan outline nearest to it, such as a wall face). Without it the reference’s location line is used, which a column or component does not have.

element_move_end

edit — Move one end of a wall, beam or grid (joined wall ends follow).

Parameter Type   Description
end string required start or end.
id integer required Element id.
point [x, y] required New position of that end.

grids_align_ends

edit — Give grids the extents of a reference grid, so their bubbles line up: each grid parallel to the reference (within 1°) has its ends moved along its own line onto the lines through the reference’s ends perpendicular to it (each end to the reference end on its side). Grids that are not parallel and pinned grids are left alone.

Parameter Type   Description
reference integer required Id of the reference grid.
ends string optional Which ends move: both (default), start (the bubble end) or end.
grids [id, …] optional Ids of the grids to align (default: every other grid parallel to the reference).

element_set

edit — Change an element: its level (doors and windows of a wall follow it), type (of the same category), mark, comments, and any of its params as element_get shows them (merged: only the fields given change, e.g. {"height": 2.8} for a wall or {"shape": {"Gable": {"slope": 0.5, "ridge_deg": 0}}} for a roof). The edit is refused if it would leave the model invalid.

Parameter Type   Description
id integer required Element id.
comments string optional New comments.
level id or name optional New level id or name.
mark string optional New mark.
params JSON optional Fields of the element’s parameters to change.
type id or name optional New type id or name (same category).

elements_set

edit — Change several elements at once, in one undo step: a new level (doors and windows of a wall follow it), the same params merged into each (as element_set takes them, e.g. {"base_offset": -1.5} for columns), and the same mark or comments. Every element must take the change, or none changes.

Parameter Type   Description
ids [id, …] required Element ids.
comments string optional New comments of every element.
level id or name optional New level id or name.
mark string optional New mark of every element.
params JSON optional Fields of the elements’ parameters to change.

elements_set_type

edit — Give elements a type (all must be of the type’s category), like Match Type.

Parameter Type   Description
ids [id, …] required Element ids.
type id or name required Type id or name.

Dimensions and text

dimension_create

edit — Place a dimension in a 2D view (points in the view’s drawing coordinates: plan X/Y in plans; horizontal position and height in elevations and sections). Its ends follow the elements (or level lines) their points lie on, so it keeps measuring them. Aligned dimensions measure from a to b, linear ones along a horizontal or vertical direction, ordinate ones from the origin a to b along that direction (a running dimension; see dimension_ordinate_create), angular ones the angle at vertex between the rays through a and b, radial and diameter ones the arc centered at a through b.

Parameter Type   Description
a [x, y] required First point (center for radial and diameter).
b [x, y] required Second point (a point on the arc for radial and diameter).
view id or name required View id or name.
direction string optional Linear and ordinate dimensions: horizontal or vertical (default: the larger extent).
kind string optional aligned (default), linear, ordinate, angular, radial or diameter.
offset number optional Distance of the dimension line from a (left of a→b positive), or the arc radius for angular ones (default 1).
type id or name optional Dimension type id or name (default: the default dimension type).
vertex [x, y] optional Vertex of an angular dimension.

tag_move

edit — Move the tag of an element in a plan (the tag of a door, window, beam, column or footing): by delta from where it is, to offset from its default spot, or back there with reset. A tag moved away from its element gets a leader to it. Each plan keeps its own tag positions.

Parameter Type   Description
id integer required Id of the element the tag names.
view id or name required Plan id or name.
delta [x, y] optional Move by [dx, dy] meters in plan.
offset [x, y] optional Place the tag [dx, dy] meters from its default spot.
reset boolean optional Put the tag back in its default spot.

dimension_chain_create

edit — Place a chain of dimensions on one dimension line (continuous dimensioning): one dimension from each point to the next, all measured along the same direction and drawn on the same line, in one undo step. Points are in the view’s drawing coordinates, as for dimension_create, and each end follows the element (or level line) it lies on. In an aligned chain, segments along the direction are aligned dimensions and the others measure along that direction.

Parameter Type   Description
points [[x, y], …] required The measured points in order (at least 2, at most 500).
view id or name required View id or name.
angle number optional Direction to measure along, degrees counter-clockwise from the X axis (overrides direction and the direction of the first two points).
direction string optional Linear chains: horizontal or vertical (default: the larger extent of the first two points).
kind string optional aligned (default: along the first two points) or linear (horizontal or vertical).
offset number optional Distance of the dimension line from the first point, positive to the left of the direction (default 1).
type id or name optional Dimension type id or name (default: the default dimension type).

dimension_ordinate_create

edit — Place running (ordinate) dimensions on one dimension line: one dimension from the origin (the first point) to each other point, measured along the same direction, each showing its running total from the origin, in one undo step. Points are in the view’s drawing coordinates, as for dimension_create, and each end follows the element (or level line) it lies on, so the totals follow the model; giving one a new value with dimension_set_value moves what its point measures, keeping the origin.

Parameter Type   Description
points [[x, y], …] required The origin, then the measured points (at least 2 in all, at most 500).
view id or name required View id or name.
angle number optional Direction to measure along, degrees counter-clockwise from the X axis (overrides direction).
direction string optional horizontal or vertical (default: along the origin and the second point).
offset number optional Distance of the dimension line from the origin, positive to the left of the direction (default 1).
type id or name optional Dimension type id or name (default: the default dimension type).

dimension_set_value

edit — Give a dimension a new value (meters; degrees for angular dimensions): in plans what its moving end measures moves or stretches; between level lines in elevations and sections the upper level moves. Radial and diameter dimensions are read-only.

Parameter Type   Description
id integer required Dimension element id.
value number required New value: meters, or degrees for angular dimensions.

text_create

edit — Place a text note in a 2D view (points in the view’s drawing coordinates, as for dimensions). Without width it is single-line text (only line breaks in text break it); with width (paper millimeters) it is multiline text wrapped to that width. Leaders point from the text to what it describes, each with one segment or two (with an elbow).

Parameter Type   Description
position [x, y] required Top left corner of the text.
text string required The text; a line break starts a new line.
view id or name required View id or name.
leaders [object, …] optional Leaders from the text.
rotation number optional Rotation in degrees counter-clockwise.
type id or name optional Text type id or name (default: the default text type).
width number optional Wrapping width in paper millimeters (multiline text).

detail_line_create

edit — Draw detail lines in a 2D view (plan, ceiling plan, elevation, section, legend or drafting view): lines, arcs, circles and ellipses in the view’s drawing coordinates (meters, as for dimensions and text notes), shown only in that view, on top of the model. Each curve becomes one element (a polyline is its segments; rectangles and polygons their sides), all in one undo step. Detail lines are left out of 3D views and IFC export; DXF export puts them on a layer named after their style.

Parameter Type   Description
curves [JSON, …] required The curves to draw, as for sketches (line, arc, circle, ellipse, rectangle, polygon).
view id or name required View id or name.
style string optional Line style: thin (default), medium, wide, hidden, dashed, center or dotted, or the name of one of the project’s line styles (line_styles_list).

detail_component_create

edit — Make a detail component (a reusable 2D component for construction details) as a new type named name, in one undo step: from pieces (meters in its frame), or from elements of view (detail lines, filled and masking regions, text notes and other detail components), whose point origin (default: the lower left corner of their extents) becomes the component’s origin. With replace (the default when elements are given) those elements are deleted and the new component is placed where they were. Detail lines keep their pen, regions their fill (solid or pattern; openings as outlines), text notes their text at its printed height, and detail components become nested pieces.

Parameter Type   Description
name string required Name of the component and of its type.
description string optional Description of the type.
elements [id, …] optional Ids of the view’s elements to make the component from.
origin [x, y] optional The point of the view that becomes the component’s origin.
pieces [JSON, …] optional Pieces, as component_sheet_piece_add takes them (meters).
replace boolean optional Replace elements by the new component (default true).
view id or name optional View id or name of elements.

detail_component_place

edit — Place a detail component in a 2D view (plan, ceiling plan, elevation, section, legend or drafting view): its origin at position (view coordinates, meters), turned rotation degrees, sized by scale and flipped across its own X axis first when mirrored. It is drawn only in that view, over the model and its regions, and goes with the view.

Parameter Type   Description
position [x, y] required Where its origin goes, [x, y] in meters.
type id or name required A detail component type: id or name.
view id or name required View id or name.
mirrored boolean optional Flipped across its own X axis before turning (default false).
rotation number optional Degrees counter-clockwise (default 0).
scale number optional Size factor (default 1).

line_styles_list

query — The line styles detail lines and region boundaries can use: the built-in ones (by code) and the project’s (by name), each with its weight on paper (mm), color, dash pattern and how many elements use it.

No parameters.

line_style_create

edit — Create a project line style for detail lines and region boundaries: a unique name (not a built-in code), a weight on paper, a color and a dash pattern. Commands then name it like a built-in style.

Parameter Type   Description
name string required Name (unique, not a built-in style’s code).
color [id, …] optional Color [r, g, b], 0 to 255 (default black).
pattern string optional Dash pattern: solid (default), dash, short_dash, dot or dash_dot.
weight number optional Width on paper, millimeters (0.05 to 5; default 0.25).

line_style_set

edit — Change a project line style: name, weight, color or pattern. The lines and boundaries drawn with it follow.

Parameter Type   Description
style id or name required Line style id or name.
color [id, …] optional Color [r, g, b].
name string optional New name.
pattern string optional Dash pattern: solid, dash, short_dash, dot or dash_dot.
weight number optional Width on paper, millimeters (0.05 to 5).

line_style_delete

edit — Delete a project line style. The detail lines and region boundaries drawn with it move to replace_with (a built-in code or another project style’s name; default thin) in the same undo step.

Parameter Type   Description
style id or name required Line style id or name.
replace_with string optional The style that takes its place where it is used (default thin).

filled_region_create

edit — Draw a filled region in a 2D view (plan, ceiling plan, elevation, section, legend or drafting view): the closed loops of curves in the view’s drawing coordinates (meters), the largest the outline and those inside it openings, filled as its type says (a pattern over a background, or a solid color) and edged in a line style. It is drawn only in that view, over the model and under the view’s annotations. A project without a filled region type gets one (diagonal lines over white).

Parameter Type   Description
curves [JSON, …] required The curves, closed into loops, as for sketches (line, arc, circle, ellipse, rectangle, polygon).
view id or name required View id or name.
boundary string optional Boundary line style (a built-in code or a project style’s name; default thin), or none for no boundary.
type id or name optional Filled region type id or name (default: the project’s first).

masking_region_create

edit — Draw a masking region in a 2D view: an opaque white area (the closed loops of curves, openings inside the outline) that hides the model’s linework of the view under it, while the view’s annotations (detail lines, dimensions, texts, tags) stay on top. Drawn only in that view.

Parameter Type   Description
curves [JSON, …] required The curves, closed into loops, as for sketches.
view id or name required View id or name.
boundary string optional Boundary line style (a built-in code or a project style’s name), or none (the default) for no boundary.

filled_region_type_create

edit — Create a filled region type: a foreground pattern over a background pattern, each with its color (a solid pattern fills with its color; a none background leaves the model visible between the pattern lines). Change it later with type_set ({"fill": {...}}).

Parameter Type   Description
background string optional Background pattern (default solid), as for foreground.
background_color [id, …] optional Background color [r, g, b] (default white).
foreground string optional Foreground pattern (default diagonal): none, solid, diagonal, diagonal_back, crosshatch, horizontal, vertical, grid, brick, concrete, sand, insulation or earth.
foreground_color [id, …] optional Foreground color [r, g, b] (default black).
name string optional Type name (default: the template’s filled region name).

level_mark_create

edit — Place a level mark in a plan, an elevation or a section: the finished level of a point above a shelf line and its raw (structural) level under it, each after the type’s datum (the value written for the project’s zero) is added. Plans draw a circle with two filled quarters on the point and measure the top of the highest floor of the plan’s level under it (the level where there is none), with the top of that floor’s structure as the raw level; elevations and sections draw a triangle pointing down to the point and measure its height (position y), with the raw level of a floor whose top the point lies on, in sections. element_get gives the levels and texts (derived); element_set changes the mark’s params.

Parameter Type   Description
position [x, y] required The point measured, in the view’s drawing coordinates (in elevations and sections y is the elevation).
view id or name required View id or name: a floor or ceiling plan, an elevation or a section.
finished number optional Finished level to write instead of the measured one, meters (an elevation of the project, before the datum).
flip boolean optional Write the values on the left of the symbol (default: on the right).
raw number optional Raw level to write instead of the measured one, meters.
show_raw boolean optional Write the raw level when there is one (default true).
type id or name optional Level mark type id or name (default: the default level mark type).

level_mark_type_create

edit — Create a level mark type: the text size, the datum (the value written for the project’s zero, e.g. 100 when the ground floor is +100.00) and the suffixes after the finished and raw levels. A project gets one with its first level mark; type_set changes them.

Parameter Type   Description
datum number optional Value written for the project’s zero, meters (default 0).
finished_suffix string optional Text after the finished level (default: the language’s, e.g. “(N.A.)”).
name string optional Type name (default: the language’s).
raw_suffix string optional Text after the raw level (default: the language’s, e.g. “(N.O.)”).
text_size number optional Text size, paper millimeters (default 2.5).

text_add_leader

edit — Add a leader to a text note.

Parameter Type   Description
end [x, y] required The point the leader points at, where its symbol is drawn.
id integer required Text element id.
elbow [x, y] optional A bend point that splits the leader in two segments (text → elbow → end).
symbol string optional End symbol: Arrow, OpenArrow, Triangle, Dot, Circle, Square, FilledSquare, Tick or None (default: the text type’s symbol).

text_remove_leader

edit — Remove a leader from a text note.

Parameter Type   Description
id integer required Text element id.
index integer required Index of the leader (from 0, as in params.leaders).

Types, components, materials

type_set

edit — Change a type: its name, its parameters (params, merged into what type_get shows: layers, sizes, materials, a component’s def…) and its identity data (info: type mark, description, manufacturer, cost…). Changing a component’s definition updates every type of that component, each keeping its own parameter values.

Parameter Type   Description
type id or name required A level, type, view or material: its numeric id or its name.
info JSON optional Fields of the identity data to change, shaped like info in type_get.
name string optional New name (unique in its category).
params JSON optional Fields of the type’s parameters to change, shaped like params in type_get.
renames [[old, new], …] optional Component parameters renamed by a new def, as [old, new] pairs in order, so the component’s other types keep their values.

type_duplicate

edit — Copy a type under a new name (default “ (copy)"); the given elements of the type switch to the copy.

Parameter Type   Description
type id or name required A level, type, view or material: its numeric id or its name.
elements [id, …] optional Elements of the type to switch to the copy.
name string optional Name of the copy (default: “ (copy)").

type_delete

edit — Delete a type that no element uses (the last type of a category is kept, except a title block: sheets on a deleted title block move to the first other one, or to none).

Parameter Type   Description
type id or name required A level, type, view or material: its numeric id or its name.

component_create

edit — Create a component type: def holds its parameters and pieces, shaped like a component type’s params.def in type_get. A piece’s shape is a Box {x, y, z, width, depth, height}, a Cylinder {x, y, z, radius, height}, an Extrusion {points: [[x, y], …], z, height} (a plan outline extruded up), a Profile {plane: Plan, Front or Side, points: [{u, v, radius}, …], offset, depth} (lines and arcs drawn on a plane: u, v are x, y in plan, x, z from the front and y, z from the side; the plane stands at offset on the remaining axis and extrudes depth along it; a point’s optional radius makes the segment to the next point an arc, positive bulging outwards) or a Revolution {plane, points, offset, axis, angle} (the profile turned about the line u = axis of its plane). Every field is an expression over the parameters (meters, degrees). A piece with void: true is cut out of the solid pieces it overlaps; one with plan_only: true is a plan symbol (a door’s swing), drawn in plans and not a solid. A kind of Door or Window with an opening {width, height, sill, own_symbol} (expressions) makes a door or window type, placed with door_create or window_create: it cuts that opening in its wall; its frame has x along the wall from the opening’s center, y across it (towards the side a door opens to), z up from the sill, and WallThickness is the wall’s thickness. connectors [{name, system: ColdWater, HotWater, Sanitary, Vent, Rainwater, Power or Lighting, x, y, z, direction: Down, Up, Front (-y), Back (+y), Left (-x) or Right (+x), diameter}] are where mep_connect joins pipes and conduits (a toilet’s inlet and outlet).

Parameter Type   Description
def JSON required The definition: params (name, value, kind, instance) and items (pieces), shaped like a component type’s params.def in type_get.
name string required Name of the component and of its first type.

component_get

query — The component of a type, as the modeling environment shows it: the definition, the value of every parameter and reference plane, the value of each dimension, where each connector is, the problems found, and the component’s types with their parameter values. A title block’s pictures show as format, width, height (pixels) and bytes, not their bytes.

Parameter Type   Description
type id or name required A type of the component: id or name.

component_param_add

edit — Add a parameter to a component (to every type, with the same value).

Parameter Type   Description
name string required Name used in expressions (letters, digits and _, not starting with a digit).
type id or name required A type of the component: id or name.
instance boolean optional Elements may override the value (sheets, for a title block’s text parameter).
kind string optional length (default), angle, number or text (a title block’s per-sheet field, with instance).
text string optional Value of a text parameter (default empty).
value number optional Value (meters for lengths, degrees for angles; default 0).

component_param_set

edit — Change a component parameter: its value (for the type named only), kind, whether elements may override it, or its name (every expression, dimension and type follows a rename).

Parameter Type   Description
name string required The parameter’s current name.
type id or name required A type of the component: id or name (the value changes for this type).
instance boolean optional Elements may override the value.
kind string optional length, angle or number.
rename string optional New name.
value number optional New value for the type named.

component_param_delete

edit — Remove a component parameter; refused while an expression reads it. Dimensions it labels lose the label (their planes keep their place).

Parameter Type   Description
name string required The parameter’s name.
type id or name required A type of the component: id or name.

component_ref_plane_add

edit — Add a reference plane to a component: square to axis (x: a left/right plane, y: front/back, z: a height), at the position at, an expression that may read parameters and other planes (Left + Width).

Parameter Type   Description
at string required Position along the axis (meters): a number or an expression.
axis string required x, y or z.
type id or name required A type of the component: id or name.
name string optional Name (default Plane1, Plane2…).

component_ref_plane_set

edit — Move or rename a reference plane: at is its new position (an expression); a rename follows into every expression and dimension.

Parameter Type   Description
name string required The plane’s current name.
type id or name required A type of the component: id or name.
at string optional New position: a number or an expression.
rename string optional New name.

component_ref_plane_delete

edit — Remove a reference plane and the dimensions on it; refused while an expression reads it.

Parameter Type   Description
name string required The plane’s name.
type id or name required A type of the component: id or name.

component_ref_line_add

edit — Add a reference line on one of the sketch planes (plan, front or side, standing at offset along its normal axis): its ends are [u, v] pairs of expressions in that plane.

Parameter Type   Description
end [old, new] required Second end [u, v].
plane string required plan, front or side.
start [old, new] required First end [u, v]: numbers or expressions.
type id or name required A type of the component: id or name.
name string optional Name (default Line1, Line2…).
offset string optional Position of the sketch plane along its normal axis (default 0).

component_ref_line_delete

edit — Remove a reference line.

Parameter Type   Description
name string required The line’s name.
type id or name required A type of the component: id or name.

component_dimension_add

edit — Dimension two parallel reference planes in a view (plan, front or side, one that sees them edge-on). With label, a length parameter drives it: the second plane moves to the first plus the parameter (the parameter is created with the current distance when missing).

Parameter Type   Description
from string required The plane it measures from.
to string required The plane it measures to (the one a label moves).
type id or name required A type of the component: id or name.
view string required plan, front or side.
label string optional Parameter that drives the distance.
place number optional Where the dimension line sits across the planes (meters, default 0).

component_dimension_set

edit — Change a dimension between reference planes: label it with a parameter (label, created when missing), take its label off (label: "", the planes stay), move its line (place) or give it a new value (the label’s parameter for this type, or the moving plane’s position).

Parameter Type   Description
index integer required The dimension’s index (from component_get).
type id or name required A type of the component: id or name.
label string optional Parameter that drives it; empty to take the label off.
place number optional Where the dimension line sits across the planes.
value number optional New distance (meters).

component_dimension_delete

edit — Remove a dimension between reference planes (the planes stay).

Parameter Type   Description
index integer required The dimension’s index.
type id or name required A type of the component: id or name.

component_equal_add

edit — Keep the plane middle halfway between the parallel planes a and b (an equality, EQ): its position becomes (a + b) / 2, so it follows whatever moves them. Shown in view (plan, front or side) as two equal dimensions.

Parameter Type   Description
a string required One outer plane.
b string required The other outer plane.
middle string required The plane kept halfway (not an origin plane).
type id or name required A type of the component: id or name.
view string required plan, front or side.
place number optional Where the dimensions’ line sits across the planes (meters, default 0).

component_equal_delete

edit — Remove an equality (EQ); its middle plane stays halfway as written.

Parameter Type   Description
index integer required The equality’s index (from component_get).
type id or name required A type of the component: id or name.

component_piece_add

edit — Add a piece drawn as a sketch on the plan, front or side plane: an extrusion of the closed outline from start to end along the plane’s normal (Z for the plan, Y for the front, X for the side); a revolution about the line u = axis of the plane, angle degrees (default 360); a sweep of the closed outline (points: u to the left of the path, v along the normal) along the open path drawn on the plane at start, mitered at its corners; or a blend from the outline at start to the top outline at end. Coordinates are numbers or expressions; a reference plane’s name locks a coordinate (or start, end, axis) to that plane, so the piece follows it. With void, the piece is cut out of the solid pieces it overlaps.

Parameter Type   Description
plane string required plan, front or side.
points [object, …] required The closed outline, in order (a sweep’s section, a blend’s bottom).
type id or name required A type of the component: id or name.
angle number or string optional Revolutions: degrees turned (default 360).
axis number or string optional Revolutions: the axis, u = axis in the sketch plane.
end number or string optional Extrusions and blends: where they end along the normal (default 0.1 past start).
kind string optional extrusion (default), revolution, sweep or blend.
material string optional Project material name.
name string optional Name (default Piece1, Piece2…).
path [object, …] optional Sweeps: the open path the section follows.
start number or string optional Where the sketch plane stands along its normal (default 0).
top [object, …] optional Blends: the closed outline at end.
void boolean optional Cut out of the solid pieces it overlaps.

component_piece_set

edit — Change a piece of a component: its name, material, whether it is a void or drawn in plans, and for sketched pieces their outline, start, end (extrusions), axis and angle (revolutions).

Parameter Type   Description
index integer required The piece’s index (from component_get).
type id or name required A type of the component: id or name.
angle number or string optional Revolutions: degrees turned.
axis number or string optional Revolutions: the axis, u = axis in the sketch plane.
detail [string, …] optional The detail levels of the views that show the piece: any of coarse, medium and fine (all three by default).
end number or string optional Extrusions: where they end along the normal.
in_plan boolean optional Drawn in plans.
material string optional Project material name (empty for the default color).
name string optional New name.
path [object, …] optional Sweeps: new path.
points [object, …] optional New outline (a sweep’s section, a blend’s bottom).
start number or string optional Where the sketch plane stands along its normal.
top [object, …] optional Blends: new top outline.
void boolean optional Cut out of the solid pieces it overlaps.

component_piece_delete

edit — Remove a piece of a component (a component keeps at least one).

Parameter Type   Description
index integer required The piece’s index.
type id or name required A type of the component: id or name.

component_connector_add

edit — Add a connector to a component: where a pipe or conduit of system joins it. x, y and z place it in the component’s frame (numbers or expressions; a reference plane’s name locks it to that plane), and direction is the way runs leave it.

Parameter Type   Description
type id or name required A type of the component: id or name.
diameter number or string optional Outside diameter of the run it takes, meters (default: unset).
direction string optional Which way runs leave it: down (default), up, front, back, left or right.
name string optional Name (default Connector1, Connector2…).
system string optional Kind of system: cold_water (default), hot_water, sanitary, vent, rainwater, power or lighting.
x number or string optional Position across the component (default 0).
y number or string optional Position front to back (default 0).
z number or string optional Height (default 0).

component_connector_set

edit — Change a connector of a component: its name, kind of system, position (x, y, z, numbers or expressions; a reference plane’s name locks it to that plane), direction or diameter (empty to clear it).

Parameter Type   Description
index integer required The connector’s index (from component_get).
type id or name required A type of the component: id or name.
diameter number or string optional Outside diameter of the run it takes, meters (empty to clear it).
direction string optional Which way runs leave it: down, up, front, back, left or right.
name string optional New name.
system string optional Kind of system: cold_water, hot_water, sanitary, vent, rainwater, power or lighting.
x number or string optional Position across the component.
y number or string optional Position front to back.
z number or string optional Height.

component_connector_delete

edit — Remove a connector of a component.

Parameter Type   Description
index integer required The connector’s index.
type id or name required A type of the component: id or name.

component_script_set

edit — Write the Lua source of a script piece of a component: the piece named, or a new script piece. What the script declares becomes the component’s parameters and hotspots (values of those still declared are kept); a script that does not load is refused, one that fails while building its pieces is kept and its error returned.

Parameter Type   Description
source string required The Lua source: param.length { "width", default = 1 } declarations and a geometry(p) function returning pieces (box, cylinder, extrusion, profile, revolution, sweep, blend, mesh).
type id or name required A type of the component: id or name.
material string optional Material of the pieces that set none (project material name).
name string optional Name of a new piece (default Script1, Script2…).
piece string optional The script piece to change; a new piece when left out.

component_params_get

query — The parameters and hotspots of a component type, with the type’s values; or of placed components (all of one component), with the value they share or mixed where they differ.

Parameter Type   Description
elements [id, …] optional Placed components of one component (leave out with type).
type id or name optional A type of the component: id or name (leave out with elements).

component_params_set

edit — Set a parameter of a component type (every element of the type follows) or the instance value of placed components (all of one component; the parameter must be an instance one). Values: numbers (meters, degrees), true/false, texts, choice keys or material names. One undo step; when any target refuses the value nothing changes.

Parameter Type   Description
name string required The parameter’s name.
value JSON required The new value.
elements [id, …] optional Placed components of one component (leave out with type).
type id or name optional A type of the component: id or name (leave out with elements).

component_hotspot_move

edit — Move a hotspot of a placed component (what its script reads as p.<name>). The point is in the component’s frame (meters from the insertion point, x to its right, y to its back, z up) unless world.

Parameter Type   Description
element integer required The placed component.
name string required The hotspot’s name.
point [number, …] required The new position [x, y, z].
world boolean optional The point is in project coordinates (z absolute) instead of the component’s frame.

material_create

edit — Create a material (default name “Material”; a number is added when taken).

Parameter Type   Description
color [id, …] optional Shading color [r, g, b], 0–255 (default light gray).
name string optional Name (default: “Material”; a number is added when taken).

material_duplicate

edit — Copy a material under a new name (default “ (copy)").

Parameter Type   Description
material id or name required A level, type, view or material: its numeric id or its name.
name string optional Name of the copy (default: “ (copy)").

material_rename

edit — Rename a material; every type using it follows.

Parameter Type   Description
material id or name required A level, type, view or material: its numeric id or its name.
name string required New name.

material_set

edit — Change a material’s fields (merged into what material_get shows: description, class, colors, patterns, transparency, finish, physical values…). Use material_rename to rename it.

Parameter Type   Description
material id or name required A level, type, view or material: its numeric id or its name.
values JSON required Fields to change, shaped like the result of material_get.

material_delete

edit — Delete a material no type uses.

Parameter Type   Description
material id or name required A level, type, view or material: its numeric id or its name.

Levels and views

level_create

edit — Add a level (default: 3 m above the highest, named “Level n”) with its floor and ceiling plans.

Parameter Type   Description
elevation number optional Elevation in meters.
name string optional Level name (default: “Level n”).
plans boolean optional Also create its floor and ceiling plans (default true).

level_set

edit — Rename a level or change its elevation (what is attached to it moves along).

Parameter Type   Description
level id or name required A level, type, view or material: its numeric id or its name.
elevation number optional New elevation, meters.
name string optional New name.

level_delete

edit — Delete a level no element is on, with its plan views; walls rising to it keep their current height, unconnected. The last level is kept.

Parameter Type   Description
level id or name required A level, type, view or material: its numeric id or its name.

view_create

edit — Create a view. kind is floor_plan or ceiling_plan (with level), section (with start, end and optional depth), elevation (with direction: north, south, east or west), structural_plan (with level: a formwork plan of the structure, tagged), plumbing_plan and electrical_plan (with level: the pipes, or the conduits and devices, over the architecture, tagged), three_d, analytical (a 3D view of the analytical model), rebar (a 3D view of the reinforcement), legend (all types), drafting (a 2D view independent of the model, showing only the text, dimensions and imported drawings placed in it; 1:10 by default), schedule (with category), panel_diagram (with panel: the single-line diagram and load schedule of a distribution board; default the only board) or sheet (A3, numbered after the others, with the first title block type).

Parameter Type   Description
kind string required floor_plan, ceiling_plan, structural_plan, plumbing_plan, electrical_plan, section, elevation, three_d, analytical, rebar, legend, drafting, schedule, panel_diagram or sheet.
category string optional Schedules: the category scheduled (default wall).
depth number optional Section depth beyond the cut line, meters (default 8).
direction string optional Elevations: north, south (default), east or west.
end [x, y] optional Sections: end of the cut line.
level id or name optional Plans: level id or name (default: the lowest).
name string optional View name (default: by kind).
panel integer optional Distribution board element id, for a panel diagram.
scale integer optional Scale denominator (e.g. 50 for 1:50).
start [x, y] optional Sections: start of the cut line.

view_set

edit — Change a view: name, scale, phase and phase filter, and its params as view_get shows them (merged: cut height, section depth, legend types, schedule fields, sort, filter and totals, sheet number and size, viewport positions…) and the crop.

Parameter Type   Description
view id or name required A level, type, view or material: its numeric id or its name.
crop [[x, y], [x, y]] optional Crop rectangle: two opposite corners in the view’s drawing coordinates (plans, sections and elevations draw nothing of the model outside it), or null to show everything. For a detail view this is its callout in the parent; for a drafting view a callout points to, it moves that callout.
detail string optional Detail level: coarse (layered elements cut as one plain region; component pieces set for it), medium or fine.
name string optional New name.
params JSON optional Fields of the view’s parameters to change, shaped like params in view_get.
phase id or name optional Phase the view shows (id or name; plans, elevations, sections, 3D views, schedules).
phase_filter id or name optional Phase filter (id or name), or null for none (every status by category).
scale integer optional Scale denominator (e.g. 100 for 1:100).
visual_style string optional Visual style: wireframe (every edge, no faces), hidden_line (white faces), shaded, consistent_colors (material colors, unlit), textures (appearance colors and surface patterns), or default (plans hidden line, other views shaded).

view_duplicate

edit — Copy a view (a copied sheet starts without viewports).

Parameter Type   Description
view id or name required A level, type, view or material: its numeric id or its name.

view_delete

edit — Delete a view (and its viewports on sheets; dimensions drawn in it go too).

Parameter Type   Description
view id or name required A level, type, view or material: its numeric id or its name.

callout_create

edit — Draw a callout in a plan, ceiling plan, section or elevation: a rectangle (two opposite corners in the view’s drawing coordinates) standing for a detail view of that region. By default a new detail view is made: of the parent’s kind (it stays live with the model, following the parent’s level, section line or direction), cropped to the rectangle, at a larger scale, with its own detail lines, regions, detail components, text and dimensions. With drafting, the callout points to that existing drafting view instead (no crop). The parent draws the rectangle with rounded corners and a tag with the detail number and the sheet number once the view is placed on a sheet. Moving the callout is changing the detail view’s crop (view_set); deleting the detail view removes it (callout_remove keeps the view).

Parameter Type   Description
parent id or name required The view the callout is drawn in (id or name): a floor or ceiling plan, a section or an elevation.
rect [[x, y], [x, y]] required Two opposite corners of the rectangle, in the parent’s drawing coordinates (meters; in sections and elevations y is the height).
drafting id or name optional An existing drafting view (id or name) the callout points to instead of a new detail view.
name string optional Name of the detail view (default “Detail N”).
scale integer optional Scale denominator of the detail view (default: a standard scale about five times larger than the parent’s, 1:10 under 1:50).

callout_remove

edit — Remove a view’s callout from its parent; the view stays (a detail view keeps its crop and becomes an ordinary view of its kind).

Parameter Type   Description
view id or name required The detail or drafting view the callout stands for (id or name).

callouts_list

query — The callouts drawn in a view: the detail or drafting view each stands for and its rectangle.

Parameter Type   Description
view id or name required The parent view (id or name).

sheet_place_view

edit — Place a view on a sheet at center (paper millimeters; default left of center). A view can be on only one sheet; sheets cannot be placed.

Parameter Type   Description
sheet id or name required A level, type, view or material: its numeric id or its name.
view id or name required A level, type, view or material: its numeric id or its name.
center [x, y] optional Center of the viewport on the sheet, paper millimeters.

sheet_remove_viewport

edit — Remove a view from a sheet.

Parameter Type   Description
sheet id or name required A level, type, view or material: its numeric id or its name.
view id or name required A level, type, view or material: its numeric id or its name.

sheet_set

edit — Change a sheet: its number, paper (size, portrait), title block, per-sheet field values and issue date.

Parameter Type   Description
sheet id or name required The sheet: id or name.
fields object optional Values of the title block’s per-sheet fields by parameter name: a text sets one, null clears it.
issue_date string optional Issue date, YYYY-MM-DD; empty to clear.
number string optional Sheet number.
portrait boolean optional The long side runs up.
size string or object optional Paper: "A0"…"A4", or {width, height} in millimeters (50 to 5000).
title_block id or name optional The title block type (id or name), or null for none.

sheet_fields

query — A sheet’s title block fields: every field key (fields, as {key} in title block texts reads it) with its value on this sheet, the title block’s per-sheet parameters (params: name, label, the sheet’s value and the type’s default), and the title block’s pieces that do not resolve on this paper (errors).

Parameter Type   Description
sheet id or name required The sheet: id or name.

title_block_create

edit — Create a title block component: a copy of the standard one, or empty with empty. Sheets use it through sheet_set title_block.

Parameter Type   Description
name string required Name of the component and of its first type.
empty boolean optional Start with no pieces.

component_sheet_piece_add

edit — Add 2D pieces to a title block or detail component (every type of it), in one step.

Parameter Type   Description
type id or name required A type of the title block or detail component: id or name.
name string optional Name of the first piece added (default Piece1, Piece2…).
piece JSON optional The piece, by kind: stroke (points as [{u, v, radius}], closed, weight, color, fill, pattern), text (x, y, text with {fields}, size, anchor: left, center, right or middle, rotation), image (x, y, width, height, and image_path or base64 image) or, in a detail component, nested (component, x, y, rotation, scale, mirrored). A title block’s are millimeters from the paper’s bottom-left corner, as numbers or expressions over the parameters, SheetWidth and SheetHeight; a detail component’s are meters in its frame.
pieces [JSON, …] optional More pieces (each as piece), added after it in the same step: all of them or, when one is refused, none.

component_sheet_piece_set

edit — Change a 2D piece of a title block or detail component: piece is a merge patch over its form in component_get def.sheet (e.g. {"Text": {"size": "4"}}); an image piece’s picture is replaced with image_path or image, not by the patch.

Parameter Type   Description
index integer required The piece’s index (in component_get def.sheet).
type id or name required A type of the title block: id or name.
add [JSON, …] optional Pieces added in the same step (each as component_sheet_piece_add piece; e.g. the other chains of a redrawn sketch); the result lists their indices in added.
image string optional A new picture for an image piece: its bytes, base64.
image_path string optional A new picture for an image piece: its file (PNG, JPEG, GIF, BMP or WebP).
name string optional New name.
piece JSON optional Merge patch over the piece’s shape (without a picture).

component_sheet_piece_delete

edit — Delete 2D pieces of a title block or detail component, in one step.

Parameter Type   Description
type id or name required A type of the title block: id or name.
index integer optional The piece’s index (in component_get def.sheet).
indices [id, …] optional More pieces’ indices, deleted with index in the same step: all of them or, when one does not exist, none.

View graphics

view_graphics_get

query — The visibility/graphics of a view (or of a view template): every category’s visibility and overrides, the applied filters in order, the element overrides and hidden elements, the view’s template and what it controls, and what is temporarily hidden or isolated. Overrides are objects like {"cut_lines": {"color": [255, 0, 0], "weight": 0.5, "pattern": "Dash"}, "projection_lines": {..}, "cut_fill": {"color": [..], "pattern": "Solid"}, "surface_fill": {..}, "halftone": true, "transparency": 0.5} (absent attributes are not overridden).

Parameter Type   Description
template id or name optional Or a view template id or name.
view id or name optional View id or name.

view_graphics_set

edit — Show or hide a category in a view (or view template) and change its graphic overrides: overrides is merged into the current ones (null resets one attribute; see view_graphics_get), reset clears them first. Refused when the view’s template controls its categories.

Parameter Type   Description
category string required Category (wall, door, room, dimension…).
overrides JSON optional Overrides to merge.
reset boolean optional Clear the category’s overrides before merging.
template id or name optional Or a view template id or name.
view id or name optional View id or name.
visible boolean optional Show (true) or hide (false) the category.

element_override_set

edit — Override the graphics of elements in one view (they keep their category’s and filters’ graphics for what is not overridden): overrides is merged into each element’s (null resets an attribute), reset clears them first, so reset alone removes the overrides.

Parameter Type   Description
ids [id, …] required Element ids.
view id or name required View id or name.
overrides JSON optional Overrides to merge (see view_graphics_get).
reset boolean optional Clear the elements’ overrides before merging.

element_hide_in_view

edit — Hide elements in one view (hidden: false shows them again). Hidden elements stay in the model and in other views.

Parameter Type   Description
ids [id, …] required Element ids.
view id or name required View id or name.
hidden boolean optional Hide (default) or unhide.

filters_list

query — The project’s view filters with their categories and rules.

No parameters.

filter_create

edit — Create a view filter: the elements of categories (all when empty) that pass its rules — all of them, or any with any; a filter without rules matches every element of its categories. Apply it to views with view_filter_add.

Parameter Type   Description
name string required Name (unique).
any boolean optional Match when any rule passes (default: all must pass).
categories [string, …] optional Categories (wall, door…); empty for all.
rules [object, …] optional Rules on parameters.

filter_set

edit — Change a view filter: name, categories, rules (replaced as a whole) or how rules combine. Views that apply it follow.

Parameter Type   Description
filter id or name required Filter id or name.
any boolean optional Match when any rule passes (false: all must pass).
categories [string, …] optional New categories (empty for all).
name string optional New name.
rules [object, …] optional New rules (replace the old ones).

filter_delete

edit — Delete a view filter (views and templates stop applying it).

Parameter Type   Description
filter id or name required Filter id or name.

filter_elements

query — The elements a view filter matches (only those drawn in view when given).

Parameter Type   Description
filter id or name required Filter id or name.
view id or name optional Only elements drawn in this view.

view_filter_add

edit — Apply a filter to a view (or view template), at index in the list (default last: the first matching filter wins for each attribute), hiding what it matches (visible: false) or overriding its graphics.

Parameter Type   Description
filter id or name required Filter id or name.
index integer optional Position in the view’s filter list (0 = first).
overrides JSON optional Overrides of the matching elements (see view_graphics_get).
template id or name optional Or a view template id or name.
view id or name optional View id or name.
visible boolean optional Show (default) or hide the matching elements.

view_filter_set

edit — Change how a view (or view template) applies a filter: visibility of the matching elements, whether it is enabled, and its overrides (merged; reset clears them first).

Parameter Type   Description
filter id or name required Filter id or name.
enabled boolean optional Apply the filter (false keeps it listed without effect).
overrides JSON optional Overrides to merge (see view_graphics_get).
reset boolean optional Clear the overrides before merging.
template id or name optional Or a view template id or name.
view id or name optional View id or name.
visible boolean optional Show (true) or hide (false) the matching elements.

view_filter_remove

edit — Stop applying a filter in a view (or view template).

Parameter Type   Description
filter id or name required Filter id or name.
template id or name optional Or a view template id or name.
view id or name optional View id or name.

view_filter_move

edit — Move a filter to index in a view’s (or view template’s) filter list (0 = first, the highest priority).

Parameter Type   Description
filter id or name required Filter id or name.
index integer required New position (0 = first).
template id or name optional Or a view template id or name.
view id or name optional View id or name.

templates_list

query — The project’s view templates: the properties each holds, which of them it controls (include) and the views that follow it.

No parameters.

template_create

edit — Create a view template, from the properties of view when given (scale, category graphics, filters, plan cut height, building services display, structural display), else with defaults. Every property is controlled (include) until changed with template_set.

Parameter Type   Description
name string required Name (unique).
view id or name optional View to take the properties from.

template_set

edit — Change a view template: name, properties and which of them it controls (include, merged: {"scale": false} lets views keep their own scale). Views that follow the template change with it, in the same undo step.

Parameter Type   Description
template id or name required Template id or name.
cut_height number optional Plans: cut plane height, meters.
detail string optional Detail level: coarse, medium or fine.
discipline string optional Floor plans: none, plumbing or electrical (services over a faint architecture).
include JSON optional Which properties the template controls: scale, categories, filters, cut_height, discipline, structural, phase_filter, detail, visual_style, underlay (true/false).
name string optional New name.
phase_filter id or name optional Phase filter (id or name), or null for none.
scale integer optional Scale denominator.
structural boolean optional Floor plans: structural (formwork) display.
structure_tags boolean optional Floor plans: tag beams and columns.
underlay JSON optional Plans: other levels’ plans drawn under them, merged like view_set’s underlay (e.g. {"below": {"level": "Next", "looking": "Down"}}).
visual_style string optional Visual style: wireframe, hidden_line, shaded, consistent_colors, textures, or default (each view’s usual style).

template_delete

edit — Delete a view template; views that follow it keep their current properties and become free.

Parameter Type   Description
template id or name required Template id or name.

view_template_apply

edit — Copy a template’s properties into views once (they stay free to change). Views that follow another template are refused.

Parameter Type   Description
template id or name required Template id or name.
views [id or name, …] required View ids or names.

view_template_assign

edit — Make views follow a template (template: null frees them): the properties it controls are copied now and whenever the template changes, and cannot be changed in the view.

Parameter Type   Description
views [id or name, …] required View ids or names.
template id or name optional Template id or name, or null to unassign.

view_temporary

query — Temporarily hide or isolate elements or categories in a view, or reset. This is display state, not a model change: it is not saved, not undone and not printed (sheets and exports show the view as it is); the application marks the view while it is active. action: hide and isolate (the elements ids), hide_category and isolate_category (categories, and the categories of ids), or reset. Hiding adds to what is already hidden; isolating replaces it.

Parameter Type   Description
action string required hide, isolate, hide_category, isolate_category or reset.
view id or name required View id or name.
categories [string, …] optional Category names.
ids [id, …] optional Element ids.

view_temporary_apply

edit — Make a view’s temporary hiding permanent: hidden elements become hidden in the view and hidden categories are turned off; when isolating, every other element drawn in the view is hidden in it. The temporary state is then reset. One undo step.

Parameter Type   Description
view id or name required View id or name.

Phases

phases_list

query — The project’s construction phases in time order, with how many elements each builds and demolishes and how many views show it.

No parameters.

phase_create

edit — Add a construction phase, at the end (the latest) or before another. Elements and views keep their phases.

Parameter Type   Description
name string required Name (unique).
before id or name optional Insert before this phase (id or name; default: after the last).
description string optional Description.

phase_set

edit — Rename a phase, change its description, or move it to another place in time (index, 0 = earliest). A move that would put an element’s demolition before its construction is refused.

Parameter Type   Description
phase id or name required Phase id or name.
description string optional New description.
index integer optional New position in time order (0 = earliest).
name string optional New name.

phase_delete

edit — Delete a phase. A phase that elements are built or demolished in, or that views show, needs merge_into: they move to that phase (an element then built and demolished in the same phase is temporary). The last remaining phase cannot be deleted.

Parameter Type   Description
phase id or name required Phase id or name.
merge_into id or name optional Phase that takes over its elements and views.

elements_phase_set

edit — Set the phase elements are built in and/or demolished in (null: not demolished). A demolition cannot come before the construction. Doors, windows and rebar follow their hosts: they are never built before them and are demolished with them (unless demolished earlier).

Parameter Type   Description
ids [id, …] required Element ids.
created id or name optional Phase built in (id or name).
demolished id or name optional Phase demolished in (id or name), or null to keep it standing.

elements_demolish

edit — Demolish elements in a phase: phase when given, else the phase of view, else the phase new elements are built in (the last by default). Their doors, windows and rebar go with them (unless demolished earlier). Elements not built by then, or already demolished earlier, are refused.

Parameter Type   Description
ids [id, …] required Element ids.
phase id or name optional Phase id or name.
view id or name optional Or the view whose phase to use.

phase_creation_set

query — Set the phase new elements are built in by this session (the active view’s phase in the application): display state, not saved, not undone. phase (id or name), or the phase of view; neither resets it to the last phase.

Parameter Type   Description
phase id or name optional Phase id or name.
view id or name optional Or the view whose phase to use.

phase_filters_list

query — The phase filters: for each status (existing, demolished, new, temporary) whether views using the filter show it by_category, overridden (with the status graphics, see phase_graphics_get) or not_displayed.

No parameters.

phase_filter_create

edit — Create a phase filter; statuses not given show by_category.

Parameter Type   Description
name string required Name (unique).
demolished string optional Demolished elements.
existing string optional Existing elements: by_category, overridden or not_displayed.
new string optional New elements.
temporary string optional Temporary elements.

phase_filter_set

edit — Change a phase filter: its name or how it shows each status. Views using it follow.

Parameter Type   Description
filter id or name required Phase filter id or name.
demolished string optional Demolished elements.
existing string optional Existing elements: by_category, overridden or not_displayed.
name string optional New name.
new string optional New elements.
temporary string optional Temporary elements.

phase_filter_delete

edit — Delete a phase filter; views and view templates using it are left without one (showing every status by category).

Parameter Type   Description
filter id or name required Phase filter id or name.

phase_graphics_get

query — The graphics of each phase status (existing, demolished, new, temporary), used by phase filters that show a status overridden. Overrides are shaped as in view_graphics_get.

No parameters.

phase_graphics_set

edit — Change the graphics of a phase status: overrides is merged into the current ones (null resets an attribute; see view_graphics_get), reset clears them first.

Parameter Type   Description
status string required existing, demolished, new or temporary.
overrides JSON optional Overrides to merge.
reset boolean optional Clear the status overrides before merging.

Visual programming

graph_run

edit — Run a visual programming graph (a .ccgraph file, or the graph as JSON) as one undo step. Elements its nodes create are bound to the node and the item that made them: running the graph again changes them in place (keeping their ids), makes the new ones and deletes the ones it no longer makes. Returns each node’s outputs or error, the values of its output nodes and how many elements were created, changed and deleted.

Parameter Type   Description
brief boolean optional Leave each node’s outputs out of the result (only errors, outputs and counts).
graph JSON optional The graph itself (the contents of a .ccgraph file), instead of path.
inputs object optional Values of the graph’s input nodes, by their names.
path string optional Path of the .ccgraph file.

graph_check

query — Check a graph without running it: nodes that cannot run here (unknown commands or nodes, file commands the graph does not allow), wires to ports that do not exist or whose types do not fit, required inputs with no value, and what reading the file fixed.

Parameter Type   Description
graph JSON optional The graph itself, instead of path.
path string optional Path of the .ccgraph file.

graph_nodes

query — The nodes a graph can use: built-in nodes (inputs, math, logic, lists, geometry, element parameters, outputs), the Lua node and a node per engine command, each with its inputs and outputs (name, type, whether required, default). Filter by words of the name or description, or by group.

Parameter Type   Description
group string optional Only this group (Math, Lists, Creating elements…).
search string optional Words that must all appear in the node’s name, group or description.

graph_elements

query — The elements a graph made, with the node and item (lacing path) that made each.

Parameter Type   Description
graph string required The graph’s uid (its file’s uid, also in graph_run’s result).

graph_release

edit — Release elements from the graph that made them: they become ordinary elements, and the next run of the graph makes new ones in their place. Without elements, every element of the graph is released.

Parameter Type   Description
graph string required The graph’s uid.
elements [id, …] optional Ids of the elements to release (default: all of the graph’s).