No Geometry saved


Hi All,

I’ve created a number of solids using Dynamo. I run the script and I can see the solids in the Dynamo viewer as well as Revit. However, when I save the Revit model and subsequently reopen the rvt file the solids that were created are not viewable in any of the level views or the 3D view. In fact, i don’t think that the solids were saved at all. Although, they are saved in the thumbnail view for the file.

Am I missing something? Do I need to create a family, associate with a level etc… I also notice that the solids created are not selectable inside of Revit. I am gambling that this is a simple fix and I’ve missed an important step with regard to saving Dynamo generated geometry in Revit.

Any help would be appreciated.

Larry H.


This confused me too when I first tried Dynamo :sweat_smile: The geometry you are seeing in Revit is just the Geometry preview. It can be turned on/off by right clicking on the node thats generating the geometry and checking/unchecking “Preview” or it can be turned off in Revit by changing the Background 3D Preview Settings in the View Tab. You’ll have to add an extra step to your graph that actually makes the geometry in Revit to be able to select/save it, as you were thinking.

There are a few nodes for this in the OOTB nodes and the Springs package and maybe some others have nodes for it as well. Search “ByGeometry” in the node library and they will come up. They differ in what kind of elememt is created (direct shape, import instance, family type). Here are links to some in the dictionary in case searching of the library with “ByGeometry” doesn’t turn them up for you:


Hi Amy,

The DirectShape node is working and I am receiving what I believe to be an ID for the geometry created in the the Watch node I’ve set up.

However, I do believe that FamilyType.ByGeometry is the right node to use as it’s looking for Solids and I need to use Solids downstream in Collision detection. However, I don’t see a FamilyType.ByGeometry node in my version of Dynamo. Do I need to load a specific package file to obtain this. I have downloaded and installed the Clockwork package as part of this latest quest.

You helped in another way, however! I, actually, tried the Directshape node prior to reaching out and was looking for a Category node. The best I found was listCategory which, as you know, gave me an arm-long list of Revit categories in the current project. I tried to enter the Floors category as a String… zero luck. Looking at the example for DirectShape I was able to find the correct node and find 65% success…:yum:

Do I need an update? or… Is there a package file with the Familytype.ByGeometry inside?

Thanks and Happy Friday. (I hope your having an adult beverage as you answer this post…):wine_glass::beer::cocktail:

Larry H.


THe FamilyType.ByGeometry is in the SpringNodes package.


Hi Jacob and all,

I’ve gone away and fiddled with DirectShape.ByGeometry, Springs.DirectShape.byGeometry, and the lowly ImportInstance.byGeometry.

As to my progress, I’ve only been able to realize geometry in Revit from what looks to be the simplest form of “dumb solid” import available. Niether DirectShape.ByGeometry, nor the Springs version get me past the solid preview image in Revit. I would like to bring solid geometry with text string parameters attached. Alah, a family type from which I can schedule the information in a simple table.

The geometry generation is on right side of the graph. When I do ImportInstance…

There are solids that are selctable in Revit.

Connecting the Springs.DirectShape.byGeometry node.

I have a preview of an object but not geometry is saved with the document. Similarly when using the Directshape node.

The watch node has 7 unique items. Good. Revit is previewing the tessellated :smirk: ducts. However, I have no real or selectable geometry in the default 3D view. I would like to use this geometry and attach 7-8 text strings to each duct system, I would like to define these ducts within the Mass category and create simple schedules within this Revit family.

I would like to use the Springs.DirectShape.ByGeometry node because of topology concerns. Where’s the beef? or geometry rather… :roll_eyes:

One Last Thing… :roll_eyes:

I’m struggling with useage of the ScopeIf node I asked about in a previous forum posting Error Trapping an Empty List. It was suggested that a Scopedif would be the correct node for logical branching

test if a list is empty. List.IsEmpty node. Boolean determines empty list. If true, stop. If false, make a solid. Close up is below. I’m not sure how to connect this logical decision in a uml context.

The objective is to create geometry that is accurate for collision detection with a small amount of Family type information to support schedule creation.

Thanks for your Help!
Larry H.


Use a select by I’d command in Revit to see if that element exists in the model. If it does than it isn’t a problem with Dynamo but with your 3D view - a workset or category is off. If it doesn’t share a dyn and rvt we can use to recreate the issue.


I understand where you’re going here. I did try playing with Level 1 view range in the rvt file. These ducts are located in the floor. I did not see anything in the Floor Plan view. I can’t verify all I did, but I did specify an offset and lowered the bottom of the view Range to -1200mm.

as to your suggestion, do you mean perform a selection in the Revit application? or Use a Revit.SelectID node to gather the geometry from Dynamo? Apologies, not sure that I understand your rec.



Yes. in the manage tab use the Select By Id command. It will select something if it exists even if you can’t see it. The direct shape node is outputting an element, which has an ID (highlighted green). I’m assuming the family instance node is doing the same but I don’t see a test for that.


Will do.

I was playing a little more with the various Dynamo element level nodes. I set up.

Element by Level

I tried the “Sub-Grade” levels for all elements with an “Empty List” return. i don’t think that I’m gonna find anything in Revit. Will test, however.

So, I Did not find a SelectID node:open_mouth:, but it’s a good idea. It was easy to select each level and inspect.


Executed the Selection sequence as outlined. system response below.

In this case; numerical ID is 292977…292983…1
Select by ID

  1. Dynamo Geometry gen look below. Nothing in this sequence of operations glares at me with a look of “wrongness”…:upside_down_face: In construction, it was straightforward and worked immediately.

Question: I am assigning a test name to these elements at the node level. Do I need to create unique names?



Just cuz a view can’t be found doesn’t mean it doesn’t exist… just means you don’t have a view where you c and see it.

  1. rename your personal 3D view to anything else or delete it.
  2. make a new personal 3d view and set it as the active view.
  3. Open all worksets.
  4. Go into visibility graphics settings and make sure all worksets, categories, and the like are visible.
  5. Use the select by Id command and say ‘ok’ for just one element.
  6. use the section box from selection tool to and temporary isolate in view tools to find it and then figure out what’s wrong. Rinse and repeat for all families or adjust a creation method after you find the issue.

Sharing the dyn and rvt files associated with this task would clear this up really fast…