Rasterex APINPM Package/docs/components/cad/layers

CAD Layers

Read CAD/PDF layer snapshots, listen for layer changes, and update layer visibility using the SDK.

Overview

Use viewer.layers to read CAD/PDF layer snapshots, listen for layer changes, and update layer visibility.

Layer commands are available after the viewer is mounted, Canvas is ready, and a CAD/PDF document is open.

typescript
import { createViewer } from "@rasterex/viewer";

const viewer = createViewer({
  container: "#viewer"
});

await viewer.mount();
await viewer.ready();

await viewer.documents.open({
  url: "https://files.example.com/floor-plan.dwg",
  displayName: "floor-plan.dwg"
});
Overview

Get Layers

Fetch current layers definition from the active drawing view:

  • getLayers() sends the Canvas getLayers broker message and waits for a matching layersSnapshot.
typescript
const snapshot = await viewer.layers.getLayers();

for (const layer of snapshot.layers) {
  console.log(layer.name, layer.kind, layer.visible);
}
Get Layers

Listen For Layer Snapshots

Subscribe to real-time layer state snapshot changes:

  • The same event fires for snapshots requested with getLayers() and snapshots emitted after visibility changes.
typescript
const unsubscribe = viewer.layers.on("snapshot", (snapshot) => {
  console.log(snapshot.fileName);
  console.table(snapshot.layers);
});

// To stop listening:
unsubscribe();
Listen For Layer Snapshots

Set Layer Visibility

Use selectors returned in the layer row to show/hide layers. Vector CAD layers use index while PDF layers use id.

  • setLayerVisibility(...) sends setLayerVisibility and waits for the updated layersSnapshot.
  • Shorter alias setVisibility(...) is also supported:

Visibility Shorter Alias

await viewer.layers.setVisibility({
  all: true,
  visible: true
});
typescript
const snapshot = await viewer.layers.getLayers();
const layer = snapshot.layers[0];

if (layer?.index !== undefined) {
  await viewer.layers.setLayerVisibility({
    index: layer.index,
    visible: false
  });
}
Set Layer Visibility

Visibility Selectors

Use exactly one selector per visibility call:

  • index: One vector CAD layer index.
  • indexes: Multiple vector CAD layer indices.
  • id: One PDF layer ID.
  • ids: Multiple PDF layer IDs.
  • name: One layer display name.
  • names: Multiple layer display names.
  • all: Targets every layer.
typescript
await viewer.layers.setLayerVisibility({ index: 0, visible: false });
await viewer.layers.setLayerVisibility({ indexes: [0, 1, 2], visible: true });
await viewer.layers.setLayerVisibility({ id: 5, visible: false });
await viewer.layers.setLayerVisibility({ ids: [5, 6], visible: true });
await viewer.layers.setLayerVisibility({ name: "Layer 1", visible: false });
await viewer.layers.setLayerVisibility({ names: ["Layer 1", "Layer 2"], visible: true });
await viewer.layers.setLayerVisibility({ all: true, visible: true });
Visibility Selectors

Layer Types Reference

Important types exported by the library for layer properties:

typescript
type LayerKind = "vector" | "pdf";

type LayerDetails = {
  state?: number;
  defaultstate?: number;
  isplottable?: number;
  [key: string]: unknown;
};

type LayerItem = {
  index?: number;
  id?: string | number;
  name?: string;
  color?: string;
  visible: boolean;
  kind: LayerKind;
  details?: LayerDetails;
  [key: string]: unknown;
};

type LayersSnapshot = {
  requestId?: string;
  fileId?: string;
  fileIndex?: number;
  fileName?: string;
  layers: LayerItem[];
  [key: string]: unknown;
};
Layer Types Reference

Method and Option Types

Type definitions for layer options:

typescript
type GetLayersOptions = {
  requestId?: string;
  timeoutMs?: number;
};

type SetLayerVisibilityOptions = {
  requestId?: string;
  index?: number;
  indexes?: number[];
  id?: string | number;
  ids?: Array<string | number>;
  name?: string;
  names?: string[];
  all?: boolean;
  visible: boolean;
  timeoutMs?: number;
};
Method and Option Types

TypeScript Exports

Typing references exported directly by @rasterex/viewer:

typescript
import type {
  GetLayersOptions,
  LayerDetails,
  LayerItem,
  LayerKind,
  LayersApiOptions,
  LayersEventHandler,
  LayersEventMap,
  LayersEventName,
  LayersEventUnsubscribe,
  LayersSnapshot,
  SetLayerVisibilityOptions
} from "@rasterex/viewer";
TypeScript Exports

Validation and Errors

Validation checks applied to layer configuration requests:

  • visible must be a boolean.
  • Exactly one selector must be provided.
  • index must be a non-negative integer.
  • indexes must be a non-empty array of non-negative integers.
  • id must be a non-empty string or finite number.
  • ids must be a non-empty array of non-empty strings or finite numbers.
  • name must not be empty.
  • names must be a non-empty array of non-empty strings.
  • getLayers(...) and setLayerVisibility(...) reject if the matching snapshot is not received within timeoutMs.

Vanilla Example

Complete integration code setup for Vanilla HTML/JS environments:

<div id="viewer" style="height: 640px"></div>
<button type="button" id="load-layers">Load Layers</button>
<button type="button" id="hide-first-layer">Hide First Layer</button>
<pre id="status"></pre>
Vanilla Example

Canvas Broker Mapping

Broker message mapping for CAD layer APIs:

  • viewer.layers.getLayers(...) maps to getLayers.
  • viewer.layers.setLayerVisibility(...) maps to setLayerVisibility.
  • viewer.layers.setVisibility(...) maps to setLayerVisibility.
  • viewer.layers.on("snapshot", ...) listens to layersSnapshot.

Additional Resources

Use the related pages below when you need the matching block workflow or the full payload reference.