FamilyInstance.ByGeometry not working in Revit 2022

The Springs node works in Revit 2021 but when I run it in 2022 no mass is created.

Is the mass category turned on in the view? What is the resulting output of the springs node?

Is “import categories - show imports in familes” turned on? that node takes the geometry to .sat and then in turn imports that .sat to a family. if you have imports in family turned off - then you cant see the resultant family.

also in the family browser you can check to see if it created the family - if it did and you edit the family is the geometry there? if so - then it’s likely just your view’s VG settings that are keeping it hidden

Yes, they are on on both cases.

In this case the masses are not even created, as the family browser does not have them.

try with some simple geometry (model a nice rectangle or two) and see if it is the actual node that is giving issues, or is it some change in the Revit 2022 geometry engine that makes that fairly complex geometry you are making there not work in Revit 2022. Because if you can show that the simple box geometry comes in using the tool - then I’m pretty sure the problem is on the Revit 2022 end and not the FamilyInstance.ByGeometry.

I also tried not using the springs node, but it gave me other results. In Revit 2021, the masses are created in the correct size, but in Revit 2022, the masses are created in the wrong scale.

What is the output in the preview window for the springs node?

Hello! Just wanted to let you know I solved this issue by using FamilyType.ByGeometry and FamilyInstance.ByPoint

For the family to be scaled correctly, I scaled the geometry to the units of the model and for the insertion point of the family I used a Bounding Box and the MinPoint to have the family be placed correctly.

def insertion_point(cells):
  points = []
  for cell in cells:
    bounding_box = cell.BoundingBox
    point = bounding_box.MinPoint
    points.append(point)
  return points
5 Likes

The Springs node FamilyInstance.ByGeometry still not working in Revit 2022. Anyone know why? Thanks a lot.

1 Like

It is not being updated, probably the creator has no time to do it

Hi, i’m having the same issue, i relied on spring nodes, but now i updated Revit 2022 and i’m stuck. I simply have to place a generic model family where i created a solid, but FamilyType.ByGeometry and FamilyInstance.Bypoint gives me family which is not scaled. How can i automatically set the scale?

Hi! What I did is scaled it “manually” Dynamo (see the image I linked on May 28). There should be a way to scale it automatically by converting the units in a Python Script depending on the Revit project units but just added the Geometry.Scale node. I hope this helps.

1 Like

I assume because of line 63 in the Python Node
GetFormatOptions(UnitType…
https://www.revitapidocs.com/2021.1/ca0891ed-ec2d-5a8b-8bc0-79ff5ff98ee5.htm

"This method is deprecated in Revit 2021 and may be removed in a future version of Revit. Please use the `GetFormatOptions(ForgeTypeId)` overload instead."

Have a look at Solved: Re: ForgeTypeId how to use? - Autodesk Community to get more info about that change in the API.

Maybe there is even more need to adjustment in the Python code.

1 Like

Hi, does anyone solved this? This springs node is very important. Still not working in 2022. Anyone knows how to contact spings nodes developer?

Yes - I was able to fix it. Basically it was a matter of replacing the DisplayUnit API references with newer ForgeTypeId methods and also repairing the SAT scaling methods (2022 is a little different). I’ll find the changes and post them next week.

That said - the node won’t work 100% the same in 2022 as it did previously. In testing I found that some SATs that imported fine as solids in Revit 2020 suddenly import as meshes (boo!!!) in Revit 2022. It’s likely fine for 99% of the geometry out there but every once and a while you might encounter this issue.

In the meantime you could always roll back whatever work you are doing to Revit 2020 (ifc the job in Revit 2022 and link/import into Revit 2020 for a prev version hack), do your Dynamo work to make the families, group the families in the Revit 2020 version of the job, then save the group and load it into Revit 2022.

1 Like

Perhaps use of the relevant data in a Data.Remember node from Generative Design, and then opening the graph in Revit 2021 would work to generate the file. Link in and bind as before.

Replace the these two lines in the Python as shown below:

#units = doc.GetUnits().GetFormatOptions(UnitType.UT_Length).DisplayUnits
#factor = UnitUtils.ConvertToInternalUnits(1,units)
units = doc.GetUnits().GetFormatOptions(SpecTypeId.Length).GetUnitTypeId()
factor = UnitUtils.ConvertToInternalUnits(1,units)

Additionally, I had to change the SAT import unit portion of the code as shown here:

#satOpt.Unit = ImportUnit.Foot
#satOpt.Unit = ImportUnit.Default
satOpt.Unit = ImportUnit.Custom
satOpt.CustomScale = 1/3.280839895
8 Likes

I’ve tried to replace the code but I’m getting this error:

Traceback (most recent call last):
File “”, line 145, in NewForm_background
Exception: The active document may not be closed from the API.

Any ideas?