Typically, when grading a site, an engineer or landscape architect will specify new spot elevations based on desired slopes and existing spot elevations. Grading is mainly just drawing lines across various areas and interpolating spot elevations based on slopes.
While Revit’s current hardscape and Topography tools are not ideal for grading a landscape, it does have the capability to calculate slopes and spot elevations for you. All you need is a custom family with some parameters and formulas set up the right way.
This custom grading Family is a line-based Site Family. It is a model family, but it is created entirely from nested annotation families (so it only shows up in plan views). Depending on the input data, it has the ability to calculate the midpoint elevation, slope, and/or the endpoint elevation of the line. While it is a slightly powerful tool, it is also kind of just a big annotation (and does not interact with any model elements).
It has two types, Specify End Point and Specify Slope. It has 3 inputs as instance parameters: Slope, Elevation Start, and Elevation End.
As indicated by the types, only 2 input parameters are required, depending on the type. You can either enter a Slope and and the Elevation Start (for the Specify Slope type) or enter the Elevation Start and the Elevation End (for the Specify End Point type).
For each type, the input data is displayed in black and the output (or calculated values) are displayed in gray.
The middle elevation can be moved to any point along the line, and the elevation will update automatically. Both the Slope and Mid Elevation text are instance parameters (and so can be turned on or off in any combination). By default, the Slope slopes down in the direction of the start arrow, but the Slope can also be negative (and slope up).
If you want to check it out, here is my Custom Slope and Elevation Grading Family.
I envision this family to be used more as a behind-the-scenes tool for laying out a grading plan. It would probably be better off on a separate Workset (so that it would not be visible in most views).
Ideally, this would be more than just an annotation and actually modified Topo or Floors. From what I understand this is doable with some work in the Revit API, but I haven’t quite gotten there yet.