Having done a bit more testing, it’d be awesome if all hosted families kept their link to the toposurface at import. Currently this relationship gets broken.
#1 Initial setup: topo comes from Rhino as a mesh, trees are native Revit families hosted on the toposurface:
#2 Updated mesh from Rhino imported to Revit with the ‘update’ option. Note that the toposurface material gets reset to ‘By category’ and the trees are now hosted to Level 1.
It would be awesome if the ‘Update’ option kept all previous hosted elements.
EDIT:
Hey @AlanRynne, please correct me if I’m wrong, but it seems that currently Revit topography is created by only providing points and letting Revit take care of the triangulation:
This approach can lead to the resulting geometry being different than the input. Revit will simply run a delaunay triangulation over the points and make a best guess about how to connect individual points. In civil engineering/landscape architecture we spend a lot of time tweaking these connections to better match the design intent.
Here is a good explanation using Civil 3d as an example but the concept is universal:
Speckle deletes the old topography and creates a new one. That’s why they are not hosted anymore. But there should be a workaround to keep them hosted tho. Same thing is true for any host based element in Revit.
I know that editing existing boundaries (for floors, walls etc.) became available with Revit 2022 and I am not really sure if same is true for Topography editing (since editing topography is not same as editing floor boundary). But I believe we can implement this for 2022 and onwards. @teocomi
Would be great @gokermu ! Alternatively, before deleting the old topography, maybe we could keep track of the material and what is hosted on it, and reestablish the relationships with the newly pasted one?
What about the other issue related to triangulation? I’d imagine this would require some changes to the Speckle Topography class, but it would be of huge value to us. The way topo is imported into Revit now, unfortunately doesn’t guarantee consistency between packages.
Definitely. As first step we can play with keeping hosted elements. At some point, we will implement preserving what users changed in the model (maybe you changed type or edited the material etc. But it takes a bit of time )
Maybe @teocomi can help you with your triangulation issue? I am not an expert on that
Thanks for the detailed feedback @mariuszhermansdorfer ! Our Mesh class already has a faces property so this shouldn’t be too difficult of a change in our Revit conversions - I’ll go ahead and swap out the method now
Note how Revit creates its own edges trying to satisfy the delaunay constraints. I’ll keep this file to test it again once you’ve swapped to the method using mesh faces.
Released a Revit 2.6.1-beta if you’d like to confirm the meshing update now, but keep in mind that constructor is only available in Revit 2022 & 2023. The beta release may contain other unstable changes, everything will be properly integrated in our upcoming 2.7.0 release!
I was also thinking that if one just deleted the old points and subsequently added the new ones, all the facet connections would be lost. Probably the best way of updating topography is by creating a new one and restoring all properties of the previous one.
I think you’re right @mariuszhermansdorfer, this sounds like a more solid approach as there’s no way for us to know “which points changed” and “how their connections changed with them” without having to do some heavy mesh comparisons.
@mariuszhermansdorfer hi Mariusz, can yo usend me a copy of that Revit file where things didn’t work? I’m seeing the same problem in the other direction in Revit 2020 and want to do some tests - unless someone can tell me now that it won’t work.
If you want to preserve the triangles, you can’t edit the created topography. In case you want your Topography to be editable, then it probably won’t preserve the triangles in Rhino. That’s a choice you have to
I guess we need to add another button for creating editable topography @clrkng.
Btw, you can easily do it through Grasshopper/Dynamo.
We have a Dynamo tutorial on this for Sketchup. You can easily implement it for Rhino.
If you wanna do it through Grasshopper, that’s pretty simple as well. Just connect the mesh and you’ll end up with an editable Topography in Revit.