GraphicalEditingScope Class

Represents a period of time within an interactive editing session during which the geometry of elements being displayed in one or more Viewports is being modified. Outside of such a scope, whenever the geometry within a GeometricModel changes new Tiles must be generated to reflect those changes in a viewport. Regenerating entire tiles each time individual elements change can be time-consuming, which may introduce an unacceptable delay between making a modification and seeing its result on the screen.

Within the context of a graphical editing scope, no new tiles are generated. Instead, the geometry for any deleted or modified elements is hidden in the tile graphics, and additional temporary graphics are displayed for any newly-inserted or modified elements. Only when the scope exits are new tiles produced.

The application decides when to enter and exit a graphical editing scope. A single interactive editing session may involve any number of editing scopes. Typically, applications will enter a new editing scope (after first exiting a previous scope, if one exists):

  • When switching from a non-graphical workflow to one that involves editing geometry; or
  • When changing which geometric model is being edited; or
  • After performing an operation that creates or modifies a "large" number (perhaps hundreds?) of elements.

An application should typically exit any graphical editing scope before:

  • Pulling changesets; or
  • Switching from a graphical editing workflow to some non-graphical workflow.

Graphical editing scopes are only supported for BriefcaseConnections opened in read-write mode that contain version 1.0.11 or newer of the BisCore schema.

see BriefcaseConnection.enterEditingScope to create a scope for a briefcase.

see BriefcaseConnection.editingScope to obtain a briefcase's current scope.

see GraphicalEditingScope.exit to terminate a scope.



  • EditingScopeNotifications


Name Description
constructor(_key: string): GraphicalEditingScope    
exit(): Promise<void> Exits this editing scope.  
getGeometryChanges(): Iterable<ModelGeometryChanges> Obtain all geometric changes to models accumulated within this scope.  
getGeometryChangesForModel(modelId: Id64String): Iterable<ElementGeometryChange> | undefined Obtain all geometric changes to elements within the specified model accumulated within this scope.  

Inherited methods

Name Inherited from Description
registerImpl(): RemoveFunction NotificationHandler  
register(): RemoveFunction Static NotificationHandler Register this class as the handler for notifications on its channel.


Name Type Description
briefcaseChannelName Accessor ReadOnly IpcAppChannel    
iModel BriefcaseConnection The connection to the iModel being edited.  
onEnter Static BeEvent<(scope: GraphicalEditingScope) => void> Event raised when a new scope is created for any BriefcaseConnection.  
onExited BeEvent<(scope: GraphicalEditingScope) => void> Event raised when this scope has exited.  
onExiting BeEvent<(scope: GraphicalEditingScope) => void> Event raised when this scope is about to exit.  
onGeometryChanges BeEvent<(changes: Iterable<ModelGeometryChanges>, scope: GraphicalEditingScope) => void> Event raised after geometric changes are written to the iModel.  

Inherited properties

Name Type Inherited from Description
channelName Accessor ReadOnly string BriefcaseNotificationHandler  

Defined in

Last Updated: 16 April, 2021