My instance of SketchUp can only handle my edit interactions with what I locally have caused to be the active edit context.
In order for two distantly separated users to be making changes at the same time to the same object, the model’s active edit context must be the same for both users. For this scenario (wall edit) we would assume both user’s model had entered the wall object’s edit context. (See the API Sketchup::Entities collection class.)
First of all, I myself would find this confusing and annoying. (Really only one user should be editing an object at a time. Ie, A double-clicks and enters a wall object. That particular wall is locked for B but could “watch” as A modifies it.)
Currently there is NO mechanism in the API or SketchUp that expects Ruby extension code to be running (making the remote changes) whilst the local user is using native tools or other extension tools. This would be a kind of multi-tasking operation.
You might … big might, be able to write some time sharing code so that a little of the local edit happens then some of the remote edit, etc. But the main problem is that you cannot control either native tool operations nor all the other extensions that users use. So I doubt it.
Any extension can do this if it’s code is that which is running. Whilst it does this, the main application thread is suspended. (Often in very long duration operations the application goes into ghost window … ie “Not responding” mode.)
I really do not think so.
EDIT: Well, perhaps, if they were working on a different component in the model and did not effect the viewpoint (camera) of the other editor, nor move what the other guy was editing, nor make changes that effected what the other guy wanted visible. Ie, each editor would need to be working through separate scene pages and any switching on / off of (layer) tags must apply only to their own scene page.
But still, the updates to the local models would need to be staggered. Ie, real time is just not possible.
Either a timer would need to be used, or users manually click an update button.
Well the idea has some merit, but I do not think inside desktop SketchUp.
I think that some others have tried and wasted their time trying.
This one claims to have done it. (It has a trial):
- ReVue
But I think it may use the update definition and publish scenario I contemplated above.
Now there are quite a few external presentation exporters that write proprietary file formats that can then be shared with multiple “watchers”. See:
… likely others as well.
If you take the web-based SketchUp Free for a spin, you get a better idea of what is possible if you change your thinking to a cloud app. If so, you either use your own model data format or something that is open source like glTF or COLLADA. There are already free 3D JavaScript API libraries you can use. (See the references on those linked pages.)
The “watchers” that are not going to edit … should not need to install an edit application like SketchUp.
They could just “watch” one of the actual modelers desktops using Zoom or Google Meet or some other desktop sharing / meeting web app.
Note that there are already several free glTF importers and exporters for SketchUp available.
I also imagine that other 3D modelers have importers.