Dynamo Can't find "end Join Cutback" Parameter

hello, I’m relatively new to Dynamo

I’m trying to modify an Elements “End/Start Join Cutback” parameter, but when using “set Parameter By Name” Node, it doesn’t seem to find that parameter.

I have also been trying to access that parameter using the python scripts but I didn’t manage to find it there.

Any help would be appreciated

Hi @Omer4ZWBQ and welcome.

Which category of elements are you using?

Can you post a Picture of you graph? Also unfold the results of each node so we can see the progress.

This is the graph, evidently these elements have a parameter by that name I can modify only through Revit

edit: I just discovered a new development. after I’ve ran the Dynamo code once and get that error, I can run the Dynamo code again, and then it (sometimes) works. that is a temporary solution of course, I need my Dynamo to operate without needing to step into it and double running it hoping it will work.

It would help us if we could see the entire graph :slight_smile:

Apologies but there are way too many nodes to show the entire graph

You should be able to show the entire graph by zooming in until the nodes are readable and then pressing the camera button in Dynamo


I see, thank you, here is the entire graph

Hi @Omer, I see the problem. Your Families (Structural Framing’s) dont have the Parameter in them. I think, based on the “Start Join Cutback”, that you mean the parameter “Start Extension” and “End Extension”. These are default parameters in Structural Framing Families which control the Geometric Extension of the Families.

You might want to select one of the Elements and check its parameters. Please make a screenshot of it just like below:

I appreciate your response, but unfortunately that is not the case. I have partially figured out the problem, the elements only have these parameters after prematurely have been built, and Dynamo for some reason can’t access them before they exist. As I said in one of my replies, when I run the file a second time, after the elements already exist, with the required parameters, it does work under certain limitation, it is not ideal but is sufficient until I get wiser.

image

as seen in the picture above, these parameters do exist on the element. they apparently “come to live” only when frames interact with each other, as seen in the above picture that is not the desired result.

Aah prefect, you just awnsered your own question!

as shown in you image, you family does not have the “Start Join Cutback” parameter. This is also clearly stated in the Error message in your second post.

As you also state: The parameter does not come to life until an element is joined. When placing the Elements with Dynamo, Revit tries to automatically join them. BUT Revit is not very good at this. This is why there is an option to tell Beams that they are not allowed to Join Other elements. This way the Parameter will never come to life.

My suggestion to solve all this:
1 Place the Structural Framings
2 Tell all Placed Structural Framing that they are not allowed to Join other elements. Python Script Below
3 Edit the Start/ End Extension instead of the Start Join Cutback. If you setup the families properly, this will give you the same result with more stability

an other way is to check if the parameter exists before trying to edit it. This way you can use the Start Join Cutback, but only if Revit opens them up for you.

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# Import geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from System.Collections.Generic import *
# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
import math


def MakeList(a):
    if hasattr(a,"__iter__"):
        return a
    else:
        return [a]
            
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument


# Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

def DisallowJoin(beam):
    beams = MakeList(UnwrapElement(beam));
    for b in beams:
        single = True
        if hasattr(b, "__iter__"):
            single = False
        if single:
            StructuralFramingUtils.DisallowJoinAtEnd(b, 0)
            StructuralFramingUtils.DisallowJoinAtEnd(b, 1)
        else:
            DisallowJoin(b)
    if len(beams) == 1:
        return beams[0]
    else:
        return beams


# End Transaction
TransactionManager.Instance.TransactionTaskDone()

OUT = DisallowJoin(IN[0])
1 Like

Thank you! This Python script was exactly what I needed!
I will have to adjust some of the elements and maybe some of the script too, but it is a great step forward in my issue

1 Like