-
-
Notifications
You must be signed in to change notification settings - Fork 346
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sync with Library / Template (aka, Reconcile to/from Library/Templates) #2486
Comments
Hi @svalenziano, I'm offering my personal point of view, that doesn't necessarily coincide with pyRevit team's. File based "libraries" are a PITA to manage, if you want some robustness it's better to have a layer on top of the filesystem that manages metadata and versioning. I hope you understand that this is not that simple, and pyRevit teams is really undersized for even thinking about implementing something like this, which is largely out of scope. By the way, pyRevit Extension Hooks are nothing more that a wrapper around the Revit Application events, so they can be used by the hypothetical clients mentioned earlier directly in c# without having to depend on this project. |
@sanzoghenzo , thanks a lot for your thoughts! Your proposed database-based system definitely sounds robust, but could you elaborate on the downfalls that you forsee with a file-based system? Below are the pros and cons that I could think of, although I'm sure I'm missing some key points.... Upsides of file-based library
Downsides of File-based library
Existing solutions |
a file-based library biggest downside is the vulnerability to... file-based operations: renaming or moving the files would break everything, if you rely on folder structures and file names for the system to work. And since we're talking about a shared environment, every head thinks differently and wants to organize things as they see fit; Finally, if you want to rely on a cloud drive, you could get any kind of problems with its sync process. Unfortunately I don't know of any solution for this, I recall my colleagues tried some services a long time ago, but I can't remember what it was (and it probably doesn't exist anymore). |
@sanzoghenzo that all makes sense; those are some real issues that I hadn't considered. We're considering implementing the solution at a small firm, so perhaps some of the issues would be less acute, but I can definitely see how a database + API would be a much better solution. I will probably drop this for now, but may revisit in the future. Thank you for your time and expertise! |
Is your feature request related to a problem? Please describe
You update an .rfa loadable-family in one .rvt file and save it to the Family Library (perhaps stored in Google Drive). It's now up-to-date in your .rvt file and the library, but it's out-of-date in all of the other .rvt files. How do you update the family in each of those revit files?
Also, how do you avoid saving over a family in your library if it has been modified recently by another user, creating a sync conflict?
In a perfect world, every Revit project would start out with a fully-formed template. All families would be fully fleshed out, with no need for modification. As we know, it's not a perfect world, and reality often demands that we make improvements to our methods while a project is being designed.
Perhaps there's an existing solution using Pyrevit, or another tool?
Describe the solution you'd like
I'm considering writing a Pyrevit extension that would solve this problem, if it's not a dumb idea, and if there's not already a good solution to this problem. I would also be happy to collaborate on such a project. Here's a sketch of what such a solution would look like:
Press the 'Sync with Family Library' button. The following things happen:
Provide useful information to user: display warning and refer user to logs if any anomalies occur. Logs include:
Behind the scenes, PyRevit's "Extension Hooks" can probably be utilized to auto-save the last-modified date as a Parameter within the file to sidestep the hazard posed by Google Drive's (and other filesystems) unreliability regarding last-modified timestamps (see forum post for example).
Describe alternatives you've considered
Additional context
Here's a diagram describing the problem in further detail:
The text was updated successfully, but these errors were encountered: