Disallow join walls on 1 side

So I want to disallow join a bunch of walls but only on 1 side, more specifically, on the side where they are joined with a wall that is from a different type (so it could also possibly be both sides).
The join in blue needs to stay, the joins circled in green need to be disallowed.

I already know about the nodes to disallow join from the wombat package and the zhukovan package. But they disallow join the wall on both ends.

I don’t know anything about python so I have no idea how to even start and change the code to do what I need it to do…

I also don’t really know how to start with detecting which side of which wall needs to be disallowed join, or know if that’s even possible to determine…

Any help or suggestions are welcome…

The Revit API has the option to allow you to disallow join either end of a wall (0 for start and 1 for end). You would have to figure out if the end that you need to disjoin is the start or the end of the wall.

The code shown in the post you attached actually covers the options.

Autodesk.Revit.DB.WallUtils.DisallowWallJoinAtEnd(e, 0)
Autodesk.Revit.DB.WallUtils.DisallowWallJoinAtEnd(e, 1)

1 Like

Okay thanks.

How would you go about detecting the other wall on a specific side (1 or 0)?

You could get the intersecting point of the walls and compare that point to the start point and the end point of the wall that you want to run disallow join on. The points should either match or be very close to each other. You can use the Walls.DisallowJoinAtEnd node from the Zhukoven package. Both inputs are default to “true” (shown in first clip), so you will have to feed “false” into the input that you don’t want to disjoin.

image

Only the start end of the wall is disjoined in this example.

2 Likes

hello, here is some direction


Sincerely
christian.stan

4 Likes

@christian.stan
@staylor

Thanks for the help and suggestions, I’ve managed to produce this script so far:
Disallow join walls.dyn (54.2 KB)

It still doesn’t achieve what I want, but I think the issue is that I’m feeding multiple false and true values into the node depending on what element… Anyone know how to solve this? I’m assuming the python needs to be edited in order to accept multiple inputs but I have no idea how…

For example when I use the multiple inputs I get these results (same results without list levels)


But when I feed only 1 true and 1 false into the node, it actually disallows joins the starts and not the ends…


1 Like

Instead of using levels, set the lacing to longest. Also your list are not equal. You have (7) in two list and only (6) in another. Those will need to be equal in order for the true/false to work with the correct walls.

1 Like