Moving ALL Geometry in an entire Speckle Stream/Project

We need to move ALL the geometry in one Stream/Project on Speckle by a single vector transform (because the project origin coordinates have changed) Is it possible to write a script to do this?

How would we run this in a safe way to guarantee that it recursively processes every sub-branch and sub-sub-branch and every commit?

Is it possible to mark the moved models as updated.

1 Like

Good to see you back with the community @Jonathan_Rabagliati !

Can I check, is the predominantly Revit geometry or a mix across all connectors‘s data types.

We ask because while you can of course do this (in one or two ways) programmatically if the destination is Revit then this is possible with the current connector with a bit of careful maths with the receive mode settings.

Of course if you have hundreds of Model branches then this is a burden.

Likewise this is only possible to take an existing version commit‘s content, move that and re-commit as a new version- in case you were hoping to vector translate the entire history.


Incidentally, we‘d be interested in working with you to have this as a demonstration function to become available within Speckle Automate, this wouldn’t be useful on the live data on your server right away while Automate is in beta, but the scripting would be the same.

@jonathon Because the survey point has moved for the project we are working on, we’d like with one hit to go through every nested model on our project on Speckle to move the geometry by a single transform vector.

The majority of the geometry has come from grasshopper. Often the destination is grasshopper or Rhino. Sometimes Revit or other software. With a large project, I actually don’t know all the use cases. We want a solution that is software agnostic that is simply about moving ALL geometry.

It’s also time critical, as if people already start using the new origin on Speckle then we are in mixed mode and have lost the chance to move everything in one go. It will get messy fast.

I can see the validity of having a live automate function. To intercept future geometry and move it. However In this case we’d like to avoid that and retroactively move EVERYTHING in one hit.

Does that makes sense?

Happy to work with you directly to try to solve this.

Absolutely understood. The automate reference was that the code will be ultimately the same.

I think best steps will be to have some small non-project data in a separate stream on your Speckle server. Enough data to be representative of types and also contextually verifiable that the transforms are correct.

@jonathon Another consideration that is loosely related to this. We have over 100 branches nested multiple times. The issue above relates to moving ALL the geometry. Because the survey point has shifted.

The other issue is editing the branch hierarchy (or doing a find/replace on some of the names in the nestings, or removing a level in the hierarchy) without having to go through every branch manually. This is another example of globally addressing every branch name in the stream. Now it might be that this is super easy in the new interface. I hope so. I don’t know yet, and is better to do at an interface level than a script level, but in the old interface it would be a nightmare with over 100 nested branches.

As projects progress through different stages and levels of maturity and need some branches archived or pruned or reordered or reorganized or renamed or repurposed, it is a capability that should be provided and super easy.

1 Like

Yes, I think “loosely associated“ is correct.

There are a few open feature request threads for all sorts of ways that organisational support for server runners; describing varieties from admin technical aspects, permissions, roles, UI and more. Let’s concentrate on tackling coordinate migration here.


The latter we count on relying on your sagely and considered insights among others to really nail how to get that right.

I appreciate the enthusiasm and confidence in our team’s ability to implement new features. :speckle: