Skip to main content

LineHandle

A registered set of line segments, returned by BimLines.add. This is the whole surface a consumer needs: toggle visibility, restyle, move, replace content, or remove — all without touching StandardLineSource or LineAggregator.

The handle owns its underlying source; remove unregisters and disposes it, after which the handle is inert.

Index

Properties

readonlyid

id: string

Diagnostic label (the resolved id, auto-generated if none was given).

readonlyrenderingGroupId

renderingGroupId: number

Rendering group this handle draws into, fixed at BimLines.add time. Read-only by design: moving a source between groups also has to provision (and possibly reclaim) renderers on both sides, which is BimLines' bookkeeping, not the handle's. Remove and re-add to change groups.

style

style: null | OverridableStyle

Per-source style override (colour / width / linetype). null clears it. Assigning schedules a rebuild — but mutating the returned object in place does not: nothing notifies the source when you mutate the object it handed you. Assign a fresh object, or call markContentDirty after an in-place edit.

transform

transform: null | Matrix

Per-source transform, applied at combine time. null means identity.

Not free: assigning re-combines the whole rendering group (every source in it re-transformed into the combined buffer) and re-uploads its per-instance buffers. Fine for placement edits; for per-frame animation of one source among many, expect the cost to scale with the group, not with this handle.

visible

visible: boolean

Whether these lines appear in the next render.

Methods

markContentDirty

  • markContentDirty(): void
  • Signal that the current slab's typed arrays were mutated in place (for bulk producers editing content without replacing the slab). Not needed after setSlab.


    Returns void

markTransformDirty

  • markTransformDirty(): void
  • Signal that the transform matrix was mutated in place (rather than replaced with a fresh Matrix). Assigning a new Matrix to transform already schedules a rebuild by reference; this is only needed when the same matrix instance is mutated and re-used.


    Returns void

remove

  • remove(): void
  • Unregister and dispose. The lines disappear on the next rebuild and the handle becomes inert (further mutations are no-ops). Idempotent.


    Returns void

setSlab

  • setSlab(slab: SegmentSlab): void
  • Replace the segment content. Schedules a rebuild.


    Parameters

    • slab: SegmentSlab

    Returns void