Best practice to host .gh online?

With all of the recent development with Containers, Hops, etc., I was wondering about the simplest way to achieve .gh sharing. My ideal scenario:

I create some .gh files and a corresponding toolbar that launches them.
I post the files online (probably OneDrive or Sharepoint) that handles access permissions.
I share the toolbar with my colleagues, and they can launch the .gh files from within their user profiles.

I am currently launching .gh files locally using toolbar command (_-Grasshopper _Document _Open…) but that doesn’t seem to play nice with URL’s (i.e. Onedrive links). Is there any way to replicate this workflow with cloud-hosted .gh files? For simplicity I’m hoping to avoid Hops, although I am afraid I might be forced to go that route…

tx,

dh

Thanks Joseph! I’m familiar with ShapeDiver, but I’m not looking to host the operation of the .gh online, just the file itself. It would open normally within the users Rhino/GH environment. Good suggestion, though.

@declan
So basically you would want Gh to automatically download and start a file based on an url? In order to maintain always the newest version, the download (or checking if newer version exist) should happen every time the toolbar is clicked.

If you have control over the software setup of the colleagues, Dropbox or Onedrive desktop apps could give you this… Keeping the file up to date and maintaining a local version. I’m using a combination of dropbox and vsubst to map a folder to a same drive name on all machines. Then the paths are the same on all machines. Not sure if vsubst is even needed nowadays, or if it can be maintained directly through Windows. This is not however directly related to your case, but just scouting out ideas.

Can you open a Rhino file through url? Does this functionality exist in Rhino?

personally, i find that the most convenient way would be to simply sync the folders using dropbox/onedrive/gdrive/etc. clients.

to achieve your exact functionality, you can code a web downloader plugin in c#. you’ll find online various ways to get files from different popular drives.

this plugin might be useful - although it uses github as a host - free for public repos, but they have commercial licenses for custom private hosting solutions

Thanks. @Toni_Osterlund - yes that is exactly what i mean. The team does, in fact, all use OneDrive Sync, but the local sync golder includes their user name, so the rhino macro has to be different on each machine. Your idea about mapping would solve that, though. I will check if our corporate I.T. will allow this (or if there is some other option).

Oh, this is very interesting thanks!

1 Like

@declan
If the folder path is otherwise the same, but just located in user folder, then the Windows shortcut %userprofile%, or similar environmental variable, might work on paths as well.

1 Like

Hm, I can’t find an implementation of %userprofile% that works. Am I using it correctly? I’ve tried:

_-Grasshopper _Document _Open “C:\Users%userprofile%\OneDriveFolder\GrasshopperFile.gh” _EnterEnd

_-Grasshopper _Document _Open “C:%userprofile%\OneDriveFolder\GrasshopperFile.gh” _EnterEnd

_-Grasshopper _Document _Open “%userprofile%\OneDriveFolder\GrasshopperFile.gh” _EnterEnd

If I use my actual username in the first one it works as expected.

Thanks!

dh

@declan
It should be
%userprofile%OneDriveFolder\GrasshopperFile.gh

Tested this, and at least a Rhino file opens with this:
%userprofile%OneDrive\File.3dm

Edit:
To clarify:
%userprofile% equals the path to the user folder as a complete path on its own.

@declan
…tested out of curiosity - %onedrive% variable also exists!
This is really useful if the user has defined Onedrive folder somewhere else.

2 Likes

You could also try use Git and one of those Cloud Service like Github, Gitlab or Bitbucket. With GitLFS you can also store larger files. If you use a .ghx instead of a .gh, you will also see the changes inside the file.
If all user understand how to write good commit messages, the whole development process becomes quite transparent.

Have you checked out DefinitionLibrary? (full disclosure:I wrote it!)

It was designed with a team in mind, with colleagues publishing clusters and whole files to a searchable (tags, nested names, etc) shared cloud library with version history.

There is no local git clones with DefinitionLibrary - files can be saved anywhere.
When it comes time to:

  • update the library with your latest local changes, or
  • to find a cluster to import onto the canvas, or
  • switch versions of a cluster (in-line), or
  • download a file you don’t already have, etc
    then you use the plug-in to read/write to/from the library using pop-ups from within the Grasshopper window.

GitHub is essentially used as the data storage platform and permissions are handled through the GitHub website.

It’s available in PackageManager. Happy to explain more, and you can have a read of the documentation at Home · nicolaasburgers/definition-library-releases Wiki · GitHub

Cheers - Nic

1 Like