Skip to main content
Use it only when you need a free cutter shape. For a hole in a wall, use one of the three subclasses.

Import

Example

Notes

  • Points are [alongWall, acrossWall] in metres. baseHeight gives the vertical position.
  • An opening does not cut the objects near it. The host does the cut.
  • Wall.attachOpening accepts a Door, a Window or a WallOpening.
  • Start the geometry kernel before you create this object. See Floorkit.
  • This object is live geometry. To save a building, write it in a building model.
Inheritance: extends OPElement implements IShape, IPlaceable

Constructor

string
string
T
string
number
number
number
THE vertical authority: the bottom of the rough opening, measured above the host wall’s base. Never a world Y — the host frame’s origin supplies the storey elevation, so world.y = frame.origin.y + baseHeight. Without a host or free placement, the identity frame makes baseHeight world Y.
number
[number, number][]
PropertySets

Properties

T
string
Map<string, OPGeometry>
Map<string, OPGeometry>
boolean
boolean
boolean
boolean
Event<null>
OpeningOptions<T>
boolean
string
number
number
number
Read-only. Where this opening currently sits along its host wall — the counterpart of baseHeight for the horizontal axis. Read by the walls so that attaching without an explicit offset preserves an authored position instead of snapping the opening back to the wall’s start.
number
Bottom of the rough opening above the host wall’s base. See OpeningOptions.
[ number, number ]
[ number, number ]
boolean
boolean
Vector3[]
Read-only. Plan-view hole loop (Vector3[] in the XZ plane at Y=0). The wall uses this as a Polygon hole. The 1 µm across-wall inset keeps hole edges strictly inside the outer polygon so the WASM triangulator does not produce degenerate output when edges coincide with the boundary.
AnalyticSolid
Read-only.

Methods

bindHostEdit

beginEdit

endEdit

bindHostCurve

move

Translate this opening by a WORLD-space delta, hosted or not — the delta is projected onto the active frame’s axes (identity when no frame is bound), so there is one interpretation rather than one per hosting state.

rotate

Rotate this element by angleDeg around axis (default Y-up), pivoted at anchor (default the element’s own centroid).

setOPConfig

getOPConfig

anchorSpace

Two draggable endpoints.

getEditAnchors

applyEditAnchor

bindHostFrame

Bind this opening to its host wall’s frame.

bindFreePlacement

Place an unhosted opening at a storey datum without creating a wall host.

toWorldPoints

Stored centreline points as world-space Vector3s, at baseHeight.

getAnalyticCutBounds

Exact station/elevation rectangle used by analytic wall subtraction.

getWorldCutElevationRange

World Y range of the analytic rough opening, including ancestor placement once.

dispose

setOPGeometry

setOPMaterial

Types

OPGeometry

Visual primitive stored in an element’s subElements2D / subElements3D maps.

OpeningHostCurve

OpeningOptions

WallFrame

Wall-local coordinate frame. The package does not export this type by name.
Vector3
required
Vector3
required
Vector3
required
Vector3
required
number
required
number
Host wall thickness. Populated when the frame comes from a wall; undefined for unhosted use.

FreeOpeningPlacement

[ x: number, z: number ]
required
Centre of the opening in the world XZ plane.
number
required
Degrees from +X toward +Z.
number
required
World Y of the owning storey’s datum.
Last modified on October 6, 2026