Automatic 3D Print Export Revit Active View

3DPrintFromRevitFamiliesActiveView.dyn (66.0 KB)

A few notes:

  • This is particular for the 3D print I wanted, so somethings are filtered out that you might want to keep

  • It runs off the active view - often not everything in the model wants to be printed and you can then select parts of the building to print

  • It is hollow but for most buildings the printer can print on thin air between walls (as Comial has noted room geometry could be extracted to make a solid).

  • It goes to a lot of effort to optimise meshing families - rather than trying to mesh every instance, it meshes a typical one and copies it to the locations, this was much more efficient when you have 5000 windows, 2000 doors etc.

  • When scaling down a model to print certain elements become so thin as to be unprintable, this should best be controlled using global parameters in Revit for Glass Thickness, Frame Thickness etc. I also swapped out Railings etc. for specific printing families

  • Tolerances will want to be set to 0 otherwise the printer will try and print separate objects leaving tiny varying gaps in the physical print

1 Like

So I am trying to test this out for my office. We are really getting more into 3D printing models and I can’t seem to figure out how to get your script to work. I

A few issues:

  1. I can’t find the current replacement for the Clockwork ‘Elements.GroupbyHost’ within Clockwork so I am not sure how we can even start.
  2. I am trying to figure out where to change the script to not filter anything out. I may in the end have things to filter out, but I can’t quite figure out how to modify this to not filter anything out.

Thanks for any help you can give.

Hey @e1uvs ,


  1. From here…
  • Elements.GroupByHost : Use Clockwork’s Element.Host+ and built-in node List.GroupByKey instead.

There were a few other things that have broken so here’s the updated graph…3DPrintFromRevitFamiliesActiveView-V2.dyn (140.3 KB)

  1. My starting point with this graph is that the easiest and most robust way of making sure that you only get what you want in the print, is to setup a dedicated 3D view for printing.

So the graph doesn’t filter anything out, it only treats different elements in different ways.

For a simple project this might not be necessary, you can just send everything straight to a mesh if you want…

The graph above is aimed at addressing the issues of File Size and Time in a large model…

  • If you have 5000 windows and 2000 doors, you can export that .stl, but it will be enormous.
  • If you try and merge all the meshes, the file size will come down, but it will take hours.

So the graph merges one window and one door of each type, then copies and rotates them into place, it’s relatively quick and produces relatively small stl files.

The rest of the filters are to identify categories such as curtain walling, railings and roof hatches, which are hosted, but don’t want this process to be applied.

As noted above, there are other issues to be addressed. E.G. The screen grab has no glass because when the 25mm extrusion is scaled by 0.005 it is to thin to physically print.

Let me know if you have any other issues,

Good luck!



Fantastic! That helped a lot. Few tweaks that need to be made since the building I was testing this out for has a lot of curtain walls used, but it seems to be working well. I might just have to infill walls behind curtain walls so that at least the mullion pattern can print.

1 Like

Another option might be to enable rooms? If you’re happy for it to print as a solid? Just a thought :slight_smile:


We actually want it to print solid. That makes sense. Completely forgot about that idea

So when I run this script, would this run and only create a mesh from isolated objects? There’s a spot that we want to hide a few walls in the model to show where we are expanding onto it and I was wondering if I isolated the elements I wanted to print, this script would do that.


The big graph uses Elements In Actve View, I would recommend this approach.

You can plug it into Element Mesh Geometry and you are good to go!



Ah! Thank you! I completely missed that. Fantastic!