Today I've found an interesting Topo add-in by Mustafa Khalil and here's a video demonstrating how it works.
So I decided to understand how it could be done and I tried to mimic the core of the add-in.
My attempt here is really basic, there are no parameters exposed to the user to set for instance.
This exercise gave me the opportunity to understand better some of the topography features in the API, for example the implementation of an interface to manage preprocess failures since it is needed to commit the transaction group necessary to edit a topographic surface.
Another interesting aspect is that Revit won't allow you to process points with the same XY values for topo surfaces, that's why I' decided to add a point at a time while editing the surface.
It would be fun to do the opposite: having a topo and edit the floor secondary element back... oh wait, Marcello Sgambelluri already did it :)
Anyway here you can find the code I've used if you want to have a look at it, if you are happy with it please show me some gratitude paying what you want via PayPal to: