3D Print from Revit

Hi All,

I would like to 3D print my Revit, this blog describes a process where you build a mass within your Revit file which is exported.

I would like to automate the process of creating the mass.
My intial idea is to ‘flood fill’ around the model. This could then be inverted to leave the building.

The question is how to ‘flood fill’… A room sort of does it, but only as a 2D extrusion… Would anyone be able to suggest how a 3D equivalent might be attempted? A raytrace method might be an alternative?

Thanks in advance.

Mark

Simple

3 Likes

@Mark.Ackerley You could try to …

  1. Create a solid bounding box
  2. Subtract the building mass from the bounding box
  3. Remove the outside component of the resulting solid

Something like this …


3DPrint.dyn (17.0 KB)
3DPrint.rvt (1.5 MB)

2 Likes

@Mark.Ackerley

Are you saying the model would be printed solid i.e not hollow?

Other applications have tools to create a ‘shrink-wrap’ mesh over a model, and then you can thicken that mesh inwards.The mesh needs to be manifold i.e can exist in the real world.

It depends on the type of 3D printer & if it can print a hollow box or if the inside of the box is accessible i.e some use solvent to remove support material, or you need to remove un-fused powder. The simple hot-melt extrusion machines are probably ok

Either way: Dynamo/Revit probably is not the best tool and a specific 3D printing application that can fix minor problems or bridge holes, or something like Rhino is needed.

Hope this helps- in my experience 3D printing is never as easy as you might think & there is always some fudging of models to suit the machine & material constraints.

Andrew

1 Like

Thanks Andrew,
My goal with this process is to optimise the workflow between Revit and the Print, if there is a need for some tweaking in Rhino I’d be happy with that (the blog required manual replication of the Revit file as masses), mind you Vikram’s output is manifold! I get what you’re saying about 3rd parties, but I’d rather not be dependent on them when we’re hitting a deadline… If you had a suggestion for a plugin that doesn’t require external upload (unlike CADSpan for example) that would be interesting?

Thanks Vikram, that is awesome!
Unfortunately when I run on my file I get some unusual error messages…

Windows
"Warning: Solid.ByUnion operation failed.
Unable union two Solids : EDGECOIN_PROBLEM – system inconsistency processing edge coincidence"

Doors
"Warning: Solid.ByUnion operation failed.
Unable union two Solids : OSCULATING_CURVES – curves osculate at vertex - cannot evaluate order"

I’ve attached a Revit file if you wouldn’t mind a look?

Cheers,

Mark

1 Like

Don’t see any attachment

Meanwhile check if replacing windows and doors with alternate families helps

Wetransfer link…

https://we.tl/U1rfLrpznC

Swapping out avoids the error messages, so they are linked to the families… I’ve found another error message…

“Warning: Solid.ByUnion operation failed.
Unable union two Solids : INCONS_VERT_ATT – inconsistent information in vertex and coedge attributes”

Even with the swapped out version I’m still getting a problem, sometimes there are too many solids, sometimes only 1, as in this run…

.

Any assistance would be amazing, thanks…

Mark

Do the following …

  1. Detatch all walls, alter the profile instead
  2. Create a floor

Interested to see how it works out, but out some point, you’ll need to create a mesh (STL file) from the model & it is unlikely that this mesh will be 100% printer ready.

Applications such as Meshmixer (free), Netfabb (a few hundred dollars) or CADSpan (a few hundred dollars) have the tools to do what you exactly what you want, plus can optimise the model further for printing.

I know it is not the right answer on a Dynamo forum- but I would suggest the optimum workflow is:
Revit–>STL export–>Meshmixer to clean up/optimise the mesh

Andrew

Not sure if it’s printable, but here is the STL file of the above model exported from Dynamo
model.stl (660.5 KB)

It’s not bad- Meshmixer says that there are some non-manifold surfaces (red) and very small objects (purple)

These small objects look like the gutter profile which has not been exported properly.

Without spending too much time tweaking settings- the third screenshot shows results from Meshmixer ‘make solid’ The windows & roof are not quite right.

Thanks guys,

Just to reiterate, the goal here is to get a very quick workflow to 3D print Revit elements.

My conclusion is that the graph above gives a successful outcome.

As a different kind of test, I made a deliberately very messy model to see what would happen…

Revit

Meshmixer

Cura

This was with no work done in Meshmixer apart from ‘Combining’.

Total time from Revit to Cura less than 5 minutes. For me, this means a quick concept model can be printed and taken to meetings as part of the design development workflow.

Later on a more perfect model could be made for larger scale prints / presentations.

I didn’t have much success working inside Meshmixer, none of the ‘Make Solid’ settings gave outcomes that I was happy with, I would do any repair work within Revit (when the export is that fast, it seems more efficient).

Some other points:
I think families will need to be built specifically to be 3D print compatable.
Getting rid of model lines and making sure family elements stopped me getting wierd messages.
Adding a recessed extrusion which completely fills the family opening (but is invisible apart from 3D views )
reduces the evil red spheres.

I have also knocked up a graph which takes a CAD import and exports it from Revit to Dynamo to Meshmixer DwgImportFromRevitToMeshmixer.dyn (16.1 KB). This isn’t perfect, but is much more efficient than Sketchup > Solid Inspector.

Cheers,

Mark

2 Likes

That is amazing stuff

…running in small problem…i have a node geometry.boundingbox and in his view a boundingbox.geometry… now sometimes the order of words change but my result is a cube it is missing the roof.

downloaded the script and still just get a box

If i download the print3D.rvt file and the dyn file.
it runs perfectly…but when i adjust the building and change the roof and change the profile of the walls…the script doesn’t work

Hi Arno,

I think we might want to start a new topic for this…

I’ve had a play and I can’t replicate your difficulties…

Here’s the Revit, see if it works for you?

Hope that helps…

Mark3DPrint-Wonky.rvt (1.5 MB)

2 Likes

i can’t figure this one out…could someone please have a look at my “complex” model…

i really need this.

Arno

Hi Arno,

I downloaded your file, ran the graph, got some nulls from your windows, dropped in a List.Clean node (Orchid is my favourite) and it ran as expected…

Could you elaborate on what your problems were and what you want to achieve?

I posted a graph here which doesn’t try to do any booleaning…

This is it in Cura…

Hope that’s of interest,

Mark

2 Likes

i am trying to get the total volume of the building… it is necessarily for 3D printing

Hi Arno,

Have a look here:

There are a couple of things to note…

  1. You don’t need to boolean everything… I use Cura to print and it does a fantastic job of printing a whole bunch of solids as a single print. This is much more robust than trying to union.

  2. Rooms can be extracted to ‘fill’ the voids to give you a ‘solid’ model.

  3. It isn’t necessary to have a solid model to print. For most buildings the 3D printer can print over empty space and create a floor / roof just resting on the supporting walls. The underside will be quite stringy, but this isn’t usually noticable and allows a skeleton of a building to be printed with actual rooms inside.

Hope that helps,

Mark

Hi @Arno_De_Lange

Which of the volumes do you want?
There is a generic model (in-place mass 430.850 m3 with the same shape) next to the house, and the house itself.

If your house was completely “airtight” (its not) you could maybe create a new model, link the file, create walls a distance away from the house, check the height of the walls then put a room in the space between the house and the walls, set room calulations to include volume, set the link to roombounding and check the difference in volume between room bounding and not roombounding.

1 Like