CuttingService

class wvc.CuttingService()

Service class for managing cutting plane operations in 3D models.

This service provides a high-level interface for creating, managing, and manipulating cutting planes and cutting sections. It acts as a bridge between the UI components and the underlying HOOPS Web Viewer cutting functionality.

Key features:

  • Cutting section management (create, activate, deactivate, clear)
  • Cutting plane operations (add, remove, update, visibility control)
  • Visual property management (color, opacity, reference geometry)
  • Capping geometry configuration
  • Event dispatching for UI synchronization
  • Face selection integration for plane creation

Examples

// Create and configure cutting service
const cuttingService = new CuttingService(cuttingManager);

// Add event listeners
cuttingService.addEventListener('hoops-cutting-plane-change', (event) => {
  console.log('Plane changed:', event.detail);
});

// Create a cutting plane
const plane = new Plane();
plane.normal = new Point3(1, 0, 0);
plane.d = 10;

const cuttingPlane = {
  plane,
  color: { r: 1, g: 0, b: 0 },
  opacity: 0.5
};

cuttingService.addCuttingPlane(0, cuttingPlane);
// Configure capping geometry
await cuttingService.setCappingGeometryVisibility(true);
await cuttingService.setCappingFaceColor('#ff0000');
await cuttingService.setCappingLineColor('#000000');

Events

hoops-cutting-sections-change

When cutting sections are loaded or changed

hoops-cutting-section-added

When a new cutting section is added

hoops-cutting-section-removed

When a cutting section is removed

hoops-cutting-section-change

When a cutting section state changes

hoops-cutting-plane-added

When a cutting plane is added to a section

hoops-cutting-plane-removed

When a cutting plane is removed

hoops-cutting-plane-change

When a cutting plane is modified

hoops-capping-geometry-visibility-changed

When capping geometry visibility changes

hoops-capping-face-color-changed

When capping face color changes

hoops-capping-line-color-changed

When capping line color changes

hoops-cutting-face-selection-change

When face selection changes

hoops-cutting-service-reset

When the service is reset with a new cutting manager

Constructors

wvc.CuttingService.constructor()
CuttingService(cuttingManager: ICuttingManager): CuttingService

Constructs a new CuttingService instance.

Parameters

cuttingManager: ICuttingManager

Optional HOOPS Web Viewer cutting manager to use for operations

Returns: CuttingService

Examples

// Create service with cutting manager
const service = new CuttingService(viewer.cuttingManager);

// Create service without manager (can be set later)
const service = new CuttingService();
service.cuttingManager = viewer.cuttingManager;

Properties

wvc.CuttingService.DefaultConfig

static readonly

Default configuration values for the cutting service.

wvc.CuttingService.serviceName

readonly

serviceName: “CuttingService”

The service identifier for this cutting service.

Accessors

wvc.CuttingService.cuttingManager()
get cuttingManager(): (undefined | ICuttingManager)

Gets the current HOOPS Web Viewer cutting manager.

Returns: (undefined | ICuttingManager)

The cutting manager instance, or undefined if not set
set cuttingManager(cuttingManager: (undefined | ICuttingManager)): void

Sets the HOOPS Web Viewer cutting manager.

Unbinds from the previous cutting manager (if any) and binds to the new one. Dispatches a ‘hoops-cutting-service-reset’ event when the manager changes.

Parameters

cuttingManager: (undefined | ICuttingManager)

The new cutting manager instance, or undefined to clear

Returns: void

Events

hoops-cutting-service-reset

When the cutting manager is changed

Methods

wvc.CuttingService.addCuttingPlane()
addCuttingPlane(sectionIndex: number, cuttingPlane: CuttingPlane): Promise

Adds a cutting plane to a cutting section.

Parameters

sectionIndex: number

The index of the cutting section to add the plane to

cuttingPlane: CuttingPlane

The CuttingPlane object containing plane definition and visual properties

Returns: Promise

Examples

const plane = new Plane();
plane.normal = new Point3(1, 0, 0);
plane.d = 0;

const cuttingPlane = {
  plane,
  color: { r: 1, g: 0, b: 0 },
  opacity: 0.5
};

service.addCuttingPlane(0, cuttingPlane);

Events

hoops-cutting-plane-added

When the plane is successfully added

Throws

Error if cutting manager is not set or section index is invalid

wvc.CuttingService.clearCuttingSection()
clearCuttingSection(sectionIndex: number): Promise

Clears all cutting planes from the specified cutting section.

Parameters

sectionIndex: number

The index of the cutting section to clear

Returns: Promise

Events

hoops-cutting-section-change

When the section is cleared

Throws

Error if cutting manager is not set or section index is invalid

wvc.CuttingService.getCappingFaceColor()
getCappingFaceColor(): (undefined | string)

Gets the current capping face color.

Returns: (undefined | string)

The capping face color as a hex string, or default value if no cutting manager is set
wvc.CuttingService.getCappingGeometryVisibility()
getCappingGeometryVisibility(): boolean

Gets the current capping geometry visibility state.

Returns: boolean

True if capping geometry is visible, false otherwise, or default value if no cutting manager is set
wvc.CuttingService.getCappingLineColor()
getCappingLineColor(): (undefined | string)

Gets the current capping line color.

Returns: (undefined | string)

The capping line color as a hex string, or default value if no cutting manager is set
wvc.CuttingService.getCuttingPlane()
getCuttingPlane(sectionIndex: number, planeIndex: number): (undefined | CuttingPlane)

Gets a specific cutting plane from a cutting section.

Parameters

sectionIndex: number

The index of the cutting section

planeIndex: number

The index of the cutting plane within the section

Returns: (undefined | CuttingPlane)

The CuttingPlane object at the specified indices, or undefined if not found
wvc.CuttingService.getCuttingPlaneCount()
getCuttingPlaneCount(sectionIndex: number): number

Gets the number of cutting planes in a cutting section.

Parameters

sectionIndex: number

The index of the cutting section

Returns: number

The number of cutting planes in the section, or 0 if section not found
wvc.CuttingService.getCuttingPlanes()
getCuttingPlanes(sectionIndex: number): CuttingPlane[]

Gets all cutting planes from a cutting section.

Parameters

sectionIndex: number

The index of the cutting section

Returns: CuttingPlane[]

Array of CuttingPlane objects representing all planes in the section
wvc.CuttingService.getCuttingSection()
getCuttingSection(index: number): (undefined | Section)

Gets a cutting section by index.

Parameters

index: number

The index of the cutting section to retrieve

Returns: (undefined | Section)

The Section object at the specified index, or undefined if not found
wvc.CuttingService.getCuttingSectionCount()
getCuttingSectionCount(): number

Gets the total number of cutting sections.

Returns: number

The number of cutting sections, or 0 if no cutting manager is set
wvc.CuttingService.getCuttingSections()
getCuttingSections(): Section[]

Gets all cutting sections.

Returns: Section[]

Array of Section objects representing all cutting sections
wvc.CuttingService.getModelBounding()
getModelBounding(): Box

Gets the current model bounding box.

Returns: Box

The model’s bounding box, or an empty Box if not set
wvc.CuttingService.getSelectedFace()
getSelectedFace(): (undefined | SelectedFace)

Gets the currently selected face for creating cutting planes.

Returns: (undefined | SelectedFace)

The selected face data, or undefined if no face is selected
wvc.CuttingService.removeCuttingPlane()
removeCuttingPlane(sectionIndex: number, planeIndex: number): Promise

Removes a cutting plane from a cutting section.

Parameters

sectionIndex: number

The index of the cutting section containing the plane

planeIndex: number

The index of the cutting plane to remove

Returns: Promise

Events

hoops-cutting-plane-removed

When the plane is successfully removed

Throws

Error if cutting manager is not set, section index is invalid, or plane index is invalid

wvc.CuttingService.resetConfiguration()
resetConfiguration(obj: object): Promise

Resets the cutting service configuration to default values or provided configuration.

Parameters

obj: object

Optional configuration object to apply, or undefined to use default configuration

Returns: Promise

Examples

// Reset to default configuration
await service.resetConfiguration();

// Apply custom configuration
await service.resetConfiguration({
  cappingGeometryVisibility: false,
  cappingFaceColor: '#ff0000',
  cappingLineColor: '#000000'
});

Throws

Error if cutting manager is not set or configuration object is invalid

wvc.CuttingService.setCappingFaceColor()
setCappingFaceColor(color: string): Promise

Sets the capping face color.

Parameters

color: string

The color as a hex string (e.g., “#ff0000”), or undefined to use default

Returns: Promise

Events

hoops-capping-face-color-changed

When face color changes

Throws

Error if cutting manager is not set

wvc.CuttingService.setCappingGeometryVisibility()
setCappingGeometryVisibility(cappingGeometryVisibility: boolean): Promise

Sets the capping geometry visibility state.

Parameters

cappingGeometryVisibility: boolean

True to show capping geometry, false to hide

Returns: Promise

Events

hoops-capping-geometry-visibility-changed

When visibility state changes

Throws

Error if cutting manager is not set

wvc.CuttingService.setCappingLineColor()
setCappingLineColor(color: string): Promise

Sets the capping line color.

Parameters

color: string

The color as a hex string (e.g., “#000000”), or undefined to use default

Returns: Promise

Events

hoops-capping-line-color-changed

When line color changes

Throws

Error if cutting manager is not set

wvc.CuttingService.setCuttingPlaneColor()
setCuttingPlaneColor(sectionIndex: number, planeIndex: number, color: IColor): void

Sets the face color of a specific cutting plane.

Parameters

sectionIndex: number

The index of the cutting section containing the plane

planeIndex: number

The index of the cutting plane to modify

color: IColor

The new face color (RGB values between 0 and 1)

Returns: void

Events

hoops-cutting-plane-change

When the plane color changes

Throws

Error if cutting manager is not set, section index is invalid, or plane index is invalid

wvc.CuttingService.setCuttingPlaneLineColor()
setCuttingPlaneLineColor(sectionIndex: number, planeIndex: number, lineColor: IColor): void

Sets the line color of a specific cutting plane.

Parameters

sectionIndex: number

The index of the cutting section containing the plane

planeIndex: number

The index of the cutting plane to modify

lineColor: IColor

The new line color (RGB values between 0 and 1)

Returns: void

Events

hoops-cutting-plane-change

When the plane line color changes

Throws

Error if cutting manager is not set, section index is invalid, or plane index is invalid

wvc.CuttingService.setCuttingPlaneOpacity()
setCuttingPlaneOpacity(sectionIndex: number, planeIndex: number, opacity: number): void

Sets the opacity of a specific cutting plane.

Parameters

sectionIndex: number

The index of the cutting section containing the plane

planeIndex: number

The index of the cutting plane to modify

opacity: number

The new opacity value (between 0.0 and 1.0)

Returns: void

Events

hoops-cutting-plane-change

When the plane opacity changes

Throws

Error if cutting manager is not set, section index is invalid, or plane index is invalid

wvc.CuttingService.setCuttingPlaneVisibility()
setCuttingPlaneVisibility(sectionIndex: number, planeIndex: number, visible: boolean): Promise

Sets the visibility of reference geometry for a specific cutting plane.

Parameters

sectionIndex: number

The index of the cutting section containing the plane

planeIndex: number

The index of the cutting plane to modify

visible: boolean

True to show reference geometry, false to hide

Returns: Promise

Events

hoops-cutting-plane-change

When the plane visibility changes

Throws

Error if cutting manager is not set, section index is invalid, or plane index is invalid

wvc.CuttingService.setCuttingSectionGeometryVisibility()
setCuttingSectionGeometryVisibility(sectionIndex: number, hidden: boolean): Promise

Sets the reference geometry visibility for a cutting section.

Parameters

sectionIndex: number

The index of the cutting section to modify

hidden: boolean

True to hide reference geometry, false to show

Returns: Promise

Events

hoops-cutting-section-change

When the section visibility changes

Throws

Error if cutting manager is not set or section index is invalid

wvc.CuttingService.setCuttingSectionState()
setCuttingSectionState(sectionIndex: number, active: boolean): Promise

Sets the active state of a cutting section.

Parameters

sectionIndex: number

The index of the cutting section to modify

active: boolean

True to activate the section, false to deactivate

Returns: Promise

Events

hoops-cutting-section-change

When the section state changes

Throws

Error if cutting manager is not set or section index is invalid

wvc.CuttingService.setModelBounding()
setModelBounding(modelBounding: Box): void

Sets the model bounding box.

Parameters

modelBounding: Box

The new model bounding box

Returns: void

wvc.CuttingService.updateCuttingPlane()
updateCuttingPlane(sectionIndex: number, planeIndex: number, cuttingPlane: Partial): Promise

Updates properties of an existing cutting plane.

This method allows partial updates to cutting plane properties including plane geometry, visual properties (color, opacity), and reference geometry. The plane normal is automatically normalized for proper reference geometry alignment.

Parameters

sectionIndex: number

The index of the cutting section containing the plane

planeIndex: number

The index of the cutting plane to update

cuttingPlane: Partial

Partial CuttingPlane object with properties to update

Returns: Promise

Examples

// Update only the color
service.updateCuttingPlane(0, 0, {
  color: { r: 0, g: 1, b: 0 }
});

// Update plane position and opacity
const newPlane = new Plane();
newPlane.normal = new Point3(0, 1, 0);
newPlane.d = 5;

service.updateCuttingPlane(0, 0, {
  plane: newPlane,
  opacity: 0.8
});

Events

hoops-cutting-plane-change

When the plane is successfully updated

Throws

Error if cutting manager is not set, section index is invalid, or plane index is invalid