Creating a profile in Revit, and importing it as polycurve into dynamo

Hi all,

Earlier this month I posted a question with regard to rotating an array of points over multiple angles, and I was surprised by how fast and useful the responses were. Thank you all for that.

I hope you can help me out with another problem I have. I would like to draw a 2D profile in Revit (or AutoCAD, if that’s easier), and import this into Dynamo. In dynamo I would like to use this profile for driving the geometry of a column for example (by first organizing the imported curves into a polycurve). In the Dynamo blog, I saw this in the following example: However, I do not understand exactly how this works?

Can anyone of you provide me with a useful workflow for both creating and importing a set of curves from revit into dynamo to drive geometry in there?

Thanks in advance for your response!


Jesse Mom

It’s a complicated workflow to follow. I’ll share a quick squiggle I used to test it out. Hopefully that will put you on the right path. I’ve attached the rvt file and the definition. I hope someone else can provide a better example.


Thanks for your effort! I’m not able to look at it right now, but I will do so later today.


As the author of the blog post that you mention, I would like to ask you if you can explain a bit more in detail the difficulties you find in the workflow. In relation to make a polycurve to use as profile, you have to:
1-Import the Revit lines (typically with select model elementS)
2-Extract the geometry
3-Make PolyCurve.ByJoinedCurves
…or use the custom node “Profile From Revit” that is explained in the blog post (in “Drawing the profile”). In the example I am making 4 profiles in once, with a select model elementS node for each group of Revit lines.

I am also looking for a simple solution. Why is this so complicated? All I want to do is take a pre-defined revit profile family and loft it along a line. Do I really need to break it down to model lines, individually select them with an element select node, re-join them only to have it be a “curve” in dynamo.

Can’t we just have a profile BE a closed curve in dynamo?


Along these lines, is there another way to import simple profiles into Dynamo? or is this limited to drawing the basic geometry through Revit? While Revit is unbelievably powerful, it’s a bit overkill for my use-case(s).

Succinctly, are there other methods or formats from which basic geometry (even if from other autodesk family packages). In general i’m not opposed to building the profile geometries from the ground up in dynamo (which i expect to do for control reasons), but it would help my speed up my learnings around how to ideate a bit easier in dynamo for arranging and create more complex solid forms.



I’m sorry for replying this late. I thought i replied earlier this week, but apparently something went wrong. @ Eduardo: I figured out how to import a profile using your workflow. However, the reason I posted this question, is that this workflow is cumbersome. Ideally, I would like start dynamo from an empty project file, such that i can create geometry and get it into Revit. However, i would like to load the profiles from family files (just like Phil Kolbo is describing). I was wondering whether such a workflow was possible as well.


Jesse Mom


I see that Dynamo is in dire need of one stop shop for converting Revit Profile Family to PolyCurve in Dynamo. Well, fret no more, instead go to and download it at your convenience. :slight_smile:
All you have to do now is create a desired profile family in Revit then load it into a project and select it with Family Types component. Then my node will do the rest to convert it to Dynamo PolyCurve.
Here’s a full blog post:

Just go to my Download section to get the node or recreate it yourself from the posted Code. Have fun!


hi all, i need to download custom node “Profile from Revit”, but the link is not exist, someone can share that custom node for me.

still need that custom node !!

Hi, I believe the node you’re looking for has been moved under the package as “PolyCurve by Profile Family Type”.

But i like the original node =.=, just make profile from sketch, maybe someone still have keep it !!

The original nodes can be found in the package manager under “Sweep by Planar/Vertical/Surface orientation”. Tho they might need to be revised a bit because they were originally designed for Dynamo 0.7

I know this is an older thread but I was wondering if anyone else has found a solution. Konrad’s node is out of date an no longer works. Does anyone else have another workflow? Thanks!

B Derrick,

It was out of date until I have updated it and now it works just fine. Be nice people…please. I will post an update sometime at the end of the week.


You’re good, thanks Konrad! No offense intended, I was just looking to see if there were other options. I’ll wait for your update, thanks again!

@Konrad_K_Sobon why this not work for me? :sob: :sob: :sob:

what I’m doing wrong?



There is a chance that this node may be out of date again. Any way you could update it?

It would be extremely helpful for the project I working on.



Hi @mcooper4GXRR

May be konrad is busy. You can try this script:

import clr
from Autodesk.DesignScript.Geometry import *

# Import ToDSType(bool) extension method
import Revit

# Import DocumentManager and TransactionManager
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

from System.Collections.Generic import *

# Import RevitAPI
import Autodesk
from Autodesk.Revit.DB import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

type = UnwrapElement(IN[0].Family.Name)
name = UnwrapElement(IN[0].Name)

family = UnwrapElement(IN[0]).Family

famDoc = doc.EditFamily(family)

famCollector = FilteredElementCollector(famDoc)
sketch = famCollector.OfClass(Sketch)

for i in sketch:
	cArray = list(i.Profile)
cArray[:] = [[Revit.GeometryConversion.RevitToProtoCurve.ToProtoType(y, True ) for y in x] for x in cArray]
OUT = cArray

Thank you for the help, that worked great!