Wall By Face From Dynamo Surface



Hello All,

I thought it would be a simple task to use Wall.ByFace to place Revit walls at a dynamo surface, however it’s not working. The Wall.ByFace node doesn’t seem to like dynamo surfaces, and the RevitFace.FromDynamoSurface node from the clockwork package isn’t helping much either.

If any of you have a better idea of how to do this, let me know.



I cannot recall exactly, but I think in this case the “surface” must have come from a valid revit face. (try a select face node)


Yeah, that’s what I’m seeing in other posts as well. That solution involves importing the surface into a conceptual mass family, and then into the Revit project, and then selecting the faces. But I don’t want to be doing that every time we update our model, that’s a lot of faces to select. We’re able to bring all the lines in directly as Revit objects, I would hope we could do the same with the surfaces.


try element.geometry to get a surface, you can’t create a surface in dynamo and expect it to be related to a revit surface (it appears in your shot you are using a loft)



Apologies if I’m misinterpreting, but the blue surface in your image is more readily described as a roof?

Was there a reason you weren’t using roof by extrusion?

Hope that helps,



Hi Mark,

That’s brilliant! This really helps a lot!

I didn’t have the wombat package downloaded, but it looks like it has some great tools!

The one thing it doesn’t do is allow me to select the path of the extrusion, which would be nice because my roof is sloped, and this only creates level roofs.

I suppose I’ll have to rotate the roof afterwards, unless there’s some functionality I’m missing here.


Not at a pc but try sloping the ref plane


It’s a nice thought, but it looks like the node doesn’t work with sloping reference planes


Hmm… how about this method instead?


I’m not sure the wall by face is going to give what you want, but it doesn’t seem too strenuous…


I had actually come up with a similar solution to yours using the wall by face, and it’s working well for me. Of course, I would rather it be a roof, but the direct shape doesn’t quite do the trick. Direct shapes don’t allow me to modify the type structure of the roof, and I would prefer to use the family types from within Revit rather than create new family from Dynamo. Calling a wall a roof will have to do for now.

Any idea why a Roof.ByFace node doesn’t exist yet? I can’t see why that would be any more difficult to create than the Wall.ByFace.


It’s possible, just no one’s made a node for it…

It appears that there’s no info on what the command needs, but we could assume the inputs to the Wall.ByFace node are the same… I might have a look at it on Monday if I have time, otherwise an API guru like @Daniel_Woodcock1 could just do it without thinking :stuck_out_tongue:




In the API, from what I understand, there are 3 ways to make a roof… NewFootprintRoof, NewExtrusionRoof & DirectShape (I don’t really use roofs much in my field so happy to be corrected). I’m sure RoofByFace has been wished for a few times, but I can’t seem to find anything other than the postable command in the API, which is not what you want.

The NewExtrusionRoof would have been my best guess for what you are trying to achieve, however, the input Arguments at the same as the inputs for the ExtrusionRoof.ByProfile, so thinking these are the same and you have already tried this without success, but still might be worth looking into or perhaps reviewing the inputs to see why ExtrusionRoof.ByProfile is not working correctly, perhaps the profile curves need to be perpendicular to ref plane to work (just a possibility).


Hi Daniel,

Happy to play with the other methods, but this does seem to be working for the OP, using the Postable Wall By Face and it appears relatively simple to adapt to Roof By Face to be the right category.

There doesn’t appear to be anywhere which defines the inputs for the Postable Methods, could you recommend a way of searching?

I presume that Dynamo Node code is somewhere on Github, does that sound right?




Hi @Mark.Ackerley

Postable commands are a last resort kinda thing imo… They return void, and take no arguments apart from the command ID and you can’t use them in conjunction with other postable commands. They are simply what all the buttons use to initiate a command. Similar to a Dynamo graphs in this way… they are run, they do what they do and then that’s it.

We typically don’t use these in code because of these limitations, but there are some exceptions where they might be useful, but not that often. I usually try write my own functionality to replicate as much as i can what a postable command really does, but sometimes this can be quite tricky if the parts of the API it uses aren’t exposed. I wrote about here also…

Dynamo Node code you’re looking for will most likely be in the DynamoRevit github so check in the link below…

I hope this helps.



And here is the process in action:

Script PostableRoof.dyn (4.8 KB)



Awesome Kulkul I’ll have a look at your code on Monday :slight_smile:

Looks like there’s also this method?




That’s for walls not for roof :smile:


Hah the Dyslexia kicked in :stuck_out_tongue:

Presumably the lack of that Class for roofs is why there’s no Node…




Is there a way of finding what the inputs required to Postable Commands are?