RFDT Solver and WiTwin Simulator are undergoing internal testing as we prepare for public release. The functions are limited. Sign up to receive updates.

Settings

Editor preferences and configuration options

Overview#

The Settings panel provides configuration options for the editor including display settings, performance options, connection settings, and user preferences. Settings are persisted in LocalStorage and survive across sessions.

Display Settings#

Theme#

OptionDescription
DarkDark theme (default)
LightLight theme
AutoFollow system preference

Viewport Quality#

PresetDescription
LowReduced quality for performance
MediumBalanced quality
HighHigh quality rendering
UltraMaximum quality

Visual Helpers#

SettingDescriptionDefault
GridShow ground gridOn
Grid SizeGrid dimensions10
Grid DivisionsGrid subdivisions10
Axes HelperShow XYZ axesOn
Scale BarShow scale indicatorOff

Performance Settings#

SettingDescriptionDefault
Target FPSFrame rate limit (30/60/120)60
VSyncVertical syncOn
Frustum CullingSkip off-screen objectsOn

Connection Settings#

SettingDescription
Server URLWebSocket server address
Auto-reconnectReconnect on disconnect
Connection StatusCurrent connection state

Sync Options#

SettingDescriptionDefault
Sync CameraShare camera viewOff
Sync SelectionShare selection stateOn

Editor Preferences#

General#

SettingDescriptionDefault
Auto-saveAutomatic scene savingOn
Auto-save IntervalSave frequency (seconds)60
Undo LevelsMaximum undo history50
Confirm DeleteShow delete confirmationOn

Controls#

SettingDescriptionDefault
Mouse SensitivityCamera rotation speed1.0
Zoom SpeedScroll zoom factor1.0
Gizmo SizeTransform gizmo scale1.0

Snap Settings#

SettingDescriptionDefault
Snap to GridPosition snappingOff
Grid Snap SizeSnap increment1.0
Rotation SnapAngle snappingOff
Rotation Snap AngleSnap degrees15°

Units#

SettingOptionsDefault
LengthMeters, FeetMeters
AngleDegrees, RadiansDegrees
TimeSeconds, FramesSeconds

Extension Settings API#

Extensions can define custom settings using the @settings decorator:

from witwin.settings import Settings, settings
from witwin.components import float_field, bool_field, string_field
 
@settings(name="MyExtensionSettings", category="my_extension")
class MyExtensionSettings(Settings):
    api_key = string_field("", description="API Key")
    enabled = bool_field(True, description="Enable extension")
    threshold = float_field(0.5, min=0.0, max=1.0)

Accessing Settings#

from witwin.settings import SettingsRegistry
 
# Get settings instance
my_settings = SettingsRegistry.get("my_extension")
 
# Read values
if my_settings.enabled:
    print(f"Threshold: {my_settings.threshold}")

Storage#

Settings are stored in browser LocalStorage:

localStorage["witwin_settings"] = JSON.stringify({
  theme: "dark",
  viewportQuality: "high",
  gridEnabled: true,
  // ...
})