This is an attempt to map the availability, bugs and issues with SketchUp's observer system. Data is gathered from personal testing and from information on the internet such as SketchUcation. All observers has not been tested equally in depth, nor has all been tested on both platforms.
Please contact me if you can provide more information on this topic.
AppObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
---|---|---|---|---|---|
onNewModel
|
Working | Working | Working | Working | Working |
onOpenModel
|
Working | Working | Working | Working | Working |
onQuit
|
Working | Working | Working | Working | Working |
onUnloadExtension
|
Didn't Exist | Working | Working | Working | Working |
DefinitionObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onComponentInstanceAdded
|
Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Mistrigger | Mistrigger |
onComponentInstanceRemoved
|
Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Mistrigger | Mistrigger |
DefinitionsObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onComponentAdded
|
Working | Working | Working | Working | Working |
onComponentPropertiesChanged
|
Mistrigger | Mistrigger | Mistrigger | Mistrigger | Mistrigger |
onComponentRemoved
|
Working | Working | Mistrigger | Mistrigger | Mistrigger |
onComponentTypeChanged
|
Working | Working | Working | Working | Working |
EntitiesObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onContentsModified
|
Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Deprecated | Deprecated |
onElementAdded
|
Working | Working | Working | Working | Working |
onElementModified
|
Didn't Exist | Didn't Exist | Didn't Exist | Working | Working |
onElementRemoved
|
Can Crash | Can Crash | Can Crash | Working | Working |
onEraseEntities
|
? | ? | ? | ? | ? |
EntityObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onChangeEntity
|
Can Crash, Mistrigger | Can Crash, Mistrigger | Mistrigger | Mistrigger | Mistrigger |
onEraseEntity
|
Can Crash, Bugged | Can Crash, Bugged | Bugged | Bugged | Bugged |
FrameChangeObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
frameChange
|
Bugged under Windows | Bugged under Windows | Bugged under Windows | Bugged under Windows | Bugged under Windows |
InstanceObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onClose
|
Working | Doesn't Trigger | Doesn't Trigger | Can Crash under OSX | Can Crash under OSX |
onOpen
|
Working | Working | Working | Can Crash under OSX | Can Crash under OSX |
LayersObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onCurrentLayerChanged
|
Mistrigger | Mistrigger | Mistrigger | Mistrigger | Mistrigger |
onLayerAdded
|
Working | Working | Working | Working | Working |
onLayerRemoved
|
Working | Working | Working | Working | Working |
onRemoveAllLayers
|
? | ? | ? | ? | ? |
MaterialsObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onMaterialAdd
|
Working | Working | Working | Working | Working |
onMaterialRefChange
|
Working | Working | Working | Mistrigger | Mistrigger |
onMaterialSetCurrent
|
Bugged under OSX | Bugged under OSX | Bugged under OSX | Working | Working |
onMaterialChange
|
Doesn't Trigger | Doesn't Trigger | Working | Working | Working |
onMaterialRemove
|
Working | Working | Working | Working | Working |
onMaterialRemoveAll
|
Mistrigger | Mistrigger | Mistrigger | Deprecated | Deprecated |
onMaterialUndoRedo
|
Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Working | Working |
ModelObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onActivePathChanged
|
Didn't Exist | Working | Working | Working | Working |
onAfterComponentSaveAs
|
Didn't Exist | Working | Working | Working | Working |
onDeleteModel
|
? | ? | ? | ? | ? |
onEraseAll
|
? | ? | ? | ? | ? |
onExplode
|
Didn't Exist | Working | Working | Working | Working |
onPlaceComponent
|
Didn't Exist | Working | Working | Working | Working |
onPostSaveModel
|
Didn't Exist | Didn't Exist | Didn't Exist | Working | Working |
onPreSaveModel
|
Didn't Exist | Didn't Exist | Didn't Exist | Working | Working |
onSaveModel
|
Mistrigger | Mistrigger | Mistrigger | Working | Working |
onTransactionAbort
|
Working | Working | Working | Working | Working |
onTransactionCommit
|
Mistrigger | Mistrigger | Mistrigger | Mistrigger | Mistrigger |
onTransactionEmpty
|
Working | Working | Working | Working | Working |
onTransactionRedo
|
Working | Working | Working | Working | Working |
onTransactionStart
|
Mistrigger | Mistrigger | Mistrigger | Mistrigger | Mistrigger |
onTransactionUndo
|
Working | Working | Working | Working | Working |
OptionsProviderObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onOptionsProviderChanged
|
Working | Working | Working | Working | Working |
PagesObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onContentsModified
|
Working | Working | Working | Working | Working |
onElementAdded
|
Working | Working | Working | Working | Working |
onElementRemoved
|
Working | Working | Working | Working | Working |
RenderingOptionsObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onRenderingOptionsChanged
|
Working | Working | Working | Working | Working |
SelectionObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onSelectionAdded
|
Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Doesn't Trigger |
onSelectionBulkChange
|
Mistrigger | Mistrigger | Mistrigger | Mistrigger | Mistrigger |
onSelectionCleared
|
Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Doesn't Trigger | Doesn't Trigger |
onSelectionRemoved
|
Working | Working | Working | Working | Working |
ShadowInfoObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onShadowInfoChanged
|
Working | Working | Working | Working | Working |
ToolsObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onActiveToolChanged
|
Bugged under OSX | Bugged under OSX | Working | Working | Working |
onToolStateChanged
|
Bugged under OSX | Bugged under OSX | Working | Working | Working |
ViewObserver | SketchUp 6 | SketchUp 7.0 | SketchUp 7.1 | SketchUp 8.0 | SketchUp 8.0 M1 |
onViewChanged
|
Working | Working | Working | Working | Working |
When the user performs a Copy+Move the events triggers unexpectantly.
Even though only one instance is added the event triggers multiple times. Notice that the two last events refer to a non-existant definition.
There are several issues with this event's behaviour and the API documentation's description:
onComponentAdded
.There are several issues with this event's behaviour and the API documentation's description:
EntityObserver.onChangeEntity
mistriggers right before
EntityObserver.onEraseEntity
, referencing a non-existant
entity.
EntityObserver.onEraseEntity
reference a non-existant entity.
As of SU8.0 this event was renamed to EntitiesObserver.onElementModified
and changed to provide two aguments.
Release Notes
Only mentioned in the documentation for the Pages class. And it does not have an interface class one can inherit from.
class Test_FrameChangeObserver
def frameChange( fromPage, toPage, percent_done )
puts "#{fromPage} - #{toPage} - #{percent_done}"
end
end
Sketchup::Pages.add_frame_change_observer(Test_FrameChangeObserver.new)
In SketchUp 6 and 7, thefromPage
argument into the callback does not appear to be populated on the PC. You can store a variable that keeps track of thetoPage
and then use that on a subsequent Scene selection to determine the last Page that the user was on.
Under OSX, when using this observer SketchUp will crash when the user quits SketchUp without saving the model first. Quiting and then choosing to save will also cause crash.
SketchUp under Windows does not suffer from this.
This event mistriggers when the user initiate Save As and then cancels the operation.
These event mistriggers between the model.start_operation
and
model.commit_operation
every time the model changes instead
of being in sync with model.start/commit_operation
.
Because of this it is not possible to be notified when a new item appears in the undo stack.
Renaming the current layer will also trigger this event. Renaming any other layers does not trigger this event.
When purging materials, or right-clicking a material in the Material Browser, this event triggers one time for every entity with a material. This causes a long series of events to trigger unnecessarily.
Under OSX, this event will trigger when the user paints something in the model, as oppose to under Windows when it trigger as the user picks a new material.
In SketchUp prior to 8.0 this event triggers at other material events, even for the non-triggering materials events.
As of SketchUp 8.0 this event id deprecated.
onSelectionBulkChange
triggers instead of
onSelectionAdded
and onSelectionRemoved
.
Release notes of SketchUp 8.0 claims the events where fixed, but this appear to not be the case.
In SketchUp 6 and SketchUp 7.0, tool names on the Mac have some of their first characters truncated. For instance, on Windows, a tool is "CameraOrbit". On the Mac, is comes across as "raOrbit". Therefore, use the tool_id to keep track of which tool you need to watch for, or use logic that corrects for the error.