Is There A Way To Make Revit Floor Sub Elements Match A Toposolid So I Can Phase Site Elements Properly?

Hi, I am struggling with Revit’s new toposolids and phasing plans. I have a toposolid modelled for the existing phase of a project. When I use the graded region tool to calculate cut/fill, any site demolition plans look completely overridden because Revit is demolishing the entire toposolid to make the graded region calculate correctly. I have some sites where I am demolishing part of a sidewalk, or some asphalt etc. and just need to show those elements as demolished but not the whole toposolid. I made a simple dynamo graph previously to make floors adjust their sub elements to match topography, but I can’t seem to get it to work with toposolids even though there is now built in nodes to select toposolid points.

My idea is to make floors instead of subdivides in the toposolid, so that I can use the graded region tool to calculate cut/fill, and in my demolition plans use visibility graphic overrides to turn off patterns on the toposolid, then be able to demolish floors or part of floors to correctly show the parts I am demolishing. I want to use dynamo to make the floors that I’m using to show demo etc. to follow the toposolid.

If possible, can someone take a look at the dynamo graph I made and show me where I went wrong? Almost every tutorial I’ve found online explains how to make floors follow topography, but not toposolids.

If you have any advice or a suggestion for a different approach to demolition plans, please let me know.

Hopefully this makes sense. Let me know if you have any questions.

This is the one I made for topography which seems to work fine and do what I need. However, replacing the topography points node with toposolid points node doesn’t actually work.

Hi @Jstroomer - One option is as follows using DesignScript to get to the TopoSolid top-surface points :slight_smile: You could also do this in nodes if you wish.

surfaces = Revit.Element.Faces(topoSolid);
srfNormal = Math.Round(
	Autodesk.Surface.NormalAtParameter(
		surfaces, 0.5, 0.5)
			.Z);
boolMask = srfNormal == 1;
filter = List.FilterByBoolMask(surfaces, boolMask)["in"];
perimCrvs = Autodesk.Surface.PerimeterCurves(filter);
points = List.Flatten(
	[
		Autodesk.Curve.StartPoint(perimCrvs),
		Autodesk.Curve.EndPoint(perimCrvs)
	],
-1);
2 Likes

Hi @solamour , thank you for the fast response I really appreciate it.

I added in your suggestion with the design script. When I run it nothing happens. I used the architectural template and made a basic toposolid and floor (right on the screenshot) and this is how it looks after I run.

I also tried using a select model elements node to individually select the floor above and that didn’t work either.

Any ideas?

1 Like

Ah, that sucks. Looks like the direct transfer of methods from TopoSurface to TopoSolid doesn’t work :frowning:

In the short-term you can still create TopoSurfaces in Dynamo and transfer to TopoSolids in the Revit UI, but that will be removed probably with the 2026 release. There’s most likely an API that will allow you to do this, but will require diving into Python more.

Careful here - https://thebuildingcoder.typepad.com/blog/2023/04/whats-new-in-the-revit-2024-api.html#4.1.3:~:text=The%20TopographySurface%20element%20remains%20in%20the%20API%20for%20backwards%20compatibility%20and%20upgrade.

I’d expect the toposurface to persist for awhile for upgrades, but only that. Eventually the constructor will go away (if it hasn’t already in 2025).

Curious - have you considered using a TopoSolid here @Jstroomer, and moving away from floors for this?

Hi Jacob, I’ve mainly used toposolid and once I get into revit 25 so I can depress surfaces it will be much better. However, I still struggle with phasing toposolids and when using graded region. This is why I thought floors might be a better option because I could at least phase them properly. In older Revit projects I would use floors and host them to the topography with my graph above so that I could then phase the floors so my demolition plans are fully automated.

1 Like

Thanks Solamour, I found a revit add in that might let me do what I’m trying to do here, but it is a lot of money on a yearly subscription. I’ll try it out in the coming weeks and post on this if it is a viable solution.

1 Like

There will :100: be a way in Dynamo if you can do it with an Addin :slight_smile: I’ve just been a little too busy to dive deep!

1 Like

No worries, I just don’t have enough Dynamo experience to make it work haha

1 Like