My team has created a plugin for our office that gives the user visual feedback if walls are drawn slightly askew or to a non-buildable dimension.
This plugin accomplishes this via notification manager and attaching observers to:
- newly drawn walls
- newly reserved walls
It then checks these walls for a property for length and angle, and updates those property values when the wall is changed or reserved, to ensure all walls get "checked". The colorizing of the walls is done via graphic overrides checking those properties.
This all functions as intended. This issue is that on occasion we are experiencing issues when multiple users are in the same Teamwork project, and it seems isolated to cases where modules have been exported while the plugin is loaded.
I just tested this in a small project, and indeed had issues when trying to hotlink a module in which walls were included, where the plugin had attached an observer to those walls.
I believe the issues are arising in that some people, without the plugin active, are having Archicad attempt to load observer data on walls within modules without the plugin to process that data.
In my test, when trying to place the hotlink with the plugin active that created the observers, I got an error and the hotlink was not placed. If i removed the plugin, I was then able to place the hotlink after accepting to a window that appeared stating there was plugin data present, asking if I wanted to keep or remove that data. Removing the data allowed the hotlink to be placed without error.
TL;DR : How can I safely allow the user to observe elements via the plugin, without allowing any of the plugin data to be embedded in the project or modules? I am attempting to detach the observers when the session ends or when the user Send and Receives, but I clearly am not scrubbing these elements of data.
It seems this would affect any instance of using the observers in a teamwork project, yet I've seen little mention of it within samples or the forums.