Disallow Join all wall ends

Hi,

Is there a way in Dynamo to disallow join all walls? (both sides) Im trying to make a graph to only disallow join all concrete walls.

Gr.

David

@DavidV, you can use custom nodes from my package to allow or disallow wall joining (Walls.AllowJoinAtEnd & Walls.DisallowJoinAtEnd):


Both wall sides are set to disallow join by default (see ā€œJoinAtStartā€ and ā€œJoinAtEndā€ node inputs in the screenshot). You can change this behaviour using the boolean switch set to ā€œFalseā€.

Download the latest version @ dynamopackages.com (direct link).

7 Likes

Thanks Zhukoven!

Do you also have a node in your package that also can adjust the length of the wall like in the image below?

Edit: Best case scenario, Is it possible to make a wall (with a yes/no parameter turned on for example structural) longer after disallow join. And the walls with the same parameter turned off shorter?

image

@DavidV, I don’t have a specific node for adjusting lengths, but I’ll look into this issue.

Thanks a lot! I’m looking forward to it! :smiley:

@DavidV - Look for Set Location in your library. :wink:

1 Like

Hello,
I am performing disallow join to all ends and it is doable.
But I am getting problem in adjusting wall lengths …
Can anyone tell me solution on that?

thanks in advance!

image
giving an input error :frowning: why?

The node is likely using a reserved namespace as an input. First check to see that you are using the latest version of the package, and update if possible. If the issue persists then check the error message and edit the dyf accordingly (adding a prefix, suffix, or using camelCaseNaming for the input name is the likely resolution).

1 Like

Will it work with Curtain Walls?

Here’s one that allows you to select a wall by making a window around those you require to disallow joins at both ends, Sorry I’m not able to upload it here.

And the Python 3 Script courtesy of Chat GPT is here:

import clr

Import Revit API

clr.AddReference(ā€œRevitAPIā€)
import Autodesk
from Autodesk.Revit.DB import *

Import Revit Services

clr.AddReference(ā€œRevitServicesā€)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference(ā€œRevitNodesā€)
import Revit
clr.ImportExtensions(Revit.Elements)

Unwrap input

input_elements = UnwrapElement(IN[0])
elements =

Ensure input is a list

if isinstance(input_elements, list):
elements = [e for e in input_elements if e.Category.Name == ā€œWallsā€]
elif input_elements.Category.Name == ā€œWallsā€:
elements = [input_elements]

Start transaction

doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.EnsureInTransaction(doc)

for wall in elements:
try:
WallUtils.DisallowWallJoinAtEnd(wall, 0)
WallUtils.DisallowWallJoinAtEnd(wall, 1)
except Exception:
pass # Optional: log or collect failed elements

End transaction

TransactionManager.Instance.TransactionTaskDone()

Output element IDs for verification

OUT = [wall.Id for wall in elements]

@markZHE83

you can paste your code

py
import clr

# Import Revit API
clr.AddReference(ā€œRevitAPIā€)
import Autodesk
from Autodesk.Revit.DB import *

# Import Revit Services
clr.AddReference(ā€œRevitServicesā€)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference(ā€œRevitNodesā€)
import Revit
clr.ImportExtensions(Revit.Elements)

# 1ļøāƒ£ Unwrap input
input_elements = UnwrapElement(IN[0])
elements = []

# 2ļøāƒ£ Ensure input is a list
if isinstance(input_elements, list):
    elements = [e for e in input_elements if e.Category.Name == ā€œWallsā€]
elif input_elements.Category.Name == ā€œWallsā€:
    elements = [input_elements]

# šŸ”“ Start transaction
doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.EnsureInTransaction(doc)

for wall in elements:
    try:
        WallUtils.DisallowWallJoinAtEnd(wall, 0)
        WallUtils.DisallowWallJoinAtEnd(wall, 1)
    except Exception:
        pass # Optional: log or collect failed elements

# šŸ”’ End transaction
TransactionManager.Instance.TransactionTaskDone()

# šŸŽÆ Output element IDs for verification
OUT = [wall.Id for wall in elements]