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
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):
Download the latest version @ dynamopackages.com (direct link).
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?
@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!
@DavidV - Look for Set Location in your library.
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!
giving an input error 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).
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
clr.AddReference(āRevitAPIā)
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference(āRevitServicesā)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference(āRevitNodesā)
import Revit
clr.ImportExtensions(Revit.Elements)
input_elements = UnwrapElement(IN[0])
elements =
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]
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
TransactionManager.Instance.TransactionTaskDone()
OUT = [wall.Id for wall in elements]
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]