I’m looking into possibility to limit the amount of parameters to be sent from Revit to Speckle i.e. some Revit plugins add extra parameters to Families and I don’t want them to go to Speckle i.e. to keep my streams clean / for confidentiality reasons / to sync streams quicker / to keep Speckle database file reasonably small.
It is sth that can be done?
The quick answer is unfortunately no, as the Revit connector is currently grabbing all parameters on an element.
You could get more granular control by only sending the parameters that you need by using Dynamo, but you’d have to take care of extracting the geometry and parameters yourself in that case!
Are there any specific reasons why you’d like to remove that data? Is it performance, security, “cleanliness”…?
An upcoming release of the Dynamo connector will allow you to send Revit elements too, but they will be converted and sent in the same way Revit already does, so by including all parameters.
Thanks Mateo! For starters I see that sending data to Speckle Server takes too long for me for a simple push, with most of the data/parameters being garbage for my usecase.
Also, I can see a possibility for me to accidentally override data that I’m not focused on in my stream once I push it back to Revit i.e. if I had a stream for “electrical data” on my equipment, I pull the family instances from Revit, modify the objects in python and I can push back “already outdated data” about structural loading hosted in same family instance of Mechanical Equipment.
I see! Well, we have never benchmarked performance implications of accessing all parameters vs a few of them, but I agree with you there would be some savings there!
The main question would be how to let a user exclude un-needed parameters from the connector UI in a simple and straightforward way…
In the meantime, if you are post processing the data in python, the best souluton would probably be to remove from the gargabe parameters there before sending the data back to Revit.
I understand your point on having the Revit connector as simple as possible and using a config file attached to stream wouldn’t be an option
Where does the “send stream” definition created with Revit live? I mean all the element selection definition like filtering by category, view etc?
If the answer is “defined in Revit but stored on the server” then perhaps to keep it simple you could initially define it in Revit as it currently is and first commit gets sent with all the parameters.
After that (once steam is visible in server admin) you modify /fine tune the stream via Admin to exclude parameters? You could also have one checkbox “exclude geometry” to deal with 3d representation correctly.
I’m not sure but it could be also a gain on database size in long run ie is Revit object saved in JsonField in Postgres or each parameter is a table column? I’m guessing it’s the first option (as migrating tables potentially on every stream push if someone adds parameters could be an overkill ) so your next commits would be slimmer and not store that much data
Feel free to correct me if I didn’t quite get the point on how Speckle is doing things under the hood and I’m suggesting something that would be against that
This sounds quite interesting and we could definitely explore it at some point! At the moment there are no concerns around db size, we are also doing quite a lot of optimization and only storing the same objects once (an object could be a revit parameter, an element etc…)
Thanks for the feedback!
GraphQL like queries for speckle/Revit?
Hey @jsdbroughton !
Good to see you poking over here
Speckle’s API is already in GraphQL and you can use it to query objects properties on the server side already, see tests here (docs to be made soon!).
Regarding filtering on sending, it’s just a UI problem!
Yup. Got the Speckle server angle, was idly wondering.
Few things are “just” a UI issue